Funktion | Mit der
CallVBS-Anweisung
können Sie eine VBScript-Funktion aufrufen. Voraussetzung: Komponente "GuiXT Controls" ist aktiv.
Im 64-bit SAP GUI sind CallVBS und CallVBSAsyync nicht automatisch verfügbar, da Microsoft keine 64-bit Version des Script Controls zur Verfügung stellt, das GuiXT zur VBScript-Ausführung nutzt. Sie können bei Bedarf Alternativen wie das "Tablacus Script Control 64" installieren. CallVBS / CallVBAsync funktionieren dann wieder, ohne dass Anpassungen im GuiXT Profile oder im Script nötig sind. Alternativ, insbesondere für Neuentwicklungen, JavaScript (CallJS) oder VB.NET/C# (CallVB) verwenden. |
Beispiel |
CallVBS
msg = test1
Die VBScript-Funktion "test1"
wird aufgerufen. Das Ergebnis der Funktion wird als String in die Variable
V[msg] gestellt. |
Format 1 |
CallVBS
funcname
"par1" "par2 "par2" ...
Die VBScript Funktion "funcname"
wird aufgerufen. Die angegebenen Strings "par1", "par2",... werden an die
Funktion als Parameter übergeben (Wertübergabe). Über die Notation "&V[varname]"
als Parameter können Sie dabei den Inhalt von Scriptvariablen übergeben. |
Format 2 |
CallVBS
varname
= funcname "par1" "par2 "par2"
Die VBScript Funktion "funcname"
wird aufgerufen. Die angegebenen Strings "par1", "par2",... werden an die
Funktion als Parameter übergeben (Wertübergabe). Das Resultat der Funktion
wird in einen String umgewandelt und in die Variable V[varname] gestellt. |
Sicherheit | VBScript
ist in ähnlicher Weise wie z.B. Visual Basic, Java oder C++ in der Lage,
auf einem PC Schaden anzurichten, zum Beispiel Dateien zu löschen oder Registry-Werte
zu ändern. Deshalb sind vor der Verteilung von VBScript-Dateien im Prinzip
die gleichen Anforderungen an Test und Qualitätskontrolle zu stellen wie
an direkt ausführbare Programme anderer Programmiersprachen. |
Details zum Ablauf |
Bei der ersten Ausführung einer CallVBS-Anweisung pro SAP GUI Modus werden alle im GuiXT Profile angegebenen VBScript Bibliotheken (.vbs Dateien) geladen. Die Funktionsnamen und globalen Variablen müssen über alle angegebenen Dateien hinweg eindeutig sein, da beim Laden der Dateien nur ein einziger globaler Namensraum verwendet wird. Anweisungen in den VBScript-Dateien, die sich ausserhalb von Funktionen befinden, werden beim Laden sofort ausgeführt. Globale VBScript Variablen behalten innerhalb eines SAP GUI Modus ihren Wert. Sie können die VBScript-Dateien im SAP Web Repository ablegen und zentral pflegen, was die Qualitätskontrolle erleichtert. In der Konfigurationsdatei "guixt.ini" werden durch die folgenden Anweisungen drei VBScript Dateien aus dem SAP Web Repository geladen: VBSLibrary SAPWR:ZGUIXT.vbslib01.vbs Syntaxfehler in einer der VBScript Bibliotheksdateien sollte man vermeiden, da das Laden der Funktionen dann mit einer Fehlermeldung abgebrochen wird. Am besten die VBScript Funktionen in einem speziellen VBScript Editor schreiben und dort die Syntax überprüfen, in dem man die Datei testweise ausführt. Die Parameterübergabe an die VBScript Funktion erfolgt als Wertübergabe von Strings, ebenso wird der Funktionswert der VBScript Funktion bei der Rückkehr als String in die GuiXT-Variable gestellt. Einzige Ausnahme: siehe den nachfolgenden Abschnitt über Objektreferenzen. In der VBScript-Funktion können
Sie direkt, lesend und schreibend, auf GuiXT Variablen und Langtextvariablen
zugreifen, siehe Objekt "guixt"
in VBScript. Damit können Sie eine Referenzübergabe einer Variablen
dadurch realisieren, dass Sie statt eines Wertes den Namen der Variablen
an die VBScript-Funktion übergeben und dort mit guixt.get() und guixt.set()
darauf zugreifen. |
Objektreferenzen | VBScript
ist eine objektbasierte Sprache, in der Sie Objekte dynamisch erzeugen können.
Dabei kann es sich entweder um ActiveX Komponenten handeln, die Sie mit
CreateObject() anlegen oder über die GuiXT Control-Anweisung erzeugen,
oder um Objekte zu selbst definierten VBScript-Klassen (Class ... End
Class), die Sie in VBScript mit New erzeugen. Die Parameterübergabe von Objektreferenzen an GuiXT Variablen ist in beide Richtungen möglich. GuiXT benutzt dazu eine String-Darstellung der Objektreferenz und konvertiert automatisch zwischen der Stringdarstellung und der Objektreferenz (technisch: eine "IDispatch" Schnittstelle). Sie können also zum Beispiel in VBScript eine Klasse definieren, in einer VBScript Funktion ein Objekt der Klasse mit New anlegen und die Objektreferenz an GuiXT zurückgeben. An eine weitere VBScript-Funktion können Sie dann aus GuiXT die Objektreferenz als Parameter übergeben und in der Funktion auf Attribute und Methoden des Objekts zugreifen. Da VBScript eine untypisierte
Sprache ist, sollte man die Komplexität der VBScript Funktionen nicht zu
gross werden lassen. Bei Bedarf können Sie eigene ActiveX Komponenten in
einer typisierten Sprache wie Visual Basic .NET oder C# implementieren und
diese in VBScript verwenden. |
Debugging | Sie können
mit einer "Stop" Anweisung in der VBScript Funktion den Debugger aktivieren.
Falls Sie nicht ein spezielles Tools wie "Microsoft Script Debugger" oder
"Visual Studio" installiert haben, wird der im Internet Explorer integrierte
Script Debugger aufgerufen. Bitte beachten: Falls Sie im Internet Explorer
-> Extras -> Internet Optionen -> Erweitert das Script-Debugging ausgeschaltet
haben, hält der "Stop" Befehl nicht an, sondern bricht die Verarbeitung
ohne Fehlermeldung ab. |
Beispiel 2 | Wir starten
Excel mit einigen Demowerten:
// GuiXT Script Set V[sales.1] "2584" Set V[region.2] "Europe" Set V[sales.2] "1228" Set V[region.3] "Asia" Set V[sales.3] "1628" // call excel
' VB Script |
Komponente | GuiXT + Controls |