බ්‍රවුසරයකින් 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 කෙටිමඟට මෙම කොටසෙහි එහිම උපවගන්තිය ඇති බැවින්, ඔබට එහි හිස් අගයක් සහිත URL ප්‍රොටෝකෝල තන්තු පරාමිතිය එක් කළ හැක:

බ්‍රවුසරයකින් SAP GUI දියත් කිරීම

මෙම ප්රොටෝකෝලය ආරම්භ වේ sapgui.exe පරාමිතිය සමඟ /ShorTCUT, අපට අවශ්‍ය වන්නේ එයයි:

බ්‍රවුසරයකින් 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 එය සඳහා පරාමිතියක් නොවන සියල්ල ඉවත දැමිය හැකිය ("-" සංකේතයෙන් ආරම්භ වේ, පසුව නම, "=" සහ අගය), i.e. " වැනි රේඛාවක්sapgui.shortcut.file: -system=SID"එය තවමත් වැඩ කරනු ඇත, එවිට ඉඩක් නොමැතිව"sapgui.shortcut.file:-system=SID"තවදුරටත් වැඩ කරන්නේ නැහැ.

ප්‍රතිපත්තිමය වශයෙන්, URI ප්‍රොටෝකෝලය භාවිතා කිරීම සඳහා විකල්ප දෙකක් ඇති බව පෙනේ:

  1. පරාමිති නොමැතිව භාවිතා කිරීම: අපි අපගේ සියලුම වර්ගයේ පද්ධති සඳහා සම්පූර්ණ ප්‍රොටෝකෝල සමූහයක් සාදන්නෙමු සිඩ්මන්ඩ්, වර්ගය AAA200, BBB200 සහ යනාදි. ඔබට අවශ්‍ය පද්ධතිය ආරම්භ කිරීමට අවශ්‍ය නම්, විකල්පය තරමක් ක්‍රියාත්මක වේ, නමුත් අපගේ නඩුවේදී එය සුදුසු නොවේ, මන්ද අවම වශයෙන් ඔබ පරිශීලක පිවිසුම මාරු කිරීමට කැමති නමුත් මෙය මේ ආකාරයෙන් කළ නොහැක.
  2. ඇමතීමට දවටන වැඩසටහනක් භාවිතා කිරීම sapshcut.exe හෝ sapgui.exe. මෙම වැඩසටහනේ සාරය සරලයි - එය වෙබ් ප්‍රොටෝකෝලය හරහා බ්‍රවුසරය එයට සම්ප්‍රේෂණය කරන තන්තුව ගෙන එය වින්ඩෝස් වෙත ලැබෙන නිරූපණය බවට පත් කළ යුතුය, i.e. සියලුම අක්ෂර කේත නැවත අක්ෂර බවට පත් කරයි (සමහර විට පරාමිති අනුව තන්තුව විග්‍රහ කරයි) සහ දැනටමත් සහතික කළ නිවැරදි විධානයක් සමඟ 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

අවශ්‍ය සියල්ල බව පෙනේ: පද්ධති හඳුනාගැනීමක්, සේවාදායකයෙක්, පරිශීලක නාමයක් සහ මුරපදයක් පවා. සහ අතිරේක පරාමිතීන් පවා: ශීර්ෂය - කවුළු මාතෘකාව, GuiSize - ධාවන කවුළුවේ විශාලත්වය (සම්පූර්ණ තිරය හෝ නැත) සහ නැවත භාවිතා කරන්න — එය නව කවුළුවක් විවෘත කිරීමට හෝ එකම පද්ධතිය සමඟ දැනටමත් විවෘත එකක් භාවිතා කිරීමට අවශ්යද යන්න. නමුත් සූක්ෂ්මතාවයක් වහාම මතු විය - SAP Logon හි මුරපදය සැකසිය නොහැකි බව පෙනී ගියේය, රේඛාව අවහිර කර ඇත. මෙය ආරක්ෂක හේතූන් මත සිදු කර ඇති බව පෙනී ගියේය: එය SAP Logon හි සාදන ලද සියලුම කෙටිමං ගොනුවක ගබඩා කරයි. sapshortcut.ini (අසල saplogon.ini වින්ඩෝස් පරිශීලක පැතිකඩෙහි) සහ එහි, ඒවා සංකේතනය කර ඇතත්, ඒවා දැඩි ලෙස සංකේතනය කර නොමැති අතර, අවශ්ය නම්, ඒවා විකේතනය කළ හැකිය. නමුත් රෙජිස්ට්‍රියේ එක් පරාමිතියක අගය වෙනස් කිරීමෙන් ඔබට මෙය විසඳිය හැක (පෙරනිමි අගය වේ 0):

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

මෙය SAP Logon හි කෙටිමං නිර්මාණය කිරීමේ පෝරමයට ඇතුල් වීමට මුරපද ක්ෂේත්‍රය අගුළු හරියි:

බ්‍රවුසරයකින් SAP GUI දියත් කිරීම

ඔබ මෙම ක්ෂේත්‍රයේ මුරපදයක් ඇතුළත් කළ විට, එය අනුරූප පේළියේ තබනු ඇත
sapshortcut.ini, නමුත් ඔබ ඩෙස්ක්ටොප් එකට කෙටිමඟක් ඇදගෙන ගිය විට, එය එහි නොපෙනේ - නමුත් ඔබට එය අතින් එකතු කළ හැක. මුරපදය සංකේතනය කර ඇත, 111111 සඳහා එය පහත පරිදි වේ: PW_49B02219D1F6, 222222 සඳහා - PW_4AB3211AD2F5. නමුත් මෙම මුරපදය නිශ්චිත පරිගණකයෙන් ස්වාධීනව එක් ආකාරයකින් සංකේතනය කර ඇති බව ගැන අපි වඩාත් උනන්දු වෙමු, අපි මුරපදය මුල් එකට නැවත සකසන්නේ නම්, අපට මෙම ක්ෂේත්‍රයේ පෙර දන්නා අගයක් භාවිතා කළ හැකිය. හොඳයි, අපට අහඹු ලෙස සාදන ලද මුරපදයක් භාවිතා කිරීමට අවශ්‍ය නම්, අපට මෙම කේතාංකයේ ඇල්ගොරිතම තේරුම් ගැනීමට සිදුවේ. නමුත් ලබා දී ඇති උදාහරණ අනුව විනිශ්චය කිරීම, මෙය කිරීම අපහසු නොවනු ඇත. මාර්ගය වන විට, SAP GUI 7.40 හි මෙම ක්ෂේත්‍රය පෝරමයෙන් සම්පූර්ණයෙන්ම අතුරුදහන් විය, නමුත් එය පිරවූ මුරපදයක් සහිත ගොනුවක් නිවැරදිව පිළිගනී.

එනම්, බ්‍රව්සරයේ ඔබට .sap දිගුව සහ අපේක්ෂිත ආකෘතිය සහිත ගොනුවකට සබැඳිය ක්ලික් කළ යුතු බව පෙනේ - එය එය SAP GUI කෙටිමං වැනි ගොනුවක් ලෙස විවෘත කිරීමට ඉදිරිපත් වනු ඇත (ස්වාභාවිකව පරිගණකයක). SAP GUI ස්ථාපනය කර ඇත) සහ නිශ්චිත පරාමිති සහිත SAP GUI කවුළුවක් විවෘත කරනු ඇත (SID සහ සේවාදායක යුගලය මෙම පරිගණකයේ 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 දියත් කිරීම

ඔබ පිවිසුම පමණක් සමත් වුවහොත්, පිවිසුම් ක්ෂේත්‍රය පුරවනු ලබන අතර මුරපද ක්ෂේත්‍රය හිස් වනු ඇත. අපි පරිශීලකයාට පුරනය වීම සහ මුරපදය යන දෙකම ලබා දෙන්නේ නම්, නමුත් පරිගණකයේ පරිශීලකයා සතුව රෙජිස්ට්‍රියේ [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] කොටසේ 0 ලෙස සකසා ඇති EnablePassword යතුර තිබේ නම්, එවිට අපට ලැබෙන්නේ එකම දෙයයි. මෙම යතුර 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 Logon වින්‍යාස කිරීමේ අවශ්‍යතාවයකින් තොරව, 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

අදහස් එක් කරන්න