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
JSLibrary  SAPWR:ZGUIXT.jslib02.js
JSLibrary  SAPWR:ZGUIXT.jslib03.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 some demo values
Set V[region.1] "Americas"
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
CallJS start_excel 3

 

// JavaScript
functionstart_excel(rows)
{
    var XL = guixt.CreateObject("Excel.Application");
      
    XL.Visible = true;
   
    XL.Workbooks.Add();
            
    XL.Columns(1).ColumnWidth = 30;
    XL.Columns(2).ColumnWidth = 20;
        
    for (var k=1; k<=rows; k++)

    {  

        XL.Cells(k,1).Value = guixt.get("region." + k);
        XL.Cells(k,2).Value = guixt.get("sales."  + k);
    };

  XL = null;

}

Komponente GuiXT + Controls