Funktion | Mit der
CallJS-Anweisung
können Sie eine JavaScript-Funktion aufrufen. |
Beispiel |
CallJS
msg = test1
Die JavaScript-Funktion "test1"
wird aufgerufen. Das Ergebnis der Funktion wird als String in die Variable
V[msg] gestellt. |
Format 1 |
CallJS
funcname
"par1" "par2 "par2" ...
Die JavaScript 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 |
CallJS
varname
= funcname "par1" "par2 "par2"
Die JavaScript 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 |
JavaScript
ist durch die Möglichkeit, ActiveX Controls zu verwenden, 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 JavaScript-Dateien 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
CallJS-Anweisung
pro SAP GUI Modus werden alle im GuiXT Profile angegebenen JavaScript Bibliotheken
(.js 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 JavaScript-Dateien, die sich ausserhalb von Funktionen befinden, werden
beim Laden sofort ausgeführt. Globale JavaScript Variablen behalten innerhalb
eines SAP GUI Modus ihren Wert.
Sie können die JavaScript-Dateien im SAP Web Repository oder SAP MIME Repository ablegen und zentral pflegen, was die Qualitätskontrolle erleichtert. In der Konfigurationsdatei "guixt.ini" werden durch die folgenden Anweisungen drei JavaScript Dateien aus dem SAP Web Repository geladen: JSLibrary SAPWR:ZGUIXT.jslib01.js Syntaxfehler in einer der JavaScript Bibliotheksdateien sollte man vermeiden, da das Laden der Funktionen dann mit einer Fehlermeldung abgebrochen wird. Am besten die JavaScript Funktionen in einem JavaScript Editor schreiben und dort die Syntax überprüfen. Die Parameterübergabe an die JavaScript Funktion erfolgt als Wertübergabe von Strings, ebenso wird der Funktionswert der JavaScript Funktion bei der Rückkehr als String in die GuiXT-Variable gestellt. Einzige Ausnahme: siehe den nachfolgenden Abschnitt über Objektreferenzen. In der JavaScript-Funktion können
Sie direkt, lesend und schreibend, auf GuiXT Variablen und Langtextvariablen
zugreifen, siehe Objekt
"guixt" in JavaScript. Damit können Sie eine Referenzübergabe einer Variablen
dadurch realisieren, dass Sie statt eines Wertes den Namen der Variablen
an die JavaScript-Funktion übergeben und dort mit guixt.get() und guixt.set()
darauf zugreifen. |
Objektreferenzen |
JavaScript
ist eine objektbasierte Sprache, in der Sie Objekte dynamisch erzeugen können.
Dabei kann es sich entweder um ActiveX Komponenten handeln, die Sie mit
guixt.CreateObject() anlegen oder über die GuiXT Control-Anweisung erzeugen,
oder JavaScript Objekte. 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). Da JavaScript eine untypisierte
Sprache ist, sollte man die Komplexität der JavaScript 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 JavaScript verwenden. |
Debugging | Sie können
mit einer "debugger" Anweisung in der JavaScript Funktion den Debugger aktivieren
und dann z.B. den
"MS Visual Studio" Debugger nutzen. |
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
// JavaScript XL = null; } |
Komponente | GuiXT + Controls |