Ƙaddamar da SAP GUI daga mai bincike

Na fara rubuta wannan labarin a cikin nawa блог, don kada in sake bincika da tunawa daga baya, amma tun da babu wanda ya karanta blog, Ina so in raba wannan bayanin tare da kowa, idan wani ya ga yana da amfani.

Yayin aiki akan ra'ayin sabis na sake saitin kalmar sirri a cikin tsarin SAP R / 3, wata tambaya ta taso - yadda za a ƙaddamar da SAP GUI tare da sigogi masu mahimmanci daga mai bincike? Tun da wannan ra'ayin yana nufin amfani da sabis na yanar gizo, da farko amsa buƙatun SOAP daga SAP GUI da aika wasiƙa tare da hanyar haɗi zuwa shafin yanar gizon tare da rubutun don sake saita kalmar wucewa zuwa farkon, sannan nunawa ga mai amfani. sako game da nasarar sake saitin kalmar sirri da nuna wannan ainihin kalmar sirri ta farko, to ina son wannan shafin ya sami hanyar haɗi don ƙaddamar da SAP GUI. Bugu da ƙari, wannan hanyar haɗin yanar gizon ya kamata ya buɗe tsarin da ake so, kuma, zai fi dacewa, tare da wuraren shiga da kalmomin shiga da aka cika a lokaci ɗaya: mai amfani zai cika kalmar sirri sau biyu kawai.

Ƙaddamar da SAP Logon bai kasance mai ban sha'awa ba don manufarmu, kuma lokacin da yake gudana sapgui.exe ba shi yiwuwa a ƙayyade abokin ciniki da sunan mai amfani, amma yana yiwuwa a kaddamar da tsarin da ba a bayyana a cikin SAP Logon ba. A gefe guda, ƙaddamar da SAP GUI tare da sigogin uwar garken sabani bai dace ba musamman: idan muna magance matsalar sake saita kalmar wucewa ta mai amfani, to wataƙila ya riga ya sami layin da ake buƙata a cikin SAP Logon, tare da saitunan da yake buƙata, kuma a can. baya bukatar yin rikici da nasa. Amma ƙayyadaddun buƙatun sun cika ta hanyar fasahar SAP GUI Shortcut da kuma shirin sapshcut.exe kanta, wanda ya sa ya yiwu a ƙaddamar da SAP GUI ta amfani da takamaiman "hanyar hanya".

Magance matsalar gaba-gaba: ƙaddamar da sapshcut.exe kai tsaye daga mai bincike ta amfani da abu 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');
}

Maganin ba shi da kyau: na farko, yana aiki ne kawai a cikin Internet Explorer, na biyu, yana buƙatar saitunan tsaro masu dacewa a cikin mai bincike, wanda a cikin ƙungiya za a iya haramta shi a matakin yanki, kuma ko da an yarda, mai bincike yana nuna taga tare da ban tsoro. gargadi ga mai amfani:

Ƙaddamar da SAP GUI daga mai bincike

Na sami mafita #2 akan Intanet: ƙirƙirar ƙa'idar gidan yanar gizon ku. Yana ba mu damar ƙaddamar da aikace-aikacen da muke buƙata ta amfani da hanyar haɗin yanar gizon da ke nuna ƙa'idar, wanda mu kanmu muka yi rajista a cikin Windows a cikin wurin yin rajista a sashin HKEY_CLASSES_ROOT. Tunda SAP GUI Gajerun hanyoyi yana da nasa sashin a cikin wannan sashe, zaku iya ƙara siginar layin ka'idar URL tare da fanko a can:

Ƙaddamar da SAP GUI daga mai bincike

Wannan ka'ida ta fara sapgui.exe tare da siga / GASKIYA, wanda shine ainihin abin da muke bukata:

Ƙaddamar da SAP GUI daga mai bincike

To, ko kuma idan muna son yin cikakken tsari na sabani (misali, sapshcut), sannan zaku iya yin rijista ta amfani da fayil ɗin reg mai zuwa:

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

Yanzu, idan muka yi hanyar haɗi akan shafin yanar gizon yanar gizon da ke nuna ƙa'idar Sapgui.Gajerar hanya.File Kamar haka:

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

Ya kamata mu ga taga kamar haka:

Ƙaddamar da SAP GUI daga mai bincike

Kuma komai yana da kyau, amma idan kun danna maɓallin "Bada" muna gani:

Ƙaddamar da SAP GUI daga mai bincike

Kash, mai lilo ya juya sararin samaniya zuwa %20. To, sauran haruffa kuma za a sanya su cikin lambar lamba tasu tare da alamar kashi. Kuma mafi m abu shi ne cewa babu wani abu da za a iya yi a nan a browser matakin (duk abin da ke nan ana yin shi bisa ga misali) - browser ba ya son irin wannan haruffa, da kuma Windows umurnin mai fassara ba ya aiki tare da irin wannan rufaffiyar dabi'u. Kuma ƙari guda ɗaya - duk kirtani an wuce shi azaman siga, gami da sunan yarjejeniya har ma da colon (sapgui.shortcut.file:). Bugu da ƙari, ko da yake iri ɗaya ne sapshcut.exe zai iya watsar da duk abin da ba ma'auni ba (farawa da alamar "-", sannan sunan, "=" da darajar), watau. layi kamar"sapgui.shortcut.file: -system=SID"har yanzu zai yi aiki, sannan ba tare da sarari ba"sapgui.shortcut.file:-system=SID"Babu aiki.

Ya bayyana cewa, bisa manufa, akwai zaɓuɓɓuka guda biyu don amfani da ka'idar URI:

  1. Amfani ba tare da sigogi ba: Muna ƙirƙira ɗimbin ƙa'idodi don duk tsarin mu na nau'in SIDANDT, kamar AAA 200, Saukewa: BBB200 da sauransu. Idan kawai kuna buƙatar fara tsarin da ake so, to zaɓin yana da sauƙin aiki, amma a cikin yanayinmu bai dace ba, tunda aƙalla kuna son canja wurin shiga mai amfani, amma ba za a iya yin hakan ta wannan hanyar ba.
  2. Amfani da shirin kunsa don kira sapshcut.exe ko sapgui.exe. Mahimmancin wannan shirin yana da sauƙi - dole ne ya ɗauki igiyoyin da mai bincike ke aikawa da shi ta hanyar ka'idar yanar gizon kuma ya juya shi zuwa wakilcin da Windows ke karɓa, watau. yana mayar da duk lambobin haruffa zuwa haruffa (wataƙila har ma da rarraba kirtani bisa ga sigogi) kuma tuni ya kira SAP GUI tare da ingantaccen umarni. A cikin yanayinmu, shi ma bai dace da shi ba (shi ya sa ban ma rubuta ta ba), saboda bai ishe mu ba mu ƙara ƙa'idar akan duk kwamfutocin masu amfani (a cikin yanki wannan har yanzu ba shi da kyau, kodayake kuma yana da kyau guje wa wannan al'ada), amma a nan za mu buƙaci ƙarin sanya shirin akan PC, kuma koyaushe tabbatar da cewa ba ya tafi lokacin da aka sake shigar da software akan PC.

Wadancan. Mun kuma watsar da wannan zaɓin a matsayin bai dace da mu ba.

A wannan lokaci na riga na fara tunanin cewa dole ne in yi bankwana da ra'ayin ƙaddamar da SAP GUI tare da ma'auni masu mahimmanci daga mai bincike, amma sai ra'ayin ya zo gare ni cewa za ku iya yin gajeren hanya a SAP Logon kuma kwafa shi zuwa tebur ɗin ku. Na yi amfani da wannan hanyar sau ɗaya, amma kafin wannan ban duba takamaiman fayil ɗin gajeriyar hanya ba. Kuma ya zama cewa wannan gajeriyar hanyar fayil ce ta yau da kullun tare da tsawo .sap. Kuma idan kun kunna shi akan Windows, SAP GUI zai ƙaddamar da sigogi waɗanda aka ƙayyade a cikin wannan fayil ɗin. "Bingo!"

Tsarin wannan fayil yana kusan kamar haka (akwai kuma ana iya ƙaddamar da ciniki yayin farawa, amma na tsallake shi):

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

Da alama duk abin da ake buƙata: mai gano tsarin, abokin ciniki, sunan mai amfani har ma da kalmar sirri. Har ma da ƙarin sigogi: Title - taga take, GuiSize - girman taga mai gudana (cikakken allo ko a'a) kuma Amfani da - ko yana da mahimmanci don buɗe sabuwar taga ko amfani da wanda aka riga aka buɗe tare da tsarin iri ɗaya. Amma wani nuance ya fito nan da nan - ya zama cewa ba za a iya saita kalmar sirri a cikin SAP Logon ba, an toshe layin. Ya bayyana cewa an yi haka ne saboda dalilai na tsaro: yana adana duk gajerun hanyoyin da aka kirkira a cikin SAP Logon a cikin fayil sapshortcut.ini (Kusa saplogon.ini a cikin bayanan mai amfani da Windows) kuma a can, kodayake an rufaffen su, ba a ɓoye su da ƙarfi sosai kuma, idan ana so, ana iya ɓoye su. Amma kuna iya warware wannan ta canza ƙimar siga ɗaya a cikin rajista (ƙimar tsoho ita ce 0):

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

Wannan yana buɗe filin kalmar wucewa don shigarwa akan hanyar ƙirƙirar gajeriyar hanya a cikin SAP Logon:

Ƙaddamar da SAP GUI daga mai bincike

Kuma idan ka shigar da kalmar sirri a cikin wannan filin, za a sanya shi a cikin layin da ya dace
sapshortcut.ini, amma lokacin da ka ja gajeriyar hanya zuwa tebur, ba ya bayyana a wurin - amma zaka iya ƙara shi da hannu. An rufaffen kalmar sirri, don 111111 zai kasance kamar haka: PW_49B02219D1F6, don 222222 - PW_4AB3211AD2F5. Amma mun fi sha'awar gaskiyar cewa an ɓoye wannan kalmar sirri ta hanya ɗaya, ba tare da takamaiman PC ba, kuma idan muka sake saita kalmar wucewa zuwa farkon, to zamu iya amfani da ƙimar da aka riga aka sani a wannan filin. To, idan muna so mu yi amfani da kalmar sirri da aka ƙirƙira ba da gangan ba, dole ne mu fahimci algorithm na wannan cipher. Amma idan aka yi la’akari da misalan da aka bayar, yin hakan ba zai yi wahala ba. Af, a cikin SAP GUI 7.40 wannan filin ya ɓace gaba ɗaya daga cikin tsari, amma yana karɓar fayil daidai da kalmar sirri mai cika.

Wato, ya bayyana cewa a cikin mai binciken kawai kuna buƙatar danna hanyar haɗi zuwa fayil tare da tsawo na .sap da tsarin da ake so - kuma zai ba da damar buɗe shi azaman fayil na nau'in Shortcut SAP GUI (a zahiri a kunne). PC tare da shigar SAP GUI) kuma zai buɗe taga SAP GUI tare da ƙayyadaddun sigogi (idan SID da abokin ciniki biyu suna cikin jerin SAP Logon akan wannan PC).

Amma, a bayyane yake cewa babu wanda zai ƙirƙiri fayiloli kawai a gaba kuma ya adana su a kan rukunin yanar gizon - dole ne a samar da su bisa la'akari da mahimman sigogi. Misali, zaku iya ƙirƙirar rubutun PHP don samar da gajerun hanyoyi (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";
?>

Idan baku saka sunan mai amfani da kalmar sirri ba, zaku sami taga mai zuwa yana neman shiga da kalmar sirri:

Ƙaddamar da SAP GUI daga mai bincike

Idan kun wuce shiga kawai, za a cika filin shiga kuma filin kalmar sirri zai zama fanko. Idan muka ba mai amfani duka login da kalmar sirri, amma mai amfani a kan PC yana da maɓallin EnablePassword a cikin rajista a cikin [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] da aka saita zuwa 0, to muna samun abu iri ɗaya. Kuma idan an saita wannan maɓalli zuwa 1 kuma muka wuce duka suna da kalmar sirri ta farko, tsarin zai sa ka shigar da sabon kalmar sirri sau biyu. Abin da muke bukata ke nan mu samu.

Sakamakon haka, muna da waɗannan zaɓuɓɓukan da aka yi la'akari da su a matsayin misalin duk abubuwan da ke sama:

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

Zaɓin ƙarshe ya dace da ni. Amma maimakon samar da gajerun hanyoyin SAP, kuna iya amfani da, misali, ƙirƙirar fayilolin CMD, waɗanda, idan an buɗe su daga mai bincike, za su buɗe muku taga SAP GUI. A ƙasa akwai misali (sapguicmd.php) ƙaddamar da SAP GUI kai tsaye tare da cikakken haɗin haɗin kai, ba tare da buƙatar saita SAP Logon ba:

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

source: www.habr.com

Add a comment