د براوزر څخه د SAP GUI پیل کول

ما دا مقاله لومړی په خپل لیک کې لیکلې وه بلاګد دې لپاره چې بیا وروسته لټون او یادونه ونه شي، مګر ځکه چې هیڅوک بلاګ نه لولي، ما غوښتل دا معلومات د هرچا سره شریک کړم، که چیرې یو څوک ګټور ومومي.

پداسې حال کې چې د SAP R/3 سیسټمونو کې د پټنوم ری سیٹ خدمت مفکورې باندې کار کول ، یوه پوښتنه راپورته شوه - څنګه د براوزر څخه د اړین پیرامیټونو سره SAP GUI پیل کړئ؟ څرنګه چې دا مفکوره د ویب خدماتو کارول معنی لري، لومړی د SAP GUI څخه د SOAP غوښتنې ته ځواب ووایی او د ویب پاڼې لینک سره یو بریښنالیک واستول د سکریپټ سره د پاسورډ بیا تنظیمولو لپاره، او بیا کاروونکي ته ښودل. د بریالي پاسورډ بیا تنظیم کولو او د دې خورا لومړني پټنوم ښودلو په اړه پیغام ، بیا زه غواړم دا پا pageه هم د SAP GUI لانچ کولو لپاره لینک ولري. سربیره پردې ، دا لینک باید مطلوب سیسټم خلاص کړي ، او په غوره توګه د ننوتلو او پټنوم ساحو سره په یوځل ډک شوي: کارونکي باید یوازې دوه ځله تولیدي پاسورډ ډک کړي.

د SAP لوګون پیل کول زموږ د هدف لپاره په زړه پوري نه و ، او کله چې sapgui.exe چلول د پیرودونکي او کارونکي نوم مشخص کول ناممکن وو ، مګر دا ممکنه وه چې یو سیسټم پیل کړئ چې په SAP لوګون کې تعریف شوی نه و. له بلې خوا ، د خپل سري سرور پیرامیټونو سره د SAP GUI پیل کول په ځانګړي ډول اړوند ندي: که موږ د کارونکي پټنوم له سره تنظیم کولو ستونزه حل کړو ، نو احتمال لري چې هغه دمخه په SAP لاګون کې اړین کرښه لري ، د هغه ترتیباتو سره چې ورته اړتیا لري ، او هلته. د خپل ځان سره ګډوډ کولو ته اړتیا نشته. مګر ټاکل شوې اړتیاوې د 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 شارټ کټ پدې برخه کې خپله فرعي برخه لري، تاسو کولی شئ هلته د یو خالی ارزښت سره د URL پروتوکول سټینګ پیرامیټر اضافه کړئ:

د براوزر څخه د 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""

اوس، که موږ په ویب پاڼه کې یو لینک جوړ کړو چې پروتوکول په ګوته کوي 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، لکه د AAA200, BBB200 او همداسی پسی. که تاسو یوازې د غوښتل شوي سیسټم پیل کولو ته اړتیا لرئ، نو بیا دا اختیار خورا د کار وړ دی، مګر زموږ په قضیه کې دا مناسبه نه ده، ځکه چې لږترلږه تاسو غواړئ د کاروونکي ننوتل انتقال کړئ، مګر دا پدې توګه نشي ترسره کیدی.
  2. د زنګ وهلو لپاره د ریپر برنامه کارول sapshcut.exe او یا sapgui.exe. د دې برنامه جوهر ساده دی - دا باید هغه تار واخلي چې براوزر دې ته د ویب پروتوکول له لارې لیږدوي او په نمایندګۍ بدلوي چې وینډوز ترلاسه کوي ، د بیلګې په توګه. ټول کرکټر کوډونه بیرته په حروفونو بدلوي (شاید حتی د پیرامیټونو مطابق تار پارس کړي) او دمخه د تضمین شوي سم کمانډ سره SAP GUI ته زنګ وهي. زموږ په قضیه کې ، دا هم په بشپړ ډول مناسب نه دی (له همدې امله ما دا هم نه دی لیکلی) ، ځکه چې دا زموږ لپاره کافي ندي چې پروتوکول په ټولو کاروونکو کمپیوټرونو کې اضافه کړو (په ډومین کې دا لاهم سم دی ، که څه هم دا هم غوره دی. د دې عمل څخه مخنیوی وکړئ)، مګر دلته به موږ په کمپیوټر کې نور پروګرام ته اړتیا ولرو، او دا هم په دوامداره توګه ډاډ ترلاسه کړئ چې دا نه ځي کله چې سافټویر په کمپیوټر کې بیا نصب شي.

هغوی. موږ دا اختیار هم ردوو ځکه چې زموږ لپاره مناسب نه دی.

پدې مرحله کې ما دمخه فکر کولو پیل کړی و چې زه باید د براوزر څخه د اړین پیرامیټونو سره د SAP GUI لانچ کولو نظر ته الوداع ووایم ، مګر بیا ما ته دا نظر راغی چې تاسو کولی شئ په SAP لاګون کې شارټ کټ جوړ کړئ او دا خپل ډیسټاپ ته کاپي کړئ. ما دا طریقه یو ځل کارولې، مګر مخکې له دې چې ما په ځانګړې توګه د شارټ کټ فایل ته ونه کتل. او دا معلومه شوه چې دا شارټ کټ د تمدید سره منظم متن فایل دی .sap. او که تاسو دا په وینډوز کې پرمخ وړئ، SAP GUI به د پیرامیټونو سره پیل شي چې پدې فایل کې مشخص شوي. "بنګو!"

د دې دوتنې بڼه تقریبا لاندې ده (د پیل په وخت کې یو معامله هم شتون لري، مګر ما دا پریښوده):

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

داسې ښکاري چې هرڅه چې ورته اړتیا وي: د سیسټم پیژندونکی، یو مراجع، یو کارن نوم او حتی پټنوم. او حتی اضافي پیرامیټونه: نوم - د کړکۍ سرلیک، GuiSize - د چلولو کړکۍ اندازه (بشپړ سکرین یا نه) او بیا کارول - ایا دا اړینه ده چې نوې کړکۍ پرانیزئ یا د ورته سیسټم سره دمخه خلاص شوی وکاروئ. مګر یو ناورین سمدلاسه راڅرګند شو - دا معلومه شوه چې په 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 توسیع او مطلوب ب formatې سره فایل ته لینک باندې کلیک وکړئ - او دا به وړاندیز وکړي چې دا د SAP GUI شارټ کټ په څیر د فایل په توګه خلاص کړي (په طبیعي ډول په کمپیوټر کې د SAP GUI نصب سره) او د ټاکل شوي پیرامیټونو سره به د SAP GUI کړکۍ پرانیزي (که د SID او پیرودونکي جوړه په دې کمپیوټر کې د 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] برخه 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

Add a comment