براؤزر سے SAP GUI لانچ کرنا

میں نے یہ مضمون سب سے پہلے اپنے میں لکھا بلاگ, تاکہ بعد میں دوبارہ تلاش اور یاد نہ رہے، لیکن چونکہ بلاگ کو کوئی نہیں پڑھتا، اس لیے میں اس معلومات کو سب کے ساتھ شیئر کرنا چاہتا تھا، اگر کسی کو یہ مفید لگے۔

SAP R/3 سسٹمز میں پاس ورڈ ری سیٹ سروس کے خیال پر کام کرتے ہوئے، ایک سوال پیدا ہوا - براؤزر سے ضروری پیرامیٹرز کے ساتھ SAP GUI کو کیسے لانچ کیا جائے؟ چونکہ اس خیال نے ویب سروس کا استعمال کیا ہے، اس لیے پہلے SAP GUI کی جانب سے SOAP کی درخواست کا جواب دینا اور اسکرپٹ کے ساتھ ایک ویب صفحہ کے لنک کے ساتھ ایک ای میل بھیجنا جس میں پاس ورڈ کو ابتدائی طور پر دوبارہ ترتیب دینے کے لیے، اور پھر صارف کو ڈسپلے کرنا۔ کامیاب پاس ورڈ دوبارہ ترتیب دینے اور اس ابتدائی پاس ورڈ کو ظاہر کرنے کے بارے میں ایک پیغام، پھر میں چاہوں گا کہ اس صفحہ پر SAP GUI کو لانچ کرنے کے لیے ایک لنک بھی ہو۔ مزید برآں، اس لنک کو مطلوبہ سسٹم کو کھولنا چاہیے، اور ترجیحاً، لاگ ان اور پاس ورڈ کی فیلڈز کے ساتھ ایک ساتھ بھرے ہوئے ہیں: صارف کو صرف دو بار نتیجہ خیز پاس ورڈ بھرنا ہوگا۔

ہمارے مقصد کے لیے SAP Logon کو لانچ کرنا دلچسپ نہیں تھا، اور sapgui.exe کو چلاتے وقت کلائنٹ اور صارف کا نام بتانا ناممکن تھا، لیکن ایسا نظام شروع کرنا ممکن تھا جس کی وضاحت SAP Logon میں نہیں کی گئی تھی۔ دوسری طرف، صوابدیدی سرور کے پیرامیٹرز کے ساتھ SAP GUI کو لانچ کرنا خاص طور پر متعلقہ نہیں تھا: اگر ہم صارف کے پاس ورڈ کو دوبارہ ترتیب دینے کے مسئلے کو حل کر رہے ہیں، تو غالباً اس کے پاس پہلے سے ہی SAP Logon میں ضروری لائن موجود ہے، جس کی اسے ضرورت ہے، اور وہاں اس کے اپنے ساتھ گڑبڑ کرنے کی ضرورت نہیں ہے۔ لیکن مخصوص ضروریات کو SAP GUI شارٹ کٹ ٹیکنالوجی اور خود sapshcut.exe پروگرام نے پورا کیا، جس نے ایک مخصوص "شارٹ کٹ" کا استعمال کرتے ہوئے SAP GUI کو لانچ کرنا ممکن بنایا۔

مسئلہ کو آگے بڑھانا: ActiveX آبجیکٹ کا استعمال کرتے ہوئے براہ راست براؤزر سے sapshcut.exe لانچ کرنا:

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 شارٹ کٹ کا اپنا سب سیکشن ہے، اس لیے آپ یو آر ایل پروٹوکول سٹرنگ پیرامیٹر کو وہاں خالی قدر کے ساتھ شامل کر سکتے ہیں:

براؤزر سے SAP GUI لانچ کرنا

یہ پروٹوکول شروع ہوتا ہے۔ sapgui.exe پیرامیٹر کے ساتھ /شارٹ کٹ، جو بالکل وہی ہے جس کی ہمیں ضرورت ہے:

براؤزر سے SAP GUI لانچ کرنا

ٹھیک ہے، یا اگر ہم مکمل طور پر من مانی پروٹوکول بنانا چاہتے ہیں (مثال کے طور پر، sapshcut)، پھر آپ اسے درج ذیل reg فائل کا استعمال کرکے رجسٹر کرسکتے ہیں۔

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""

اب، اگر ہم کسی ویب پیج پر ایک لنک بناتے ہیں جس میں پروٹوکول کی نشاندہی ہوتی ہے۔ سیپگوئی۔شارٹ کٹ۔فائل اسی طرح:

<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. پیرامیٹرز کے بغیر استعمال کرنا: ہم اس قسم کے اپنے تمام سسٹمز کے لیے پروٹوکول کا ایک پورا گروپ بناتے ہیں۔ سڈ مینڈٹ، جیسے AAA200, بی بی بی 200۔ اور اسی طرح. اگر آپ کو صرف مطلوبہ سسٹم شروع کرنے کی ضرورت ہے، تو آپشن کافی قابل عمل ہے، لیکن ہمارے معاملے میں یہ مناسب نہیں ہے، کیونکہ کم از کم آپ صارف لاگ ان کو منتقل کرنا چاہیں گے، لیکن اس طرح نہیں کیا جا سکتا۔
  2. کال کرنے کے لیے ریپر پروگرام کا استعمال کرنا sapshcut.exe یا sapgui.exe. اس پروگرام کا نچوڑ آسان ہے - اسے براؤزر ویب پروٹوکول کے ذریعے اس میں منتقل ہونے والی تار کو لے کر اسے اس نمائندگی میں بدلنا چاہیے جو ونڈوز وصول کرتا ہے، یعنی تمام کریکٹر کوڈز کو دوبارہ کریکٹرز میں بدل دیتا ہے (شاید پیرامیٹرز کے مطابق سٹرنگ کو پارس بھی کرتا ہے) اور پہلے ہی SAP GUI کو گارنٹی شدہ درست کمانڈ کے ساتھ کال کرتا ہے۔ ہمارے معاملے میں، یہ مکمل طور پر موزوں نہیں ہے (اسی لیے میں نے اسے لکھا بھی نہیں)، کیونکہ ہمارے لیے تمام صارف پی سی پر پروٹوکول شامل کرنا کافی نہیں ہے (ڈومین کے اندر یہ سب ٹھیک ہے، حالانکہ یہ بھی بہتر ہے۔ اس مشق سے بچیں)، لیکن یہاں ہمیں پی سی پر پروگرام کو مزید رکھنے کی ضرورت ہوگی، اور یہ بھی یقینی بنائیں کہ جب سافٹ ویئر پی سی پر دوبارہ انسٹال ہوتا ہے تو یہ ختم نہ ہو۔

وہ. ہم اس اختیار کو بھی اپنے لیے غیر موزوں قرار دیتے ہوئے مسترد کر دیتے ہیں۔

اس مقام پر میں پہلے ہی سوچنے لگا تھا کہ مجھے براؤزر سے ضروری پیرامیٹرز کے ساتھ SAP GUI لانچ کرنے کے خیال کو الوداع کہنا پڑے گا، لیکن پھر مجھے خیال آیا کہ آپ SAP Logon میں شارٹ کٹ بنا سکتے ہیں اور اسے اپنے ڈیسک ٹاپ پر کاپی کریں۔ میں نے یہ طریقہ ایک بار استعمال کیا، لیکن اس سے پہلے میں نے شارٹ کٹ فائل کو خاص طور پر نہیں دیکھا۔ اور پتہ چلا کہ یہ شارٹ کٹ ایکسٹینشن کے ساتھ ایک باقاعدہ ٹیکسٹ فائل ہے۔ .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 ونڈوز صارف پروفائل میں) اور وہاں، اگرچہ وہ انکرپٹڈ ہیں، لیکن وہ زیادہ مضبوطی سے انکرپٹ نہیں ہیں اور اگر چاہیں تو ان کو ڈکرپٹ کیا جا سکتا ہے۔ لیکن آپ رجسٹری میں ایک پیرامیٹر کی قدر کو تبدیل کر کے اسے حل کر سکتے ہیں (پہلے سے طے شدہ قیمت ہے 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 لاگ ان کی فہرست میں ہے)۔

لیکن، یہ واضح ہے کہ کوئی بھی صرف فائلیں پہلے سے نہیں بنائے گا اور انہیں سائٹ پر اسٹور نہیں کرے گا - انہیں ضروری پیرامیٹرز کی بنیاد پر تیار کیا جانا چاہیے۔ مثال کے طور پر، آپ شارٹ کٹ بنانے کے لیے پی ایچ پی اسکرپٹ بنا سکتے ہیں (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 لانچ کرنا

اگر آپ صرف لاگ ان پاس کرتے ہیں تو لاگ ان فیلڈ بھر جائے گا اور پاس ورڈ کا فیلڈ خالی ہوگا۔ اگر ہم صارف کو لاگ ان اور پاس ورڈ دونوں دیتے ہیں، لیکن پی سی پر صارف کے پاس رجسٹری میں [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] سیکشن میں EnablePassword کلید ہے جو 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 لاگ ان کو ترتیب دینے کی ضرورت کے بغیر، مکمل کنکشن سٹرنگ کے ساتھ SAP GUI کو براہ راست لانچ کریں:

<?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

نیا تبصرہ شامل کریں