Mit folgendem Beispiel wurde die Aktivierung und Deaktivierung einer Vertretung im SAP ERP wesentlich vereinfacht.
Siehe Video
InputScript Ferienabwesenheit.txt
Parameter Art Set V[Ferienabwesenheit_über_Script] "" // SAP Easy Access Screen SAPLSMTR_NAVIGATION.01* Enter "/36" // Business Workplace // Business Workplace von Gérald KOEHN Screen SAPLSINWP.1000 Enter "/Menu=6,1" // Büroeinstellungen // Persönliche Büroeinstellungen von Gérald KOEHN Screen SAPLSO13.4000 Enter "=TAB4" // Vertreter // Persönliche Büroeinstellungen von Gérald KOEHN Screen SAPLSO13.4000 if U[Art=Aktivieren] // Wenn es mehr als 1 Stellvertreter gepflegt ist, so muss der Anwender entscheiden, // wer als Stellvertreter bei den Workflows gesetzt werden soll set V[check_vertreter] "" set V[check_vertreter] "&cell[SAPLSO13_TAB5CON1,SOS12-L_SUADRNAM,2]" set V[check_vertreter] "&V[check_vertreter](1,4)" if V[check_vertreter] and not V[check_vertreter=____] Set V[Ferienabwesenheit_über_Script] "X" Enter "?" Leave else // Hier noch prüfen, ob es überhaupt einen Vertreter hat, der schon eingetragen ist // Wenn gar keiner, so machen wir eine entsprechende Meldung set V[check_vertreter] "&cell[SAPLSO13_TAB5CON1,SOS12-L_SUADRNAM,1]" set V[check_vertreter] "&V[check_vertreter](1,4)" if V[check_vertreter=____] or not V[check_vertreter] Set V[Ferienabwesenheit_über_Script] "X" Enter "?" Message "W: Bitte mindestens einen Vertreter anlegen" -statusline Leave endif Set cell[SAPLSO13_TAB5CON1,SOS12-L_SBDAT,1] "&[today_user]" Set cell[SAPLSO13_TAB5CON1,SOS12-L_SEDAT,1] "31.12.2099" Set V[Vertretername] "&cell[SAPLSO13_TAB5CON1,SOS12-L_SUADRNAM,1]" Enter "/8" // Übernehmen endif endif if U[Art=Deaktivieren] // Wenn es mehr als 1 Stellvertreter gepflegt ist, so suchen wir den Eintrag // der aktiviert ist set V[i] 1 Label Ampel_suchen set V[check_ampel] "" set V[check_ampel] "&cell[SAPLSO13_TAB5CON1,SOS13-STAT_ICON,&[i]]" set V[check_ampel] "&V[check_ampel](1,3)" if V[check_ampel] if V[check_ampel=@5B] // grüne Ampel Set cell[SAPLSO13_TAB5CON1,SOS12-L_SBDAT,&[i]] "01.01.2010" Set cell[SAPLSO13_TAB5CON1,SOS12-L_SEDAT,&[i]] "&[today-1_user]" Set V[Vertretername] "&cell[SAPLSO13_TAB5CON1,SOS12-L_SUADRNAM,&[i]]" else Set V[i] &[i] + 1 goto Ampel_suchen endif endif Enter "/8" endif // Business Workplace von Gérald KOEHN Screen SAPLSINWP.1000 Enter "/Menu=6,2,9" // Vertreter aktivieren / deaktivieren // Persönliche Vertreter Screen SAPLRHW2.0200 ApplyGuiScript Template="Abwesenheit.vbs" If U[Art=Aktivieren] Enter "/8" endif If U[Art=Deaktivieren] Enter "/14" endif // Persönliche Vertreter Screen SAPLRHW2.0200 // Wenn Aktivierung erfolgreich, so können wir zurückkehren. // _msgid= 5A, _msmo=899, msgtype=s if V[_msgid=5A] and V[_msgno=899] and V[_msgtype=S] Enter "/N" else Message "Vertreter '&V[Vertretername]' wurde in Liste nicht gefunden, bitte ergänzen und manuell setzen" Enter "?" Leave endif // SAP Easy Access Screen SAPLSMTR_NAVIGATION.01* if U[Art=Aktivieren] Message "Ihre Vertretung wurde erfolgreich auf '&V[Vertretername]' aktiviert" -Statusline endif if U[Art=Deaktivieren] Message "Ihre Vertretung von '&V[Vertretername]' wurde erfolgreich deaktiviert" -Statusline endif Enter "?"
Die zugehörigen GuiXT Scripte, wie auch das zugehörige VBS-Script finden sie in folgender ZIP-Datei.
Als Alternative zum Aufruf des VBS-Scriptes über den Befehl ApplyGuiScript kann man auch dazu den Befehl callVbs verwenden. Beim Aufruf über ApplyGuiScript ist das entscheidende, dass der Aufruf über Template= erfolgt. Dadurch wird in der VBS Datei zur Laufzeit die Variable &[Vertretername] ersetzt.
Beim Aufruf über callvbs erfolgt die Übergabe des zu suchenden Vertreters über einen Parameter (uname). Beim Aufruf über callvbs, muss man ebenfalls beachten, dass der Aufruf erst erfolgen kann, wenn der zugehörige Screen SAPLRHW2.0200 bereits zweimal aufgerufen wurde. Dies weil das Bild ein Pop-Up ist und sonst der callvbs Aufruf sonst ins Leere laufen würde.
Dazu das leicht andere vbs Script:
Function SelectTreeItem(uname) 'Get the node keys , a key is a number/position in the 'A key value starts from 1. Set ObjKeyValues = SapTree.GetAllNodeKeys 'get the total count 'This count indicates the number of items/nodes in the Tree intNodeCount = ObjKeyValues.Count For i = 0 To intNodeCount-1 'Get the node text strNodeText=SapTree.GetNodeTextByKey(ObjKeyValues(i)) 'Check if the match was found for the key that you are looking for 'if yes then activate the item If InStr(strNodeText,uname)>0 Then SapTree.SelectNode ObjKeyValues(i) SapSession.ActiveWindow.sendVKey 8 SapSession.ActiveWindow.sendVKey 0 'Release the objects Set ObjKeyValues = Nothing Set SapTree = Nothing Exit function End If Next 'Release the objects Set ObjKeyValues = Nothing Set SapTree = Nothing MsgBox("User not found in tree") SapSession.ActiveWindow.sendVKey 0 End Function