12.11.2021 | Leonhard Hoffmann
In der Arbeit mit SAP kommen des Öfteren Arbeitspakete vor, die ein und dieselbe Aufgabe mehrfach enthalten. So zum Beispiel das Anlegen von Testdaten oder Schulungsdaten. In beiden Fällen muss oft der gleiche Vorgang mehrfach durchgeführt werden, wie etwa das Erzeugen einer Bestellung, das Umlagern von Material auf einen anderen Lagerplatz, etc. SAP bietet an dieser Stelle unterschiedliche Lösungen, um diesen Vorgang zu beschleunigen. Neben dem Bestandsupload, der dabei hilft, Bestände zu generieren, bietet SAP auch die Funktion des GUI Scriptings.
Diese Funktion bietet die Möglichkeit einen bestimmten Vorgang im SAP GUI aufzuzeichnen und in einer Schleife durchlaufen zu lassen - und das sogar mit unterschiedlichen Eingabe-Daten. Dabei wird ein Visual Basic Script aufgezeichnet, modifiziert und aus einer Excel-Tabelle werden die Eingabe-Daten als Variablen eingefügt. Ein Vorgang, der grundsätzlich 20-mal durchgeführt werden müsste, kann somit einmal aufgezeichnet werden und dann im Front-End des GUIs in Sekundenschnelle weitere 19-mal ausgeführt werden.
Das GUI Scripting wird aber auch für andere Zwecke verwendet: z.B. für den Zugriff von anderen Programmen auf das SAP GUI Frontend. Beispielsweise ist auch die Aktivierung des GUI Scriptings eine Voraussetzung für die Verwendung von SAP Enable Now, welches dazu dient, Prozessschritte im SAP GUI aufzuzeichnen und z.B. für Schulungszwecke zur Verfügung zu stellen.
In diesem Artikel wollen wir nun zeigen was das GUI Scripting ist, welche Voraussetzungen für das GUI Scripting erfüllt werden müssen und wie ein VB-Skript aufgezeichnet und verwendet wird.
Die SAP GUI Scripting API ist eine Automatisierungsschnittstelle, die die Möglichkeiten von SAP GUI für Windows erweitert. Aus Sicht des SAP-Servers gibt es keinen Unterschied zwischen der von einem Skript erzeugten SAP-GUI-Kommunikation und der von einem Benutzer erzeugten SAP-GUI-Kommunikation. Aus diesem Grund hat ein Skript die gleichen Rechte, SAP-Transaktionen auszuführen und Daten einzugeben, wie der Benutzer, der es startet. Ein Skript läuft jedoch schneller durch als die manuelle Interaktion mit einem System und es kann auch unbeaufsichtigt laufen. Es ist daher wahrscheinlich, dass ein fehlerhaftes Skript mehr fehlerhafte Daten erzeugen kann als ein Benutzer, bevor der Fehler entdeckt wird. Aus diesem Grund müssen für das Scripting gewisse Vorkehrungen manuell getroffen werden. Diese werden wir im folgenden Abschnitt näher erläutern.
Auf dem folgenden Bild sollte der Eintrag „Aktueller Wert“ TRUE sein. Wenn er als FALSE angezeigt wird, drücken Sie die Schaltfläche „Wert ändern“ in der Symbolleiste, setzen Sie den Wert auf TRUE und speichern Sie ihn.
Wenn das SAP-System mehrere Anwendungsserver hat und Lastausgleich verwendet, sollten Sie das Ankreuzfeld „Switch on all servers“ setzen. Andernfalls wird der Parameter nur gesetzt, wenn Sie sich beim aktuellen Anwendungsserver anmelden.
Nach dem Sichern des Wertes sollte sich der Wert „Current“ auf TRUE ändern. Die Skripting-Unterstützung wird dann bei der nächsten Anmeldung am Server aktiviert.
sapgui/user_scripting_disable_recording
Dieser Parameter deaktiviert alle SAP-GUI-Scripting-Ereignisse für das System, auf dem er gesetzt ist. Es ist weiterhin möglich Skripte auszuführen, die zuvor aufgezeichnet oder geschrieben wurden. Es ist jedoch nicht möglich, neue Skripte aufzuzeichnen oder irgendeine andere Art von Informationen als Reaktion auf SAP-GUI-Scripting-Ereignisse zu protokollieren.
sapgui/user_scripting_set_readonly
Im Read-Only-Modus von SAP GUI Scripting kann nur eine Teilmenge der API von einem Skript aus verwendet werden. Dies umfasst den Lesezugriff auf Eigenschaften und den Aufruf von Nur-Lese-Funktionen. Dieser Modus wird typischerweise verwendet, wenn SAP GUI zusammen mit einer Screenreader Software läuft oder für die Side Panels im SAP Business Client. Bitte beachten Sie, dass die Nur-Lese-Beschränkung für den Zustand der SAP-GUI-Sitzung auf dem Server gilt. Dies bedeutet, dass Sie keinen Aufruf ausführen dürfen, der den an den Server gesendeten Datenstrom verändert -auch wenn keine eigentliche Datenbankaktualisierung versucht wird.
sapgui/user_scripting_per_user
In einigen Fällen ist es nicht möglich das SAP GUI Scripting zu aktivieren, da kein dedizierter Anwendungsserver vorhanden ist. Dies bedeutet, dass Benutzer, die SAP GUI Scripting verwenden dürfen, auf demselben Server wie andere arbeiten. Daraus ergibt sich, dass die Unterstützung für den Server nicht aktiviert werden kann.
Das Problem kann gelöst werden, indem die Rechte zur Ausführung von SAP GUI Scripting pro Benutzer festgelegt werden. Der neue Profilparameter sapgui/user_scripting_per_user erlaubt es dem Administrator, die SAP GUI Scripting Unterstützung für bestimmte Benutzer zu aktivieren. Sofern der Administrator den Wert nicht explizit ändert, ist dieser Parameter auf FALSE gesetzt. Wenn der Profilparameter auf TRUE gesetzt ist, geschieht Folgendes:
Nachdem die Voraussetzungen und Einstellungen für das SAP GUI Scripting getroffen wurden, ist es nun an der Zeit, ein Skript aufzuzeichnen. Wie bereits in der Einleitung erwähnt, dient das GUI Scripting nicht nur für die manuelle Aufzeichnung von Skripten, sondern auch für den Zugriff auf das GUI Frontend durch andere Systeme.
In diesem Beispiel möchten wir zeigen, wie ein Skript manuell aufgezeichnet werden kann.
Im SAP Easy Access gibt es die Möglichkeit unter Mehr > SAP GUI – Einstellungen + Aktionen > Skript-Aufzeichnung und -Playback ein Skript manuell aufzuzeichnen.
Nach dem Start dieser Funktion öffnet sich ein kleines Fenster, welches das Aufzeichnen und das Playback des Skriptes steuert. Hier wird der Speicherort bestimmt und das Skript aufgezeichnet. Der rote Knopf dient dabei als Start-Knopf, um die Aufzeichnung zu starten. Der ausgegraute Knopf rechts daneben wird dann gelb und dient zur Beendigung der Aufzeichnung. Das aufgezeichnete Skript wird dann schließend als VBS-Datei an dem ausgewählten Speicherort abgelegt.
Es gibt ein paar Kleinigkeiten, die man bei der Aufzeichnung eines Skriptes im SAP-Frontend beachten sollte. Das Skript basiert auf der Sprache Visual Basic. Grundsätzlich werden also nur vom Anwender ausgeführte Klicks oder Eingaben in das Skript aufgenommen. Während der Aufzeichnung spielt es also keine Rolle, wie lange sich der Anwender auf dem jeweiligen Bildschirm aufhält, solange keine Klicks oder Eingaben getätigt werden. Im Optimalfall macht man sich im Voraus ausführliche Gedanken darüber, wie man den Prozessschritt am effizientesten und mit den wenigsten Klicks und Eingaben durchführen kann. Dies reduziert den Code und somit auch die Fehleranfälligkeit.
Hat man das Skript aufgezeichnet, so wird am ausgewählten Speicherort die VBS-Datei hinterlegt. In dieser Datei wurde der VBS-Code abgespeichert. Dieser Code kann nun auch angepasst werden, z.B. durch das Einfügen von Schleifen und Variablen. Es ist zudem möglich, Excel Dateien einzubinden, um beispielsweise die Werte der Variablen für den Durchlauf zu deklarieren/generieren sowie um Ausgaben aus der SAP GUI in eine Tabelle einzutragen. Folgend sehen Sie ein Beispiel für ein aufgezeichnetes Skript:
Falls Sie nun noch offene Fragen zum Thema haben, melden Sie sich gerne bei uns – wir helfen Ihnen weiter! Und falls Sie weitere spannende Artikel rund ums Thema S/4HANA interessieren, schauen Sie durch unsere weiteren Artikel dieses Blogs – oder abonnieren Sie ihn direkt, um keine Beiträge zu verpassen.