برائوزر کان SAP GUI لانچ ڪرڻ

مون پهريون ڀيرو هن مضمون ۾ لکيو بلاگ, ته جيئن ڳولهي نه سگهي ۽ بعد ۾ ٻيهر ياد رهي، پر جيئن ته ڪنهن به بلاگ کي نه پڙهيو آهي، ان ڪري مان هن معلومات کي سڀني سان شيئر ڪرڻ چاهيان ٿو، جيڪڏهن ڪنهن کي اهو مفيد معلوم ٿئي.

SAP R/3 سسٽم ۾ پاسورڊ ري سيٽ سروس جي خيال تي ڪم ڪرڻ دوران، هڪ سوال پيدا ٿيو - ڪيئن شروع ڪجي SAP GUI کي برائوزر مان ضروري پيٽرولن سان؟ جيئن ته هن خيال کي ويب سروس جي استعمال جو مطلب آهي، پهريون ڀيرو SAP GUI کان SOAP جي درخواست جو جواب ڏيڻ ۽ هڪ خط موڪليو ويب پيج جي لنڪ سان هڪ اسڪرپٽ سان گڏ پاسورڊ ري سيٽ ڪرڻ لاءِ شروعاتي هڪ ڏانهن، ۽ پوءِ صارف کي ڏيکاريندي. ڪامياب پاس ورڊ ري سيٽ ڪرڻ بابت هڪ پيغام ۽ هن تمام ابتدائي پاسورڊ کي ظاهر ڪندي، پوءِ مان چاهيان ٿو ته هي صفحو پڻ SAP GUI لانچ ڪرڻ جي لنڪ هجي. ان کان علاوه، هي لنڪ گهربل سسٽم کي کولڻ گهرجي، ۽، ترجيح سان، لاگ ان ۽ پاسورڊ فيلڊز سان گڏ هڪ ڀيرو ڀريو: صارف کي صرف ٻه ڀيرا پيداوار پاسورڊ ڀرڻو پوندو.

SAP Logon کي لانچ ڪرڻ اسان جي مقصد لاءِ دلچسپ نه هو، ۽ جڏهن sapgui.exe هلندي هئي ته ڪلائنٽ ۽ يوزر جو نالو بيان ڪرڻ ناممڪن هو، پر اهو ممڪن هو ته اهڙو سسٽم لانچ ڪيو وڃي جيڪو SAP Logon ۾ بيان نه ڪيو ويو آهي. ٻئي طرف، صوابديدي سرور جي پيٽرولن سان SAP GUI شروع ڪرڻ خاص طور تي لاڳاپيل نه هو: جيڪڏهن اسان صارف جي پاسورڊ کي ري سيٽ ڪرڻ جو مسئلو حل ڪري رهيا آهيون، ته گهڻو ڪري هن وٽ اڳ ۾ ئي SAP لاگ ان ۾ ضروري لائن آهي، سيٽنگن سان هن کي ضرورت آهي، ۽ اتي. هن کي پنهنجي پاڻ سان گڏ ڪرڻ جي ضرورت ناهي. پر SAP GUI شارٽ ڪٽ ٽيڪنالاجي ۽ خود sapshcut.exe پروگرام طرفان مخصوص گهربل ضرورتون پوريون ڪيون ويون، جنهن اهو ممڪن ڪيو ته SAP GUI کي هڪ مخصوص ”شارٽ ڪٽ“ استعمال ڪندي لانچ ڪيو وڃي.

مسئلو حل ڪرڻ سر تي: شروع ڪرڻ sapshcut.exe سڌو برائوزر کان ActiveX اعتراض استعمال ڪندي:

function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}

حل خراب آهي: پهريون، اهو صرف انٽرنيٽ ايڪسپلورر ۾ ڪم ڪري ٿو، ٻيو، ان کي برائوزر ۾ مناسب سيڪيورٽي سيٽنگن جي ضرورت آهي، جيڪا ڪنهن تنظيم ۾ ڊومين سطح تي ممنوع ٿي سگهي ٿي، ۽ جيتوڻيڪ اجازت ڏني وئي، برائوزر هڪ ونڊو ڏيکاري ٿو خوفناڪ سان. استعمال ڪندڙ کي ڊيڄاريندڙ:

برائوزر کان SAP GUI لانچ ڪرڻ

مون انٽرنيٽ تي حل #2 مليو: پنهنجو ويب پروٽوڪول ٺاهڻ. اسان کي ايپليڪيشن لانچ ڪرڻ جي اجازت ڏئي ٿي جيڪا اسان کي ضرورت آهي هڪ لنڪ استعمال ڪندي پروٽوڪول جو اشارو ڪندي، جيڪو اسان پاڻ ونڊوز ۾ رجسٽري ۾ رجسٽري ۾ HKEY_CLASSES_ROOT سيڪشن ۾. جيئن ته SAP GUI شارٽ ڪٽ هن سيڪشن ۾ پنهنجو ذيلي حصو آهي، توهان URL پروٽوڪول اسٽرنگ پيٽرولر شامل ڪري سگهو ٿا اتي هڪ خالي قيمت سان:

برائوزر کان SAP GUI لانچ ڪرڻ

هي پروٽوڪول شروع ٿئي ٿو sapgui.exe پيٽرولر سان / مختصر، جيڪو اسان کي گهربل آهي:

برائوزر کان SAP GUI لانچ ڪرڻ

خير، يا جيڪڏهن اسان چاهيون ٿا ته مڪمل طور تي خودمختيار پروٽوڪول (مثال طور، sapshcut)، پوء توھان ھيٺ ڏنل ريگ فائل استعمال ڪندي ان کي رجسٽر ڪري سگھو ٿا:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTsapshcut]
@="sapshcut Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOTsapshcutDefaultIcon]
@="sapshcut.exe"
[HKEY_CLASSES_ROOTsapshcutshell]
[HKEY_CLASSES_ROOTsapshcutshellopen]
[HKEY_CLASSES_ROOTsapshcutshellopencommand]
@="sapshcut.exe "%1""

هاڻي، جيڪڏهن اسان هڪ ويب پيج تي هڪ لنڪ ٺاهيندا آهيون پروٽوڪول کي اشارو ڪندي Sapgui.Shortcut.File ساڳئي طرح:

<a href='Sapgui.Shortcut.File: -system=SID -client=200'>SID200</a>

اسان کي هن طرح هڪ ونڊو ڏسڻ گهرجي:

برائوزر کان SAP GUI لانچ ڪرڻ

۽ هر شي تمام سٺو لڳي ٿو، پر جڏهن توهان "اجازت ڏيو" بٽڻ تي ڪلڪ ڪندا آهيون اسان ڏسون ٿا:

برائوزر کان SAP GUI لانچ ڪرڻ

اڙي، برائوزر اسپيس بار کي %20 ۾ تبديل ڪيو. خير، ٻيا اکر به انڪوڊ ڪيا ويندا پنھنجي عددي ڪوڊ ۾ سيڪڙو علامت سان. ۽ سڀ کان وڌيڪ ناپسنديده شيء اها آهي ته هتي برائوزر جي سطح تي ڪجھ به نه ٿو ڪري سگهجي (هتي هر شي معيار جي مطابق ڪيو ويندو آهي) - برائوزر اهڙن ڪردارن کي پسند نٿو ڪري، ۽ ونڊوز ڪمان مترجم اهڙي انڪوڊ ٿيل قدرن سان ڪم نٿو ڪري. ۽ هڪ وڌيڪ مائنس - سڄو اسٽرنگ هڪ پيٽرولر جي طور تي منظور ڪيو ويو آهي، جنهن ۾ پروٽوڪول جو نالو ۽ جيتوڻيڪ ڪولن (sapgui.shortcut.file:). ان کان سواء، جيتوڻيڪ ساڳيو sapshcut.exe هر شي کي رد ڪري سگھي ٿو جيڪو ان لاءِ پيٽرولر نه آهي (علامت “-” سان شروع ٿئي ٿو، پوءِ نالو، “=” ۽ قدر)، يعني. هڪ قطار وانگر "sapgui.shortcut.file: -system=SID"اهو اڃا تائين ڪم ڪندو، پوء بغير بغير"sapgui.shortcut.file:-system=SID"هاڻي ڪم نٿو ڪري.

اهو ظاهر ٿئي ٿو ته، اصول ۾، URI پروٽوڪول استعمال ڪرڻ لاء ٻه اختيار آهن:

  1. پيرا ميٽرن کان سواءِ استعمال ڪندي: اسان پنهنجي قسم جي سڀني سسٽم لاءِ پروٽوڪول جو پورو گروپ ٺاهيندا آهيون SIDMANDT، وانگر AAA 200, بي بي بي 200 ۽ ايئن. جيڪڏهن توهان کي صرف گهربل سسٽم شروع ڪرڻ جي ضرورت آهي، پوء اهو اختيار ڪافي قابل عمل آهي، پر اسان جي صورت ۾ اهو مناسب ناهي، ڇو ته گهٽ ۾ گهٽ توهان صارف لاگ ان کي منتقل ڪرڻ چاهيندا، پر اهو هن طريقي سان نه ٿو ڪري سگهجي.
  2. ڪال ڪرڻ لاءِ ريپر پروگرام استعمال ڪندي sapshcut.exe يا sapgui.exe. هن پروگرام جو خلاصو سادو آهي - اهو لازمي آهي ته اهو اسٽرنگ وٺڻ گهرجي جيڪو برائوزر ان ڏانهن ويب پروٽوڪول ذريعي منتقل ڪري ٿو ۽ ان کي نمائندگي ۾ تبديل ڪري ٿو جيڪو ونڊوز وصول ڪري ٿو، يعني. سڀني ڪردارن جي ڪوڊ کي واپس ڪردارن ۾ تبديل ڪري ٿو (شايد پيرا ميٽرز جي مطابق اسٽرنگ کي پارس ڪري ٿو) ۽ اڳ ۾ ئي SAP GUI کي گارنٽي ٿيل صحيح حڪم سان سڏي ٿو. اسان جي حالت ۾، اهو پڻ مڪمل طور تي مناسب ناهي (ان ڪري مون اهو به نه لکيو آهي)، ڇاڪاڻ ته اهو اسان لاء ڪافي ناهي ته سڀني صارفن جي پي سي تي پروٽوڪول شامل ڪرڻ لاء (هڪ ڊومين جي اندر اهو اڃا تائين صحيح آهي، جيتوڻيڪ اهو پڻ بهتر آهي. ھن عمل کان پاسو ڪريو)، پر ھتي اسان کي وڌيڪ ضرورت پوندي پروگرام کي پي سي تي رکڻ جي، ۽ ان کي پڻ يقيني بڻايو وڃي ته اھو ختم نه ٿئي جڏھن سافٽ ويئر پي سي تي وري انسٽال ڪيو وڃي.

اهي. اسان هن اختيار کي پڻ رد ڪريون ٿا جيئن اسان لاءِ نا مناسب آهي.

هن نقطي تي مون اڳ ۾ ئي سوچڻ شروع ڪيو هو ته مون کي برائوزر کان ضروري پيٽرولر سان SAP GUI لانچ ڪرڻ جي خيال کي الوداع چوڻو پوندو، پر پوء مون کي خيال آيو ته توهان SAP لاگ ان ۾ هڪ شارٽ ڪٽ ڪري سگهو ٿا ۽ ان کي پنهنجي ڊيسڪ ٽاپ تي نقل ڪريو. مون اهو طريقو هڪ ڀيرو استعمال ڪيو، پر ان کان اڳ مون خاص طور تي شارٽ کٽ فائل کي نه ڏٺو. ۽ اهو ظاهر ٿيو ته هي شارٽ کٽ هڪ باقاعده ٽيڪسٽ فائل آهي ايڪسٽينشن سان .سپ. ۽ جيڪڏهن توهان ان کي ونڊوز تي هلائيندا آهيو، SAP GUI هن فائل ۾ بيان ڪيل پيٽرولن سان لانچ ڪندو. "بنگو!"

هن فائل جو فارميٽ لڳ ڀڳ هيٺ ڏنل آهي (شروع ٿيڻ تي هڪ ٽرانزيڪشن پڻ ٿي سگهي ٿي، پر مون ان کي ختم ڪيو):

[System]
Name=SID
Client=200
[User]
Name=
Language=RU
Password=
[Function]
Title=
[Configuration]
GuiSize=Maximized
[Options]
Reuse=0

اهو لڳي ٿو ته هر شيء جيڪا گهربل آهي: هڪ سسٽم سڃاڻپ ڪندڙ، هڪ صارف، صارف جو نالو ۽ اڃا به پاسورڊ. ۽ اڃا به اضافي پيراگراف: عنوان - ونڊو عنوان، گيسائيز - هلندڙ ونڊو جي سائيز (مڪمل اسڪرين يا نه) ۽ ورجائي ٿو - ڇا اهو ضروري آهي ته هڪ نئين ونڊو کولڻ يا ساڳئي سسٽم سان اڳ ۾ ئي کليل ونڊو استعمال ڪريو. پر هڪ nuance فوري طور تي ظاهر ٿيو - اهو ظاهر ٿيو ته SAP لاگ ان ۾ پاسورڊ سيٽ نه ٿي سگهيو، لائن بند ٿي وئي. اهو ظاهر ٿيو ته اهو سيڪيورٽي سببن لاء ڪيو ويو آهي: اهو SAP لاگ ان ۾ ٺاهيل سڀني شارٽ ڪٽ کي فائل ۾ محفوظ ڪري ٿو sapshortcut.ini (ويجھو saplogon.ini Windows يوزر پروفائل ۾) ۽ اتي، جيتوڻيڪ اھي انڪريپٽ ٿيل آھن، اھي ڏاڍا مضبوط طور تي انڪريپٽ ٿيل ناھن، ۽ جيڪڏھن چاھيو، انھن کي ڊڪرائي سگھجي ٿو. پر توهان رجسٽري ۾ هڪ پيٽرولر جي قيمت کي تبديل ڪندي هن کي حل ڪري سگهو ٿا (ڊفالٽ قيمت آهي 0):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"

هي SAP لاگ ان ۾ شارٽ ڪٽ ٺاهڻ واري فارم تي داخلا لاءِ پاسورڊ فيلڊ کي ان لاڪ ڪري ٿو:

برائوزر کان SAP GUI لانچ ڪرڻ

۽ جڏھن توھان ھن فيلڊ ۾ پاسورڊ داخل ڪريو ٿا، اھو لاڳاپيل لڪير ۾ رکيو ويندو
sapshortcut.ini، پر جڏهن توهان هڪ شارٽ ڪٽ کي ڊيسڪ ٽاپ ڏانهن ڇڪيو ٿا، اهو اتي ظاهر نٿو ٿئي - پر توهان ان کي اتي دستي طور شامل ڪري سگهو ٿا. پاسورڊ انڪريپٽ ٿيل آهي، 111111 لاءِ اهو هن ريت هوندو: PW_49B02219D1F6، 222222 لاءِ - PW_4AB3211AD2F5. پر اسان ان حقيقت ۾ وڌيڪ دلچسپي رکون ٿا ته هي پاسورڊ هڪ طريقي سان انڪريپٽ ٿيل آهي، مخصوص پي سي کان آزاد، ۽ جيڪڏهن اسان پاسورڊ ري سيٽ ڪريون ٿا شروعاتي هڪ تي، ته پوءِ اسان هن فيلڊ ۾ هڪ اڳي ڄاڻايل قدر استعمال ڪري سگهون ٿا. خير، جيڪڏهن اسان بي ترتيب ٺاهيل پاسورڊ استعمال ڪرڻ چاهيون ٿا، اسان کي هن سائفر جي الگورتھم کي سمجهڻو پوندو. پر ڏنل مثالن تي غور ڪندي، اهو ڪرڻ ڏکيو نه ٿيندو. رستي جي ذريعي، SAP GUI 7.40 ۾ هي فيلڊ مڪمل طور تي فارم مان غائب ٿي ويو، پر اهو صحيح طور تي هڪ فائل کي قبول ڪري ٿو مڪمل پاسورڊ سان.

اهو آهي، اهو ظاهر ٿئي ٿو ته برائوزر ۾ توهان کي صرف فائل جي لنڪ تي ڪلڪ ڪرڻ جي ضرورت آهي .sap ايڪسٽينشن ۽ گهربل فارميٽ سان - ۽ اهو ان کي فائل طور کولڻ جي آڇ ڪندو SAP GUI شارٽ ڪٽ (قدرتي طور تي هڪ PC تي. SAP GUI سان انسٽال ٿيل) ۽ مخصوص پيٽرولر سان SAP GUI ونڊو کوليندو (جيڪڏهن SID ۽ ڪلائنٽ جوڙو هن PC تي SAP لاگ ان لسٽ ۾ آهن).

پر، اهو واضح آهي ته ڪو به صرف اڳ ۾ فائلون ٺاهي ۽ انهن کي سائيٽ تي ذخيرو نه ڪندو - انهن کي لازمي معيارن جي بنياد تي پيدا ڪيو وڃي. مثال طور، توهان ٺاهي سگهو ٿا PHP اسڪرپٽ ٺاهڻ لاءِ شارٽ ڪٽس (sapshcut.php):

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$Size = $queries['Size'];
$SID = $queries['SID'];
$Client = $queries['Client'];
if($Client == '') { $Client=200; };
$Lang = $queries['Language'];
if($Lang=='') { $Lang = 'RU'; };
$User = $queries['Username'];
if($User<>'') { $Password = $queries['Password']; };
$filename = $SID.$Client.'.sap';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/sap');
echo "[System]rn";
echo "Name=".$SID."rn";
echo "Client=".$Client."rn";
echo "[User]rn";
echo "Name=".$Username."rn";
echo "Language=".$Lang."rn";
if($Password<>'') echo "Password=".$Password."rn";
echo "[Function]rn";
if($Title<>'') {echo "Title=".$Title."rn";} else {echo "Title=Вход в системуrn";};
echo "[Configuration]rn";
if($Size=='max') { echo "GuiSize=Maximizedrn"; };
echo "[Options]rn";
echo "Reuse=0rn";
?>

جيڪڏهن توهان صارف نالو ۽ پاسورڊ جي وضاحت نه ڪندا آهيو، توهان هيٺ ڏنل ونڊو حاصل ڪندا لاگ ان ۽ پاسورڊ لاء پڇڻ:

برائوزر کان SAP GUI لانچ ڪرڻ

جيڪڏهن توهان صرف لاگ ان پاس ڪريو ٿا، لاگ ان فيلڊ ڀريو ويندو ۽ پاسورڊ فيلڊ خالي هوندو. جيڪڏهن اسان صارف کي لاگ ان ۽ پاسورڊ ٻئي ڏيون ٿا، پر پي سي تي صارف کي رجسٽري ۾ EnablePassword ڪيئي آهي [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] سيڪشن 0 تي سيٽ ڪيو ويو آهي، پوء اسان کي ساڳي شيء ملندي. ۽ صرف ان صورت ۾ جيڪڏهن هي چيڪ 1 تي سيٽ ڪيو ويو آهي ۽ اسان ٻنهي جو نالو ۽ شروعاتي پاسورڊ پاس ڪريون ٿا، سسٽم فوري طور تي توهان کي ٻه ڀيرا نئون مستقل پاسورڊ داخل ڪرڻ جو اشارو ڏيندو. اھو اھو آھي جيڪو اسان کي حاصل ڪرڻ جي ضرورت آھي.

نتيجي طور، اسان وٽ مٿي ڏنل سڀني جي مثال جي طور تي غور ڪيل اختيارن جو ھيٺيون سيٽ آھي.

<html>
<head>
<script>
function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}
</script>
</head>
<body>
<a href='' onclick="javascript:openSAPGui('SID', '200', 'test', '');"/>Example 1: Execute sapshcut.exe (ActiveX)<br>
<a href='Sapgui.Shortcut.File: -system=SID -client=200'>Example 2: Open sapshcut.exe (URI)</a><br>
<a href='sapshcut.php?SID=SID&Client=200&User=test'>Example 3: Open file .sap (SAP GUI Shortcut)</a><br>
</body>
</html>

آخري اختيار مون کي مناسب آهي. پر SAP شارٽ ڪٽ ٺاهڻ جي بدران، توهان پڻ استعمال ڪري سگهو ٿا، مثال طور، CMD فائلون پيدا ڪرڻ، جيڪي، جڏهن برائوزر کان کوليا ويندا، توهان لاء SAP GUI ونڊو پڻ کوليندا. هيٺ هڪ مثال آهي (sapguicmd.php) سڌو سنئون شروع ڪريو SAP GUI کي مڪمل ڪنيڪشن اسٽرنگ سان، بغير SAP لاگ ان کي ترتيب ڏيڻ جي ضرورت کان سواء:

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$ROUTER = $queries['ROUTER'];
$ROUTERPORT = $queries['ROUTERPORT'];
$HOST = $queries['HOST'];
$PORT = $queries['PORT'];
$MESS = $queries['MESS'];
$LG = $queries['LG'];
$filename = 'SAPGUI_';
if($MESS<>'') $filename = $filename.$MESS;
if($HOST<>'') $filename = $filename.$HOST;
if($PORT<>'') $filename = $filename.'_'.$PORT;
$filename = $filename.'.cmd';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/cmd');
echo "@echo offrn";
echo "chcp 1251rn";
echo "echo Вход в ".$Title."rn";
echo "set SAP_CODEPAGE=1504rn";
echo 'if exist "%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe'."rn";
echo 'if exist "%ProgramFiles%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles%SAPFrontEndSapGuisapgui.exe'."rn";
echo "set logon=";
if($ROUTER<>'') echo "/H/".$ROUTER;
if($ROUTERPORT<>'') echo "/S/".$ROUTERPORT;
if($MESS<>'') echo "/M/".$MESS;
if($HOST<>'') echo "/H/".$HOST;
if($PORT<>'') echo "/S/".$PORT;
if($LG<>'') echo "/G/".$LG;
echo "rn";
echo '"%gui%" %logon%'."rn";
?>

جو ذريعو: www.habr.com

تبصرو شامل ڪريو