Lade Inhalt...

Automatisierung in der SAP GUI per Scripting

Masterarbeit 2014 117 Seiten

Informatik - Angewandte Informatik

Leseprobe

Inhaltsverzeichnis

Begriffs- und Abkürzungsverzeichnis

0 Vorwort
0.1 Effektivität und Effizienz: Ein wesentlicher Unterschied
0.2 Lösungsmethoden zur Automatisierung von Arbeitsvorgängen in SAP®
0.3 Entwicklungsumgebung und vorausgesetzte Kenntnisse
0.4 Kapitelubersicht

1. Einfuhrung in die SAP® GUI Scripting API
1.1 Die Objekthierarchie in der SAP® GUI
1.2 Die wichtigsten GUI Objekte, ihre Eigenschaften, Methoden und Events
1.2.1 GuiAppilcation
1.2.2 GuiConnection
1.2.3 GuiSession
1.2.4 GuiSessionlnfo
1.2.5 GuiMainWindow & GuiModalWindow
1.2.6 GuiButton
1.2.7 GuiComponent
1.2.8 GuiComponentCollection
1.2.9 GuiGridView
1.2.10 GuiTableControl

2 Arbeitsvorgänge erfassen und implementieren
2.1 Vorbereiten der Entwicklungsumgebung
2.1.1 Aktivieren der Scripting-Schnittstelle in der SAP® GUI
2.1.2 IntelliSense® mit den SAP® GUI Objekten in VBA® nutzen
2.2 Verbindungsaufbau per Scripting
2.2.1 Neue Verbindung herstellen
2.2.2 In bestehende Verbindungen einklinken
2.3 Unterstützende Software
2.4 GUI Objekte richtig identifizieren
2.4.1 Aufbau von SAPe GUI IDs
2.4.2 Objekt-Typ einer GUI ID bestimmen
2.4.3 Identifizierung von Objekten mit Hilfe des Scripting Trackers
2.5 Scripte aufzeichnen
2.6 Auslesen von Daten aus Tabellen
2.6.1 Daten im ALV Grid Control
2.6.2 Daten im Table Control
2.6.3 Datentypen erkennen und formatieren
2.6.4 Auslesezeiten
2.7 Exception-Handling in VBA® und der SAP® GUI
2.7.1 Programmablauf verfolgen
2.7.2 Ausnahmefälle in der SAP® GUI

3 query panel: Ein Excel® - und Access® - Add-in fur SAP® GUI Scripting
3.1 Funktionsumfang der Klassen
3.1.1 SAPGUI
3.1.2 RFC
3.1.3 Report
3.1.4 TimeAndDate
3.1.5 FilesAndFolders
3.1.6 Functionlib
3.1.7 Excel
3.2 Substitution von aufgenommenen Script-Befehlen durch Add-in-Funktionen
3.3 Beispielprojekt: Eckstart- und Eckendtermine von in Verzug stehenden Aufträgen aktualisieren

4 Resume
4.1 Tipps aus der Praxis
4.2 Sicherheitsbezogene Fragen & Antworten
4.3 Themenbezogene Netzwerke und Verweise

Anhang

Literaturverzeichnis

Abbildungsverzeichnis

Tabellenverzeichnis

Über den Autor

querypanel.de

Ehrenwörtliche Erklärung

Urheberrechtshinweis

Danksagung

Begriffs- und Abkürzungsverzeichnis

0 Vorwort

Hauptprodukt der SAP® AG ist das Softwaresystem „Enterprise Resource Planning", kurz: ERP, mit dem sämtliche Geschäftsprozesse in Unternehmen unterstützt werden können: Vom Rechnungswesen über Personalwirtschaft und Logistik bis hin zu verschiedensten branchenspezifischen Lösungen. Um die ordnungsgemäße Funktion dieses komplexen Systems zu gewährleisten, ist nicht nur ein verantwortungsbewusster Umgang mit den zu Grunde liegenden Stammdaten vorauszusetzen sondern auch deren ständige Pflege.

Die hierbei entstehenden Arbeitsprozesse sind meist wiederkehrend und sehr zeitintensiv in der Durchführung. Diesem Problem habe ich mich bei der Siemens AG im Zuge dieser Masterarbeit gewidmet. Meine herausgearbeitete Lösung mittels SAP® GUI Scripting steigert die Effizienz zahlreicher Arbeitsvorgänge und stellt ein intensiv genutztes Werkzeug in mehreren Abteilungen der Siemens AG am Standort Regensburg dar.

Vor Anfertigung dieser Arbeit gab es bis auf die API [SAP 12] keine Literatur zu diesem Thema. Zu der gesamten Ausarbeitung wurde im Rahmen dieser Thesis viel Forschungsarbeit geleistet, um die Funktionen und Tücken dieser noch jungen Schnittstelle von SAP® zu analysieren und deren Handhabung zu erlernen.

0.1 Effektivität und Effizienz: Ein wesentlicher Unterschied

„I will always choose a lazy person to do a difficult job

because, he will find an easy way to do it"

- Bill Gates

Wettbewerber, steigender Kostendruck sowie ständig zunehmende Ertragserwartungen setzen immer höhere Ansprüche an Unternehmen in sämtlichen Branchen. Die damit verbundenen Veränderungen betreffen sowohl die Unternehmensorganisation, als auch deren Prozesse und verwendeten Systeme gleichermaßen.

Effizienz und Effektivität werden umgangssprachlich meist synonym verwendet. Beide Begriffe leiten sich aus dem lateinischen Wort „efficientia", zu Deutsch „Wirksamkeit", ab. Die Wirtschaftswissenschaften weisen beiden Begriffen jedoch unterschiedliche Bedeutungen zu: Die Frage, ob die richtigen Dinge getan werden, ist eine Frage nach der Effektivität. Hingegen ist die Frage, ob die Dinge richtig beziehungsweise wirtschaftlich getan werden, eine Frage der Effizienz. Sie betont also die ökonomische Seite der eingesetzten Mittel, die Effektivität die operative.

Um ein angestrebtes Ergebnis zu erreichen, muss man in jedem Fall effektiv arbeiten. Diese Arbeit wird umso effizienter, je besser das erzielte Ergebnis und die dafür eingesetzten Mittel im Verhältnis zueinander stehen. Um dieses Aufwand-NutzenVerhältnis bei einem fixen Ziel zu verbessern, müssen somit die Arbeitsmittel effizienter gestaltet werden.

Bei vielen Geschäftsprozessen, die über die SAP® GUI ausgeführt werden, ist eine solche Arbeitsmitteloptimierung in Form einer anwendergesteuerten Automatisierung möglich. Diese spart nicht nur viel wertvolle Arbeitszeit, sondern eliminiert auch die Fehleranfälligkeit von monotonen Arbeitsvorgängen, die insbesondere durch das manuelle Übertragen und Eingeben von Daten auftreten können.

Die daraus gewonnene Arbeitszeit kann für anspruchsvollere Aufgaben verwendet werden, ausbleibende Fehler sparen daraus resultierende Kosten und Behebungszeit ein.

0.2 Lösungsmethoden zur Automatisierung von Arbeitsvorgängen in SAP®

Grundsätzlich gibt es zwei Möglichkeiten, Arbeitsabläufe in SAP® Systemen schlanker zu gestalten. Beide haben sehr unterschiedliche Vor- und Nachteile.

Methode 1: Programmierung mit ABAP

ABAP ist eine Programmiersprache, die speziell für die Massendatenverarbeitung in betriebswirtschaftlichen Anwendungen von SAP®, wie beispielsweise dem ERP, entwickelt wurde. Mit ABAP lassen sich gebündelte Arbeitsabläufe für alle Anwender eines Systems gleichzeitig implementieren: Sie werden fester Bestandteil des Produktivsystems.

Problematisch ist aber, dass ABAP-Erweiterungen nur von hierzu befugtem Personal - also Entwicklern oder Administratoren - und mit einem kostspieligen Entwicklerschlüssel von SAP® integriert werden können. In der Praxis werden daher im Regelfall nur die langfristig wichtigsten Automatisierungen umgesetzt.

Methode 2: GUI Scripting

Beim Scripting in der SAP® GUI werden Methoden und Eigenschaften der einzelnen Objekte in der GUI benutzt, um Aktionen durchzuführen und Daten auszulesen. Grundsätzlich sind dabei alle Aktionen möglich, die auch durch die manuelle Anwendung der GUI durch einen Benutzer möglich sind. Es gelten dieselben benutzerspezifischen Einschränkungen und Möglichkeiten.

Die anspruchsvollere Aufgabe beim GUI Scripting besteht vor allem darin, auf Ausnahmesituationen und Fehler in der SAP® GUI während der Laufzeit richtig zu reagieren.

Fazit

Da Automatisierungen per GUI Scripting für Entwickler oder auch interessierte Anwender wesentlich einfacher zu integrieren sind und keine unternehmenspolitischen Hürden bilden, stellt sich diese Kompetenz als interessant und vorteilhaft gegenüber der Programmierung in ABAP dar. Berücksichtigt werden muss jedoch, dass in den meisten Fällen von Zeit zu Zeit Anpassungen in den erstellten Scripten notwendig sein werden, insbesondere bei einem Update der SAP® GUI.

Sowohl diese Gegebenheiten, als auch die Tatsache, dass es zu dieser noch jungen SAP® Schnittstelle keine Literatur gibt, waren eine große Motivation für diese Arbeit.

0.3 Entwicklungsumgebung und vorausgesetzte Kenntnisse

Die VBA®-Entwicklungsumgebung „Integrated Development Environment", kurz IDE, dient zur Implementierung eigener Prozeduren in der Microsoft® Office®-Familie. Gerade wenn es darum geht, die bereits sehr umfassenden Funktionen von beispielsweise Excel® zu erweitern, ist VBA®, mit entsprechender Programmierkenntnis, das richtige Werkzeug hierfür. Diese Arbeit stützt sich dabei auf Microsoft® Excel® als Entwicklungsumgebung, da sich mit dieser Software gleichzeitig Daten effizient verarbeiten als auch veranschaulichen lassen.

Excel® ist bereits in seiner Ursprungsform ein mächtiges Instrument zur Tabellenkalkulation mit einer Vielzahl an verschiedensten Funktionen zur Kalkulation, Datenanalyse und -präsentation. VBA® kann dabei diesen Umfang noch einmal erweitern und an die jeweiligen Bedürfnisse anpassen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1: Der Visual Basic® Editor (IDE)

Da eine Einführung in VBA® den Rahmen dieser Ausarbeitung bei Weitem sprengen würde, sind einige Vorkenntnisse erforderlich. Um erfolgreich Lösungen für SAP® mit Hilfe dieser Arbeit zu erstellen, sollte man bereits über folgende Kenntnisse der VBA®- Programmierung verfügen:

Implementierung und Anwendung von Methoden und Funktionen

Deklaration von Variablen und Konstanten

Kenntnisse über den Gültigkeitsbereich von Variablen

Umgang mit Arrays

Anwendung von Typumwandlungen

Verschachtelte Schleifen und Wenn-Abfragen

0.4 Kapitelubersicht

Diese Ausarbeitung ist in vier Abschnitte gegliedert. Im ersten Teil wird die Struktur der SAP® GUI in Bezug auf deren Programmierschnittstelle in den wichtigsten Punkten detailliert erläutert.

Der zweite Abschnitt befasst sich bereits mit der praktischen Anwendung und geht dabei besonders auf Problemgebiete und das Exception-Handling ein.

Im darauf folgenden Kapitel 3 wird ein eigens entwickeltes Excel®- und Access®-Add-in für SAP® GUI Scripting vorgestellt. Mit einem Beispielprojekten aus der beruflichen Praxis werden die Vorteile dieses Add-ins veranschaulicht.

Abschließend sind im letzten Kapitel praxisbezogene Tipps zu finden. Insbesondere wird auch noch auf sicherheitsbezogene Fragen und Bedenken eingegangen.

1. Einfuhrung in die SAP® GUI Scripting API

Der Begriff API stammt aus dem englischen Sprachraum und ist die Kurzform von „Application Programming Interface". Frei ins Deutsche übersetzt bedeutet dies so viel wie „Schnittstelle zur Anwendungsprogrammierung".

Diese Schnittstelle besteht seit Version 6.20 des SAP® FrontEnd und wird mit diesem standardmäßig ausgeliefert. Über sie ist es möglich, auf alle Elemente der SAP® GUI zuzugreifen. Diese Elemente - im Programmierjargon „Objekte" genannt - sind in einer entsprechenden API dokumentiert, welche in der Regel im Installationspfad von SAP® unter C:\Program Files (x86)\SAP\FrontEnd\SAPgui\SAPguihelp zu finden ist. Da dieses Dokument leider meist nur spärliche Beschreibungen und kaum Anwendungsbeispiele bietet, konzentriert sich das folgende Kapitel detailliert auf die wichtigsten Teile dieser API. In diesem Kapitel sei daher grundsätzlich auf [SAP 12] verwiesen.

1.1 Die Objekthierarchie in der SAP® GUI

Der Zugriff auf die SAP® GUI findet über streng hierarchisch geordnete Top-LevelObjekte statt. Dabei bildet die GuiApplication den Einstiegspunkt zu den einzelnen SAP® Systemen, die als GuiConnections bezeichnet werden. Jede dieser Verbindungen besteht aus mindestens einer bis maximal sechs GuiSessions, den einzelnen Instanzen, in denen Transaktionen durchgeführt werden.

Verbindungen können manuell über das SAP® Logon Pad oder über die Methode OpenConnection bzw. OpenConnectionByConnectionString der GuiApplication aufgebaut werden. Mit Verbindungsaufbau wird gleichzeitig die erste GuiSession erstellt und angezeigt. In der Regel können bis zu fünf weitere Sessions per CreateSession- Methode der GuiConnection erstellt werden.

Während die GuiApplication die gesamte Anwendung darstellt, ist eine GuiConnection lediglich ein Zugangspunkt zu einer bestehenden Verbindung in ein SAP® System. Alle Transaktionen werden immer in einer untergeordneten GuiSession durchgeführt. Jede dieser Instanzen enthält alle wichtigen Informationen wie Benutzer, SID und Client in dem Objekt GuiSessionlnfo (mehr dazu in Abschnitt 1.2.4 GuiSessionlnfo). Das jeweilige Hauptfenster einer Session bildet die Klasse GuiMainWindow, alle weiteren Fenster sind vom Typ GuiModalWindow. Grafisch stellt sich dieser Aufbau der soeben beschriebenen obersten vier Ebenen wie folgt dar:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2: Hierarchische Darstellung der GUI-Objekte und deren Kinds-Objekte

Top-Level-Interface-Objekte

Jeder GuiSession unterliegt als Kinds-Objekt ein GuiMainWindow, welches den Einstiegspunkt für die Interaktion mit dieser Instanz bildet.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3 Die Kinds-Objekte des GuiMainWindow

Nachfolgende Abbildung 4 beschreibt die visuelle Abgrenzung Top-Interface-Objekte eines GuiMainWindows.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4: Die Aufteilung der SAP® GUI Oberfläche

Wichtiger Hinweis: Zu beachten ist, dass die Verfügbarkeit von einigen Objekten auf dem gewählten Design-Modus basiert. Die oben dargestellte Titelleiste ist beispielsweise im klassischen Design der SAP® GUI nicht verfügbar. Die Verwendung des Befehls

Session.findByld("wnd[0]/titl").Text

würde eine Exception auslösen, wenn das klassische Design wie in Abbildung 5 aktiv ist.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 5: Die SAP® GUI in klassischer Ansicht

1.2 Die wichtigsten GUI Objekte, ihre Eigenschaften, Methoden und Events

Nachfolgend führe ich die, meiner Einschätzung nach wichtigsten Objekte der SAP® GUI Scripting API, detailliert auf:

Für die bereits im letzten Abschnitt ausführlich erläuterten Objekte GuiApplication, GuiConnection und GuiSession wird keine gesonderte Einleitung mehr gegeben, sondern lediglich die jeweilig wichtigsten Methoden, Eigenschaften und Events beschrieben.

1.2.1 GuiAppilcation

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 1: Die wichtigsten Methoden der GuiApplication

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 2: Die wichtigsten Eigenschaften der GuiApplication

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 3: Die wichtigsten Events der GuiApplication

1.2.2 GuiConnection

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 4: Die wichtigsten Methoden der GuiConnection

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 5: Die wichtigsten Eigenschaften der GuiConnection

1.2.3 GuiSession

Tabelle 6: Die wichtigsten Methoden der GuiSession

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 7: Die wichtigsten Eigenschaften der GuiSession

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 8: Die wichtigsten Events der GuiSession

1.2.4 GuiSessionlnfo

Die GuiSessionInfo ist Teil des GuiSession-Objekts und enthält Informationen rund um die jeweilige SAP®-Instanz. Einige dieser Angaben findet man beispielsweise in der rechten unteren Ecke in der SAP® GUI (siehe hierzu Abbildung 4 und Abbildung 5 auf Seite 8). Zu den nach meiner Einschätzung wichtigsten Eigenschaften der GuiSessionlnfo gehören:

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 9: Die wichtigsten Eigenschaften der GuiSessionInfo

1.2.5 GuiMainWindow & GuiModalWindow

Tabelle 10: Die wichtigsten Methoden des GuiMainWindow und des GuiModalWindow

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 11: Die wichtigsten Eigenschaften des GuiMainWindow und des GuiModalWindow

Abbildung in dieser Leseprobe nicht enthalten

1.2.6 GuiButton

Als GuiButton sind alle Schaltflächen innerhalb der SAP® GUI definiert, beispielsweise in den Toolbars.

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 12: Die wichtigsten Methoden des GuiButton

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 13: Die wichtigsten Eigenschaften des GuiButton

1.2.7 GuiComponent

Als GuiComponent wird die Basisklasse der meisten Objekte der SAP® GUI bezeichnet. Sie wurde entworfen, um eine generische Programmierung zu ermöglichen. So lassen sich Objekte umfangreich nutzen, ohne deren exakten Typ zu kennen. Allerdings fehlt bei der Verwendung von GuiComponent dann auch die in Abschnitt 2.1.2 IntelliSense® mit den SAP® GUI Objekten in VBA® nutzen beschriebene Intellisense-Funktion. Dadurch bedingt sollten Klassen, wann immer es möglich ist, richtig identifiziert und entsprechend deklariert werden (siehe hierzu Abschnitt 2.4 GUI Objekte richtig ).

Tabelle 14: Die wichtigsten Eigenschaften der GuiComponent

Abbildung in dieser Leseprobe nicht enthalten

1.2.8 GuiComponentCollection

Die GuiComponentCollection besteht aus einzelnen GuiComponents und dient lediglich zu deren Bündelung. Die zugehörigen wichtigsten Methoden und Eigenschaften sind daher überschaubar.

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 15: Die wichtigsten Methoden der GuiComponentCollection

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 16: Die wichtigsten Eigenschaften der GuiComponentCollection

1.2.9 GuiGridView

Das GuiGridView, in SAP® als ALV Grid Control bekannt, ist eine Datentabelle, die beispielsweise in der Transaktion ZE16 aktiviert werden kann. Bereits integriert sind sehr viele nützliche Funktionen wie beispielsweise:

Spaltenbreiten verändern

Spalten ausblenden

Spaltenreihenfolgen bestimmen

Spaltenmarkierungen

Sortierfunktionen

Freie Definition von Summenstufen

Automatische Summenbildung

Such-, Filter- und Druckfunktionen

Schnittstelle zur Integration in Microsoft® Excel®

Editor-Funktionalität

Ereignis-Unterstützung (z.B. Doppelklick auf Datensatz)

Das Objekt bietet alle Methoden und Eigenschaften, um effizient damit arbeiten zu können. Es gibt lediglich einen wichtigen Punkt, den man während der Interaktion per Scripting beachten sollte: Bei großen Datenmengen findet ein Nachladen der Inhalte erst nach dem Scrolling statt. Würde beispielsweise gleich nach dem Anzeigen eines ALV Grid Controls der 500. Datensatz abgerufen werden, ist es wahrscheinlich, dass lediglich ein Leerstring als Ergebnis zurückliefert wird - ohne dass hierbei eine Exception ausgelöst wird. Daher sollte immer mit SetCurrentCell der auszulesende Datensatz vorher fokussiert und damit geladen werden.

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 17: Die wichtigsten Methoden des GuiGridView

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 18: Die wichtigsten Eigenschaften des GuiGridView

1.2.10 GuiTableControl

Beim GuiTableControl handelt es sich wie beim ALV Grid Control ebenfalls um einen Datenbrowser, der jedoch etwas komplexer zu handhaben ist als sein Pendant (siehe hierzu Abschnitt 2.6 Auslesen von Daten aus Tabellen).

Obwohl in den letzten Jahren das ALV Grid Control so manches Table Control abgelöst hat, ist mit einer vollständigen Ablösung nicht zu rechnen, da ein gewichtiger Unterschied zwischen den beiden Controls besteht: Während bei der Listendarstellung eines Table Controls die anzuzeigenden Daten immer seitenweise an den FrontendRechner übertragen werden, wird beim ALV Grid Control der gesamte Inhalt komplett übertragen. Demnach ist das Table Control für eine Massendatenverarbeitung einsetzbar, das ALV Grid Control hingegen nicht.

Tabelle 19: Die wichtigsten Methoden des GuiTableControls

Abbildung in dieser Leseprobe nicht enthalten

Tabelle 20: Die wichtigsten Eigenschaften des GuiTableControls

Abbildung in dieser Leseprobe nicht enthalten

2 Arbeitsvorgänge erfassen und implementieren

Mit diesem Kapitel erfolgt der Übergang zur Praxis. Es wird schrittweise der Weg zum Aufbau eines automatisierten Arbeitsablaufes dargestellt, beginnend mit der Vorbereitung der Entwicklungsumgebung.

2.1 Vorbereiten der Entwicklungsumgebung

2.1.1 Aktivieren der Scripting-Schnittstelle in der SAP® GUI

Um einen Zugriff auf die SAP® GUI überhaupt möglich zu machen, muss vorab die entsprechende Einstellung in den Optionen der SAP® GUI vorgenommen werden. Hierzu wählt man aus dem Bereich „Barrierefreiheit & Scripting" die Seite „Scripting" und setzt einen Haken bei „Scripting aktivieren". Falls gewünscht, kann bei jedem Verbindungsaufbau durch ein Script eine Benachrichtigung aktiviert werden.

Abbildung 8: Scripting-Optionen der SAP® GUI

Abbildung in dieser Leseprobe nicht enthalten

2.1.2 IntelliSense® mit den SAP® GUI Objekten in VBA® nutzen

IntelliSense® ist ein von Microsoft® angebotenes Hilfsmittel zur automatischen Vervollständigung bei der Eingabe von Quellcode. Dabei erhält der Entwickler während seiner Arbeit zusätzliche Informationen über einzelne Methoden und Eigenschaften, die ihm die Arbeit erleichtern und die insbesondere den Umfang des manuell einzugebenden Quellcodes reduzieren sollen.

Diese Funktion ist rein optional und erleichtert die Arbeit lediglich. Ein Beispiel für einen Intellisense-Vorschlag durch VBA® wird in der folgenden Abbildung veranschaulicht.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 9: Intellisense-Funktion während der Eingabe von Programmcode

Da VBA® grundsätzlich die Objekte der SAP® GUI Scripting API nicht kennt, müssen diese zunächst „angelernt" werden. Dies geschieht über einen Verweis auf eine entsprechende Bibliothek, die sämtliche Informationen über die SAP® GUI Objekte bereitstellt. Zu finden ist diese Datei in aller Regel direkt im Installationsordner des SAP® FrontEnd:

C:\Programme\SAP\FrontEnd\SAPgui\sapfewse.ocx

Um einen entsprechenden Verweis in VBA® hinzuzufügen, öffnet man zunächst den Verweis-Manager über den Menüpunkt „Extras".

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 10: Der Weg zu den Verweisen im VBA®-Editor

Über die Schaltfläche „Durchsuchen" lässt sich die Datei im SAP®-Pfad suchen und hinzufügen:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 11: Der Verweise-Manager in VBA®

In den verfügbaren Verweisen sollte dann die SAP® GUI Scripting API enthalten und aktiviert sein.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 12: Der Verweise-Manager in VBA® mit aktivierter SAP® GUI Scripting API

Wichtiger Hinweis: Sollten Objekt-Deklarationen aus der SAP® GUI Scripting API im Code benutzt werden, funktionieren diese nur, solange ein Verweis auf die API besteht. An Arbeitsplätzen, auf denen der Verweis nicht erfolgreich hergestellt werden kann, weil beispielsweise die sapfewse.ocx nicht gefunden werden konnte, kann das Script nicht ausgeführt werden, da eine Exception während der Kompilierung auftritt. Will man das Script hiervon unabhängig gestalten, sollten alle GUI-Objekte lediglich als Object deklariert werden.

2.2 Verbindungsaufbau per Scripting

Der grundlegendste Teil eines funktionierenden Scripts ist eine Verbindung zu einem SAP® System. Um diese herzustellen, gibt es beim GUI Scripting zwei Möglichkeiten: eine neue Verbindung aufbauen oder eine bereits bestehende Verbindung nutzen. Beide Möglichkeiten werden nachfolgend detailliert erläutert.

2.2.1 Neue Verbindung herstellen

Der Aufbau einer neuen Verbindung erfolgt über die GuiApplication. Über die beiden Methoden OpenConnection und OpenConnectionByConnectionString ist der Aufbau zu einem SAP® System möglich. Wie bereits in 1.2.1 GuiApplication beschrieben, benötigt OpenConnection die Beschreibung des Systems, wie sie im SAP® Logon Pad dargestellt ist. Da diese Beschreibung an jedem Arbeitsplatz beliebig angepasst werden kann, ist ein Verbindungsaufbau über diese Methode nur sinnvoll, wenn das Script ausschließlich auf demselben Rechner ausgeführt werden soll.

Da die Praxis meist Anwender auf verschiedenen Arbeitsplätzen mit sich bringt, empfiehlt sich der Verbindungsaufbau über die zuverlässigere Methode per OpenConnectionByConnectionString. Sie benötigt die exakte Adresse des Servers, im englischsprachigen SAP® Jargon: ConnectionString. Im einfachsten Fall besteht dieser Parameter aus der IP Adresse des Hosts und einer Portnummer. Beide Werte werden durch „/H/" (für Host) und „/S/" (für Service) gekennzeichnet. Beispielsweise ergibt sich aus der Host Adresse 172.16.64.17 mit dem Port 3200 folgender ConnectionString:

/H/172.16.64.17/S/3200

Ein fehlerhafter Login-Versuch kann entweder über eine entsprechende Meldung in der Statusbar erkannt werden oder über den Mandanten (Client), hinterlegt in der SessionInfo. Ist der Wert Client gleich „000", ist die Session nicht eingeloggt. Zur Prüfung empfiehlt es sich, den String-Wert mit der Funktion Int() als Ganzzahl zu betrachten und mit 0 zu vergleichen.

Folgender Code veranschaulicht, wie man eine neue Verbindung über die letztere der soeben vorgestellten Methoden aufbaut. Analog kann mit demselben Quellcode auch eine Verbindung per OpenConnection aufgebaut werden. Hierzu sind lediglich der Inhalt der Konstanten strConnectionString und der Methodenaufruf anzupassen. Zum Login wird das Passwort über eine InputBox() vom Anwender abgefragt. Ob der Login erfolgreich war, wird über den Mandanten geprüft.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 13: Programmcode zum Erstellen einer neuen Verbindung zu einem SAP® System

2.2.2 In bestehende Verbindungen einklinken

Sowohl aufgrund der soeben beschriebenen Einschränkungen beim Erstellen einer neuen Verbindung durch SAP® GUI Scripting als auch wegen Sicherheitsaspekten empfiehlt es sich stets, eine bereits bestehende Verbindung für den Script-Betrieb zu nutzen. Wie bereits in Abschnitt 1.1 Die Objekthierarchie in der SAP® GUI erläutert, finden sich die einzelnen Verbindungen als GuiConnection in der GuiApplication wieder.

Vor Ausführung eines Scripts muss eine hierfür passende GuiSession gewählt werden, in der die Interaktionen stattfinden sollen. Sicher soll ein Script nie in einem beliebigen SAP® System aufgeführt werden. Um die passende GuiSession zu finden, müssen alle GuiConnections auf die gewünschte Verbindung hin durchsucht werden. Zur Identifizierung einer Verbindung kann die SessionInfo einer beliebigen GuiSession ausgelesen werden. Die Eigenschaften SystemName und Client repräsentieren dabei die SID des Systems und den eingeloggten Mandanten.

Nachfolgender Code zeigt beispielhaft, wie man alle GuiSessions aller bestehenden GuiConnections auflistet und deren Eigenschaften ausliest.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 14: Programmcode zum Listen aller SAP® GUI Sessions

Der vorangegangene Code erzeugt eine Tabelle, die alle Informationen zu den offenen Sessions darstellt.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 15: Ergebnistabelle mit Auflistung verschiedener GUI Sessions und deren Eigenschaften

Nicht eingeloggte Sessions können unter anderem über die Eigenschaft Client (entspricht dem Mandanten) identifiziert werden. Ist dieser Wert gleich „000", so ist die Session nicht eingeloggt und eine Verwendung für Scripte damit nicht möglich.

Folgender Code zeigt beispielhaft, wie man alle bestehenden Verbindungen nach dem System „PS5" durchsucht und bei Erfolg die erste Session dieser gewünschten Verbindung der Objektvariablen Session zuteilt.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 16: Programmcode zur Identifzierung und Verbindung zu einem SAP® System

2.3 Unterstützende Software

Gerade bei der Implementierung von umfangreicheren Scripts empfiehlt es sich, auf Tools zurückzugreifen, die die Suche nach den benötigten Objekten und deren Methoden erleichtern. Nachfolgend werden drei Werkzeuge vorgestellt, welche die Arbeit an Automatisierungen in der SAP® GUI effizienter gestalten.

Der SAP® Script-Rekorder

Seit Veröffentlichung der Version 6.20 der SAP® GUI befindet sich darin für alle Anwender verfügbar ein einfacher Script-Rekorder. Der klare Aufbau erinnert an ein Aufnahme- und Abspielgerät: Es gibt jeweils eine Schaltfläche für Abspielen, Aufzeichnen und Stoppen.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 17: Der SAP® Script-Rekorder mit erweiterten Einstellungsmöglichkeiten

Gestartet werden kann der Rekorder aus dem Options-Menü jeder beliebigen Session unter „Script-Aufzeichnung und -Playback...". Ausführliche Instruktionen zum Umgang mit diesem Werkzeug folgen unter 2.5 Scripte aufzeichnen.

[...]

Details

Seiten
117
Jahr
2014
ISBN (eBook)
9783656687177
ISBN (Buch)
9783656687153
Dateigröße
6 MB
Sprache
Deutsch
Katalognummer
v276040
Institution / Hochschule
Ostbayerische Technische Hochschule Regensburg
Note
1,0
Schlagworte
SAP GUI SAPGUI Scripting RFC VBA VisualBasic Script Excel Access Datenbanken Automatisierung VisualBasic for Applications

Autor

Teilen

Zurück

Titel: Automatisierung in der SAP GUI per Scripting