Wie Hilfen SAP -Anwendungen aktiv helfen
Transcrição
Wie Hilfen SAP -Anwendungen aktiv helfen
Tricktresor Wie Hilfen SAP®-Anwendungen aktiv helfen ® von Strefan Schnell SAP GUI Scripting Aufgrund stetig steigender Funktionsumfänge werden SoftwareOberflächen im ERP-Bereich immer komplexer und sind für den Anwender oftmals nur noch schwer zu durchschauen. Zusätzlich sind über einen längeren Zeitraum gleich bleibende Arbeitsabläufe im Business auch eher selten anzutreffen. Diese Dynamik führt dazu, dass Aufgaben, die einmalig oder selten ausgeführt werden, schnell zu erheblichen Zeitaufwänden führen können. Skripte, die in Online-Hilfen verwendet werden, liefern einen Ansatz dies zu umgehen. Sie können den Anwendern direkt zeigen und erläutern wie vorzugehen ist. Neben dem Lerneffekt steht die Realisierung der Lösung im Fokus. Dabei sind die Skripte in den bekannten Informationsrahmen der Hilfe eingebettet und stehen im inhaltlichen Kontext des Hilfedokumentes und seiner Struktur. Das SAP® GUI Scripting ist ein Objektmodell das den SAP ® GUI zu seiner Laufzeit repräsentiert. Mit ihm können Interaktionen des Users mit dem GUI automatisiert werden. Auf jedes Element des GUI kann über die Objekthierarchie des SAP® GUI Scripting zugegriffen werden. Es ist Bestandteil jeder GUI-Installation. Die Schnittstelle besteht aus der COM-Bibliothek SAPFEWSE.OCX und darüber hinaus gibt es noch eine Reihe weiterer Bibliotheken. Jede Programmiersprache, die eine COM-Schnittstelle anbietet, kann das SAP® GUI Scripting nutzen, z.B. VBScript®. Zur Unterstützung der Anwender werden heutzutage in Software-Oberflächen gezielte Sprünge in die Hilfe und beschreibende Hilfeelemente integriert. Um aus der Perspektive der Hilfe diesen Kreis zu schließen sind in ihr integrierte Funktionen die Folge. Damit wird die Hilfe für den Anwender komplettiert. Die Abgrenzungen zwischen der Programmnutzung, zur Erledigung einer Arbeitsaufgabe, und der zugehörigen Dokumentation, zum Verständnis der Arbeitsaufgabe, wird für den Anwender aufgehoben. Verwendet elektronische Dokumentation Verwendet beschreibende Hilfselement einem VB -Skript an; es sei an dieser Stelle noch nebenbei erwähnt, dass natürlich hier auch JavaScript verwendet werden kann. Zur Erstellung unseres ersten Skriptes verwenden wir die Skript-Aufzeichnungsfunktion des SAP® GUI. Sie ist in der ToolBar beim Button Lokales Layout anpassen (Alt+F12) zu finden. Neben den notwendigen Tags einer HTMLDatei sehen wir im head-segment eine script-Deklaration. In ihr ist eine SubProzedur mit dem Namen Test definiert sie öffnet einfach nur eine MessageBox. Im body-segment ist, neben einem Text, ein Button definiert. Wird er betätigt, also tritt das Ereignis onClick ein, wird die Prozedur Test ausgeführt. Dieser minimale Rahmen reicht für unsere weiteren Betrachtungen jetzt schon aus. Natürlich bietet sich an dieser Stelle jetzt an alle Möglichkeiten von HTML, CSS usw. einzusetzen und eine umfangreiche Hilfe inhaltlich und visuell auszuprägen. Wir konzentrieren uns nun auf die Verwendung des SAP® GUI Scripting im VBScript®. Nach der Auswahl und der Festlegung in welchem Pfad die Skriptdatei gespeichert werden soll, kann die Aufzeichnung beginnen. ® Programmnutzung (Verkettung von Funktionsaufrufen) Führt Funktionen (Skripte) aus <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> Im Folgenden soll in einfachen Schritten ein integrativer Ansatz gezeigt werden, wie sich Skripte in HTML-Dateien einbetten bzw. verwenden lassen. Dann mittels dieser Skripte, unter Verwendung des SAP® GUI Scripting, SAP®-Anwendungen angesprochen werden können. Und schließlich alles in eine HilfeDatei verpackt und mit ihr verbunden wird. Im Weiteren wird gezeigt wie diese Hilfe aus SAP® mit ABAP® angesprochen und verwendet werden kann. Durch die Anwendung unterschiedlicher Software-Techniken, Plattformen und deren Verknüpfung erscheint dieses Vorgehen auf den ersten Blick kompliziert. Bei genauerem Hinsehen enthüllt sich jedoch, mit jedem einzelnen Schritt, eine Einfachheit, die simpel genutzt werden kann. Die Stärke liegt in den Potentialen der Vernetzung. Der HTML-Rahmen mit VBScript® Schauen wir uns einen HTML-Rahmen mit <title> HTML-Test </title> <script type="text/VBScript"> <!-Sub Test() MsgBox "Dies ist ein Test" End Sub '--> </script> </head> <body> HTML-Test<br /> <form action=""> <input type="button" value="MsgBox" onClick="Test()"> </form> </body> </html> Tricktresor '-Begin------------------------------------------------------'-Ermittlung des laufenden SAP GUI-------------------------If Not IsObject(application) Then Set SapGuiAuto = GetObject("SAPGUI") Set application = SapGuiAuto.GetScriptingEngine End If '-Setzen der Verbindung------------------------------------If Not IsObject(connection) Then Set connection = application.Children(0) End If '-Setzen des Modus-----------------------------------------If Not IsObject(session) Then Set session = connection.Children(0) End If '-Ausfuehrung der Aktivitaeten-----------------------------session.findById("wnd[0]/tbar[0]/okcd").text = "/nSE80" session.findById("wnd[0]/tbar[0]/btn[0]").press Da wir jedoch diesbezüglich alle der Verantwortung gegenüber stehen, entsprechende Protektionsmechanismen zu installieren und zu betreiben, verändert sich das Risiko damit nicht maßgeblich - solange wir uns verantwortungsvoll verhalten. Leider ist es erfahrungsgemäß eher so, dass geäußerte Sicherheitsbedenken oftmals Innovationen stoppen. Da wird mehr Zeit auf die Ausmalung theoretischer Katastrophen-Szenarien verwendet, als dass darüber nachgedacht wird, wie ein praktikabler Schutz erreicht werden kann. Das Ausführen von Dateien unterliegt im Kontext des Internet Explorers®, mit dessen Modulen auch die Online-Hilfen angezeigt werden, einer besonderen Überwachung. Es ist im Standard ohne Zustimmung des Anwenders weder möglich ein Skript auszuführen, noch ein Programm zu starten. Dies muss explizit bestätigt werden. '-End--------------------------------------------------------<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> Der einfache Aufruf des Objekt Navigators, mit dem Transaktionskode SE80, sieht als VBScript®-Datei wie oben gezeigt aus - hier mit zusätzlichen Kommentaren zum besseren Verständnis versehen. Es wird die Scripting Engine einer bestehenden SAP® GUI Instanz erfragt. Von ihr wird die Verbindung (Connection) und der Modus (Session) mit jeweils Null gesetzt. In diesem Modus wird dem Kommandofeld der Text /nSE80 übergeben und der Button Weiter der ToolBar betätigt. Die Transaktion wird ausgeführt und der Objekt Navigator gestartet. An dieser Stelle können jetzt weitere erklärende Elemente wie z.B. ToolTips und Wartezyklen eingesetzt werden, um die Vorgehensweise dem Betrachter transparent zu machen. Um nun dieses Skript im HTML-Kontext zu starten, muss der HTML-Rahmen etwas modifiziert werden. Die auffälligste Änderung ist die zusätzliche Funktion GetCurrDir. Mit ihr wird das aktuelle Verzeichnis der HTML-Datei ermittelt, unabhängig davon, ob sie sich in einer CHMHilfe befindet oder nicht. Die Ermittlung des Pfades ist wichtig, um die Ausführung des Skriptes zu ermöglichen, da es sonst Schwierigkeiten mit den Sicherheitseinstellungen des Internet Explorers® geben könnte. Die Skript-Datei muss sich im gleichen Verzeichnis wie die HTML-Datei bzw. OnlineHilfe befinden. In der Sub-Prozedur Test wird eine Windows® Scripting Shell erzeugt und mit der Methode Run das Skript ausgeführt. An dieser Stelle sei noch der Hinweis angebracht, dass mit dieser Vorgehensweise nicht nur VBScript®-Dateien gestartet werden können. Alle Dateien können über diesen Weg gestartet werden - auch Programme. Dies bedeutet, neben neuen Einsatzmöglichkeiten, auch ein verändertes Risikopotential. <title> HTML-Test </title> <script type="text/VBScript"> <!-'-Function GetCurrentDirectory-----------------------Function GetCurrDir() URL = CStr(window.location.href) If LCase(Left(URL, 8)) = "file:///" Then File = Right(URL, Len(URL) - 8) GetCurrDir = Left(File, InStrRev(File, "/")) ElseIf LCase(Left(URL, 14)) = "mk:@msitstore:" Then File = Right(URL, Len(URL) - 14) GetCurrDir = Left(File, InStrRev(File, "\")) ElseIf LCase(Left(URL, 7)) = "ms-its:" Then File = Right(URL, Len(URL) - 7) GetCurrDir = Left(File, InStrRev(File, "\")) End If End Function '-Sub Test-------------------------------------------Sub Test() Set oShell = CreateObject("WScript.Shell") oShell.run GetCurrDir() & "Script1.vbs" End Sub '--> </script> </head> <body> HTML-Test<br /> <form action=""> <input type="button" value="Starten" onclick="Test()"> </form> </body> </html> Tricktresor CHM-Verpackung ® ® Online-Hilfen unter Microsoft Windows bestehen meistens aus kompilierten HTMLDateien, die als CHM-Dateien bekannt sind. Sie beinhalten im Normalfall alle notwendigen Dateien, in diesem Beispiel jedoch mit Ausnahme der ausführbaren Skripte. Um eine CHM-Datei zu erstellen, benötigt man den Microsoft® HTML Help Workshop. Dabei handelt es sich um ein Autorenwerkzeug mit einer einfachen grafischen Benutzeroberfläche zur Erstellung von Projekten, Indizes und Inhaltsverzeichnissen, sowie einem Compiler für die Generierung der Online-Hilfesysteme. Der HTML Help Workshop kann von der Microsoft® Homepage geladen und einfach installiert werden. Er ist frei verfügbar. Nach der Auswahl zur Erstellung eines neuen Projektes wird man mit Dialogen durch die grundlegenden Einstellungen geführt. "-Begin------------------------------------------------------Report zCallHelp. "-Type-Pools-----------------------------------------------Type-Pools OLE2. "-Main-----------------------------------------------------Perform CallHelp Using 'C:\Dummy\Test.chm'. "-Form CallHelp--------------------------------------------Form CallHelp Using HelpFileName Type String. "-Variables--------------------------------------------Data SAPGUI Type Ole2_Object. Data Result Type Integer. Create Object SAPGUI 'Sapgui.InfoCtrl.1'. If SAPGUI-Handle > 0. Call Method Of SAPGUI 'ShellExecute' = Result Exporting #1 = 'open' #2 = HelpFileName #3 = '' #4 = '' #5 = 1. Free Object SAPGUI. EndIf. EndForm. "-End--------------------------------------------------------- Zusammenfassung Am Ende entsteht eine Projektdatei und nach der Kompilierung liegt eine Online-Hilfe im CHM-Format vor. Wird nun der Button Starten betätigt, wird das Skript Script1.vbs ausgeführt und damit im entsprechenden SAP®-Modus die Transaktion SE80 ausgeführt. ® ABAP ruft um Hilfe Um nun mit ABAP® die Online-Hilfe zu starten, bedienen wir uns der Funktion ShellExecute. Mit dieser Funktion wird eine bestimmte Operation, in unserem Fall open, mit der benannten Datei, hier Test.chm, auf dem Präsentationsserver durchgeführt. Die mit dieser Datei verknüpften Anwendung HH.exe (HTML Help executable) wird dabei automatisch gestartet. Wer nicht direkt die SAP® GUI COMImplementierung verwenden möchte, kann dies auch über die Klasse CL_GUI_FRONTEND_SERVICES und die Methode EXECUTE vornehmen - jedoch läuft es am Ende auf den gleichen Aufruf der COMFunktion hinaus. Der in diesem Rahmen vorgestellte Ansatz bietet einen geschlossenen Kreis zwischen Programmfunktionen und Hilfeinformationen mit Hilfefunktionen zu Programminformationen. Die Verbindungen zwischen Informationen im HTMLresp. CHM-Format, mit VB®-Skripten und dem SAP® GUI Scripting, sowie ABAP® zeigen andere Perspektiven der AnwenderUnterstützung. Dies z.B. gerade bei Konfigurationsaktivitäten und Initialisierungsvorgängen, die im Normalfall einmalig durchgeführt werden, aber häufig viele Fragen beim Anwender mit sich führen. Sicherlich erfordert dies eine umfangreichere integrative Denkweise und Zusammenarbeit bei der Erstellung oder der Pflege der Online-Hilfen, dürfte aber den Mehrwert für den Anwender beträchtlich erhöhen. Daneben ist es denkbar, dass mit diesem Ansatz der Bedarf weiterer Szenarien ebenfalls abgedeckt werden kann, z.B. für Hands-OnSchulungen. Auch der In-House-Einsatz im Bereich der Qualitätssicherung, z.B. zur anwendungsspezifichen Initialisierung der Testsysteme bzw. zur Unterstützung der Tester könnte Potentiale bieten - der Phantasie sind hier wenig Grenzen gesetzt. Haben Sie Fragen, Anregungen oder Anmerkungen, so senden Sie einfach eine E-Mail an [email protected]. Weitere Literatur Microsoft HTML Help download ? Hyper help project generator ? Client is no detention ?