æåã«ãã®èšäºãæžããã®ã¯ã
SAP R/3 ã·ã¹ãã ã§ã®ãã¹ã¯ãŒã ãªã»ãã ãµãŒãã¹ã®ã¢ã€ãã¢ã«åãçµãã§ãããšãã«ããã©ãŠã¶ããå¿ èŠãªãã©ã¡ãŒã¿ãæå®ã㊠SAP GUI ãèµ·åããã«ã¯ã©ãããã°ããããšããçåãçããŸããã ãã®ã¢ã€ãã¢ã«ã¯ Web ãµãŒãã¹ã®äœ¿çšãå«ãŸããŠãããããæåã« SAP GUI ããã® SOAP ãªã¯ãšã¹ãã«å¿çãããã¹ã¯ãŒããåæãã¹ã¯ãŒãã«ãªã»ããããããã®ã¹ã¯ãªãããå«ã Web ããŒãžãžã®ãªã³ã¯ãå«ãã¬ã¿ãŒãéä¿¡ãããã®åŸãŠãŒã¶ãŒã«è¡šç€ºããŸãããã¹ã¯ãŒãã®ãªã»ãããæåããããšã«é¢ããã¡ãã»ãŒãžãšããã®åæãã¹ã¯ãŒãã衚瀺ããããããã®ããŒãžã« SAP GUI ãèµ·åããããã®ãªã³ã¯ãå«ããããšèããŠããŸãã ããã«ããã®ãªã³ã¯ã¯ç®çã®ã·ã¹ãã ãéãå¿ èŠããããã§ããã°ãã°ã€ã³ ãã£ãŒã«ããšãã¹ã¯ãŒã ãã£ãŒã«ããäžåºŠã«å ¥åããå¿ èŠããããŸãããŠãŒã¶ãŒã¯æ¬çšŒåçšãã¹ã¯ãŒãã XNUMX åå ¥åããã ãã§æžã¿ãŸãã
SAP Logon ã®èµ·åã¯ãç§ãã¡ã®ç®çã«ãšã£ãŠèå³æ·±ããã®ã§ã¯ãããŸããã§ãããsapgui.exe ãå®è¡ãããšããã¯ã©ã€ã¢ã³ããšãŠãŒã¶ãŒåãæå®ããããšã¯ã§ããŸããã§ããããSAP Logon ã§å®çŸ©ãããŠããªãã·ã¹ãã ãèµ·åããããšã¯å¯èœã§ããã äžæ¹ãä»»æã®ãµãŒã㌠ãã©ã¡ãŒã¿ãæå®ã㊠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');
}
ãã®è§£æ±ºçã¯ãŸããã§ãã第äžã«ããã㯠Internet Explorer ã§ã®ã¿æ©èœããŸãã第äºã«ããã©ãŠã¶ã«é©åãªã»ãã¥ãªãã£èšå®ãå¿ èŠã§ããçµç¹å ã§ã¯ããããã¡ã€ã³ ã¬ãã«ã§çŠæ¢ãããŠããå¯èœæ§ããããããšãèš±å¯ãããŠããŠãããã©ãŠã¶ã«ã¯æããããŠã£ã³ããŠã衚瀺ãããŸãããŠãŒã¶ãŒãžã®èŠå:
ã€ã³ã¿ãŒãããäžã§è§£æ±ºç #2 ãèŠã€ããŸããã
ãã®ãããã³ã«ãéå§ãããŸã sapgui.exe ãã©ã¡ãŒã¿ä»ã /ã·ã§ãŒãã«ãããããã¯ãŸãã«ç§ãã¡ãå¿
èŠãšãããã®ã§ã:
ããã§ããããŸãã¯å®å
šã«ä»»æã®ãããã³ã«ãäœæãããå Žå (ããšãã°ã ãµãã·ã¥ã«ãã)ã次㮠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""
ããã§ãWeb ããŒãžã«ãããã³ã«ã瀺ããªã³ã¯ãäœæãããšã Sapgui.ã·ã§ãŒãã«ãã.ãã¡ã€ã« 䌌ããããªæ¹æ³ã§ïŒ
<a href='Sapgui.Shortcut.File: -system=SID -client=200'>SID200</a>
次ã®ãããªãŠã£ã³ããŠã衚瀺ãããã¯ãã§ãã
ãã¹ãŠãããŸããã£ãŠããããã«èŠããŸããã[èš±å¯] ãã¿ã³ãã¯ãªãã¯ãããšæ¬¡ã®ããšã衚瀺ãããŸãã
ãã£ãšããã©ãŠã¶ã«ãã£ãŠã¹ããŒã¹ããŒã %20 ã«å€ãããŸããã ä»ã®æåããããŒã»ã³ãèšå·ã䜿çšããŠç¬èªã®æ°å€ã³ãŒãã«ãšã³ã³ãŒããããŸãã ãããŠæãäžå¿«ãªããšã¯ãããã§ã¯ãã©ãŠã¶ã¬ãã«ã§ã¯äœãã§ããªãããšã§ãïŒããã§ã®ãã¹ãŠã¯æšæºã«åŸã£ãŠè¡ãããŸãïŒããã©ãŠã¶ã¯ãã®ãããªæåã奜ãŸãªããããWindowsã³ãã³ãã€ã³ã¿ãŒããªã¿ã¯ãã®ãããªãšã³ã³ãŒããããå€ãåŠçããŸããã ãããŠãã XNUMX ã€ã®ãã€ãã¹ç¹ã¯ããããã³ã«åãã³ãã³ () ãå«ãæååå
šäœããã©ã¡ãŒã¿ãšããŠæž¡ãããããšã§ããsapgui.shortcut.ãã¡ã€ã«:ïŒã ãŸããåãã§ã¯ãããŸããã sapshcut.exe ãã©ã¡ãŒã¿ãŒã§ã¯ãªããã®ã¯ãã¹ãŠç Žæ£ã§ããŸã (èšå·ã-ãã§å§ãŸããååãã=ããå€ãç¶ããŸã)ãã€ãŸãã ããã®ãããªè¡sapgui.shortcut.file: -system=SIDãã¹ããŒã¹ããªããŠãæ©èœããŸããsapgui.shortcut.file:-system=SIDãããæ©èœããŸããã
ååãšããŠãURI ãããã³ã«ã®äœ¿çšã«ã¯ XNUMX ã€ã®ãªãã·ã§ã³ãããããšãããããŸããã
- ãã©ã¡ãŒã¿ãŒãªãã§äœ¿çšãã: 次ã®ã¿ã€ãã®ãã¹ãŠã®ã·ã¹ãã çšã«å€§éã®ãããã³ã«ãäœæããŸãã ã·ããã³ãã¿ã€ã AAA200, BBB200 çã ã ç®çã®ã·ã¹ãã ãèµ·åããã ãã®å Žåããã®ãªãã·ã§ã³ã¯éåžžã«æå¹ã§ãããå°ãªããšããŠãŒã¶ãŒãã°ã€ã³ã転éãããã®ã§ããããã®æ¹æ³ã§ã¯ãããè¡ãããšãã§ããªãããããã®ãªãã·ã§ã³ã¯é©åã§ã¯ãããŸããã
- ã©ãããŒããã°ã©ã ã䜿çšããŠåŒã³åºã sapshcut.exe ãŸã㯠sapgui.exeã ãã®ããã°ã©ã ã®æ¬è³ªã¯åçŽã§ãããã©ãŠã¶ã Web ãããã³ã«çµç±ã§éä¿¡ããæååãåãåããããã Windows ãåãåãè¡šçŸã«å€æããå¿ èŠããããŸãã ãã¹ãŠã®æåã³ãŒããæåã«æ»ã (ãã©ã¡ãŒã¿ã«åŸã£ãŠæååã解æããå ŽåããããŸã)ãæ£ããã³ãã³ããä¿èšŒãããç¶æ 㧠SAP GUI ããã§ã«åŒã³åºããŠããŸãã ç§ãã¡ã®å Žåããããå®å šã«é©åãšããããã§ã¯ãããŸãã (ããããç§ããããæžããªãã£ãçç±ã§ã)ããã¹ãŠã®ãŠãŒã¶ãŒ PC ã«ãããã³ã«ãè¿œå ããã ãã§ã¯ååã§ã¯ãªãããã§ã (ãã¡ã€ã³å ã§ã¯ããã§ãåé¡ãããŸããããè¿œå ããã»ããè¯ãã§ãã)ãã®æ¹æ³ã¯é¿ããŠãã ãã)ããã ããããã§ã¯ããã°ã©ã ã PC ã«ããã«é 眮ããå¿ èŠãããããŸãããœãããŠã§ã¢ã PC ã«åã€ã³ã¹ããŒã«ããããšãã«ããã°ã©ã ãæ¶ããªãããšãåžžã«ç¢ºèªããå¿ èŠããããŸãã
ãããã®ã ãã®ãªãã·ã§ã³ãç§ãã¡ã«ã¯äžé©åã§ãããšããŠç Žæ£ããŸãã
ãã®æç¹ã§ããã©ãŠã¶ããå¿ èŠãªãã©ã¡ãŒã¿ãæå®ã㊠SAP GUI ãèµ·åãããšããèãã«ã¯å¥ããåããªããã°ãªããªãã ãããšèãå§ããŠããŸãããããã®ãšããSAP ãã°ãªã³ã§ã·ã§ãŒãã«ãããäœæã§ãããšããèããæãã€ããŸãããããããã¹ã¯ãããã«ã³ããŒããŸãã ãã®æ¹æ³ãäžåºŠäœ¿çšããŸãããããããŸã§ã¯ç¹ã«ã·ã§ãŒãã«ãã ãã¡ã€ã«ã確èªããŠããŸããã§ããã ãããŠããã®ã·ã§ãŒãã«ããã¯æ¡åŒµåã次ã®éåžžã®ããã¹ã ãã¡ã€ã«ã§ããããšãå€æããŸããã .sapã Windows äžã§å®è¡ãããšããã®ãã¡ã€ã«ã§æå®ããããã©ã¡ãŒã¿ã䜿çšã㊠SAP GUI ãèµ·åããŸãã "ãã³ãŽïŒ"
ãã®ãã¡ã€ã«ã®åœ¢åŒã¯ãããã次ã®ãšããã§ã (èµ·åæã«ãã©ã³ã¶ã¯ã·ã§ã³ãèµ·åãããå ŽåããããŸãããçç¥ããŸãã)ã
[System]
Name=SID
Client=200
[User]
Name=
Language=RU
Password=
[Function]
Title=
[Configuration]
GuiSize=Maximized
[Options]
Reuse=0
å¿
èŠãªãã®ã¯ãã¹ãŠãã·ã¹ãã èå¥åãã¯ã©ã€ã¢ã³ãããŠãŒã¶ãŒåãããã«ã¯ãã¹ã¯ãŒãã®ããã§ãã ããã«è¿œå ã®ãã©ã¡ãŒã¿ããããŸã: åœ¹è· - ãŠã£ã³ããŠã®ã¿ã€ãã«ã GUIãµã€ãº â å®è¡äžã®ãŠã£ã³ããŠã®ãµã€ãº (å
šç»é¢ãã©ãã)ãããã³ åå©çš â æ°ãããŠã£ã³ããŠãéãå¿
èŠãããããåãã·ã¹ãã ã§ãã§ã«éããŠãããŠã£ã³ããŠã䜿çšããå¿
èŠããããã ãããããã¥ã¢ã³ã¹ãããã«çŸããŸãã - SAP ãã°ãªã³ã®ãã¹ã¯ãŒããèšå®ã§ãããåç·ããããã¯ãããŠããããšãå€æããŸããã ããã¯ã»ãã¥ãªãã£äžã®çç±ããè¡ãããŠããããšãå€æããŸãããSAP Logon ã§äœæããããã¹ãŠã®ã·ã§ãŒãã«ããããã¡ã€ã«ã«ä¿åãããŸãã sapshortcut.ini ïŒè¿ã saplogon.ini Windows ãŠãŒã¶ãŒ ãããã¡ã€ã«ã«ãããŸã)ãããã§ã¯æå·åãããŠããŸãããããã»ã©åŒ·åã«ã¯æå·åãããŠããããå¿
èŠã«å¿ããŠåŸ©å·åã§ããŸãã ãã ããã¬ãžã¹ããªå
ã® XNUMX ã€ã®ãã©ã¡ãŒã¿ã®å€ãå€æŽããããšã§ãã®åé¡ã解決ã§ããŸã (ããã©ã«ãå€ã¯ 0):
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"
ããã«ãããSAP ãã°ãªã³ã®ã·ã§ãŒãã«ããäœæãã©ãŒã ã«å
¥åãããã¹ã¯ãŒã ãã£ãŒã«ãã®ããã¯ã解é€ãããŸãã
ãã®ãã£ãŒã«ãã«ãã¹ã¯ãŒããå
¥åãããšã察å¿ããè¡ã«ãã¹ã¯ãŒããé
眮ãããŸãã
sapshortcut.iniãã ããã·ã§ãŒãã«ããããã¹ã¯ãããã«ãã©ãã°ããŠãããã«ã¯è¡šç€ºãããŸããããæåã§è¿œå ããããšã¯ã§ããŸãã ãã¹ã¯ãŒãã¯æå·åãããŠããã111111 ã®å Žå㯠PW_49B02219D1F6ã222222 ã®å Žå㯠PW_4AB3211AD2F5 ã«ãªããŸãã ããããç§ãã¡ããã£ãšèå³ãããã®ã¯ããã®ãã¹ã¯ãŒããç¹å®ã® PC ã«é¢ä¿ãªãäžæ¹åã§æå·åãããŠããããã¹ã¯ãŒããåæå€ã«ãªã»ãããããšããã®ãã£ãŒã«ã㧠7.40 ã€ã®æ¢ç¥ã®å€ã䜿çšã§ãããšããäºå®ã§ãã ããã§ãããã©ã³ãã ã«äœæããããã¹ã¯ãŒãã䜿çšãããå Žåã¯ããã®æå·ã®ã¢ã«ãŽãªãºã ãç解ããå¿
èŠããããŸãã ããããäžããããäŸããå€æãããšããããè¡ãã®ã¯é£ãããããŸããã ã¡ãªã¿ã«ãSAP GUI XNUMX ã§ã¯ããã®ãã£ãŒã«ãã¯ãã©ãŒã ããå®å
šã«æ¶ããŸãããããã¹ã¯ãŒããå
¥åããããã¡ã€ã«ã¯æ£ããåãå
¥ããããŸãã
ã€ãŸãããã©ãŠã¶ã§ .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";
?>
ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããæå®ããªãå Žåã¯ããã°ã€ã³ãšãã¹ã¯ãŒããæ±ãã次ã®ãŠã£ã³ããŠã衚瀺ãããŸãã
ãã°ã€ã³ã®ã¿ãæž¡ãå Žåããã°ã€ã³ãã£ãŒã«ãã¯å
¥åããããã¹ã¯ãŒããã£ãŒã«ãã¯ç©ºã«ãªããŸãã ãŠãŒã¶ãŒã«ãã°ã€ã³ãšãã¹ã¯ãŒãã®äž¡æ¹ãäžããŠããPC äžã®ãŠãŒã¶ãŒãã¬ãžã¹ããªã® [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] ã»ã¯ã·ã§ã³ã® EnablePassword ããŒã 0 ã«èšå®ããŠããå ŽåãåãçµæãåŸãããŸãã ãã®ããŒã 1 ã«èšå®ãããŠãããååãšåæãã¹ã¯ãŒãã®äž¡æ¹ãæž¡ããå Žåã«ã®ã¿ãã·ã¹ãã ã¯ããã«æ°ããæ°žç¶ãã¹ã¯ãŒãã XNUMX åå
¥åããããã«æ±ããŸãã ãããç§ãã¡ãåŸãå¿
èŠããã£ããã®ã§ãã
ãã®çµæãäžèšãã¹ãŠã®äŸãšããŠã次ã®æ€èšæžã¿ãªãã·ã§ã³ã®ã»ãããåŸãããŸãã
<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";
?>
åºæïŒ habr.com