Funktion Wenn Sie mit  CallVBS eine VBScript-Funktion aufrufen, ist bereits ein Objekt "guixt" vordefiniert. Es gestattet den Zugriff auf GuiXT Scriptvariablen und bietet einige Sonderfunktionen z.B.  RFC-Aufrufe aus VBScript.

Das gleiche Objekt wird bei connectHTML an die HTML-Seite übergeben, indem eine Funktion guixt_initialize(obj) aufgerufen wird (falls vorhanden), die in JavaScript oder VBScript implementiert sein kann:

<script type=text/javascript>

  var guixt;

  function guixt_initialize(obj)
  {
    guixt = obj;
  };

   // ...

</script>

Falls die HTML-Seite mit WebView eingeblendet wurde, können Sie direkt das Objekt "guixthost" verwenden und auf die Funktion guixt_initialize() verzichten. Ein Aufruf von connectHTML íst trotzdem erforderlich.
 

Voraussetzung: Komponente "GuiXT Controls" ist aktiv.

Get() r = guixt.Get(var)

Wenn var den Inhalt "xxx" hat, wird die GuiXT Scriptvariable V[xxx] gelesen und der Inhalt nach r gestellt.

Beispiel:

Dim menu_icon_path
menu_icon_path = guixt.Get("menu_icon_path") 

Set() guixt.Set(var,value)

Wenn var den Inhalt "xxx" hat, wird die GuiXT Scriptvariable V[xxx] auf den Inhalt von value gesetzt.

Beispiel:

guixt.Set("menu_icon_path", "C:\guixt\menu\icons") 

GetText() r = guixt.GetText(var)

Wenn var den Inhalt "xxx" hat, wird die GuiXT Langtextvariable text[xxx] gelesen und der Inhalt nach r gestellt.

Beispiel:

' read menu
Dim menu
menu = Split(guixt.GetText("menu"), vbCrLf)

SetText() guixt.SetText(var,value)

Wenn var den Inhalt "xxx" hat, wird die GuiXT Langtextvariable text[xxx] auf den Inhalt von value gesetzt.

Beispiel:

Call guixt.settext("menu_layout",Join(s,vbCrLf))

Value() r = guixt.Value(var)

GuiXT ersetzt im angegebenen String alle &-Ausdrücke nach GuiXT-Logik durch die entsprechenden Werte und stellt das Resultat nach r.

Beispiel:

Dim mat
mat = guixt.Value("&F[Material]") 

Input() guixt.Input(s)

Der angegebene String s wird exakt so interpretiert wie für die input= Option der Image-Anweisung beschrieben.

Beispiel:

guixt.input("U[VBELN]:" & ListView.selectedItem)
guixt.input("OK:/nVA03,process=va03_enter.txt")

Process() guixt.Process(funcname, par1, par2, ...))

Entspricht der GuiXT Anweisung Process.

Aus dem ersten Parameter funcname wird der Scriptname "process_[funcname].txt" gebildet. Dieses Script wird durchgeführt, wobei die Parameter des Scripts durch die Werte von par1, par2,... besetzt werden. Der bei "Return" im Script gesetzte String wird zurückgegeben.

address = guixt.process("customeraddress", "K1032")

 Beispiel:

var guixt;
function guixt_initialize(obj) {
     guixt = obj;
}


function display_address() {

     // current customer number from screen
     var mykunnr = guixt.value("&F[Customer]")

     // read address
     var jsonaddr = guixt.process('customer/readaddress', mykunnr)

     // parse address data into JavaScript object
     var addr = JSON.parse(jsonaddr);

     // display address
     document.getElementById('name1').innerText = addr.name1; 
     document.getElementById('name2').innerText = addr.name2;
     document.getElementById('stras').innerText = addr.stras;
     document.getElementById('pstlz').innerText = addr.pstlz;
     document.getElementById('ort01').innerText = addr.ort01;
     document.getElementById('landx').innerText = addr.landx;

};
FilePath() guixt.FilePath(s, [cache=True])

Der angegebene String s wird als Dateiname relativ zum GuiXT Scriptverzeichnis interpretiert.

  • Der gesamte Dateiname, mit aktuellem Scriptverzeichnis, wird zurückgegeben.
  • Ein absoluter Dateiname wie C:\guixt\scripts\..." bleibt unverändert.
  • Bei Angabe einer Datei aus dem SAP Web Repository "SAPWR:..." wird im GuiXT Cache eine lokale Kopie erstellt und der Cache-Dateiname zurückgegeben
  • Ein Angabe einer http oder ftp Datei wie "http://..." oder "ftp://" wird im GuiXT Cache eine lokale Kopie erstellt und der Cache-Dateiname zurückgegeben.

Bei cache=True werden externe Dateien zunächst im GuiXT Cache gesucht.

Beispiele:

imgpath = guixt.FilePath("images\home.gif")
imgpath ist jetzt z.B. "C:\guixt\scripts1\images\home.gif"

imgpath = guixt.FilePath("http://www.synactive.com/images/s10logo_blue.gif")
imgpath ist jetzt z.B. "C:\Users\ADMINI~1\AppData\Local\Temp\guixt\GuiXT Cache\http\www.synactive.com\images\s10logo_blue.gif"

SetEventHandler() guixt.SetEventHandler(obj1,obj2)

Angabe zweier Objekte. Für jedes Event z.B. "Click" von Objekt obj1 wird die Funktion "OnClick" von Objekt2 aufgerufen. Die Parameterübergabe erfolgt gemäss der Event-Schnittstelle, d.h. Sie müssen die Funktionen zur Eventbehandlung mit den entsprechenden Parametern anlegen. Meist ist obj1 ein Control, z.B. ein Tree View oder ein List View, und obj2 ist ein mit VBScript -Mitteln definiertes Objekt zur Behandlung der Events.

Tipp 1: Die ausgelösten Events und aktuellen Parameter können Sie mit der Trace-Funktion im GuiXT-Window anzeigen.

Tipp 2: Die möglichen Events und ihre Parameter werden in VBScript Editoren wie z.B. VbsEdit dargestellt.

Beispiel (Details dazu siehe Tutorial 4 zu GuiXT Controls):

' handle  events
Set e = New va03_list_events
Set e.ListView = lv
Call guixt.SetEventHandler(lv, e)

mit

Class va03_list_events
    
    Dim ListView
    
      
    Function OnColumnClick(ColumnHeader)
        
      ...

    EndFunction
   
EndClass

DoEvents() guixt.DoEvents()

Die Funktion wartet einige Millisekunden und verarbeitet dann alle Windows-Nachrichten, die sich in der Warteschlange befinden.

Sie benötigen die Funktion bei einigen Controls, die asynchrone Verarbeitungen durchführen. Zum Beispiel werden im Internet Explorer eine Seite und die einzelnen Objekte asynchron geladen, und Sie müssen die eigene Verarbeitung durch DoEvents() unterbrechen, bis die Seite geladen ist, ehe Sie mit der Verarbeitung der geladenen Seite beginnen können.

Beispiel:

ie.Navigate(url)

' wait until document is loaded
Const READYSTATE_LOADING = 1
  
Do
  guixt.DoEvents()
LoopWhile ie.ReadyState = READYSTATE_LOADING


CreateObject() guixt.CreateObject(progid)

Die Funktion ist weitgehend identisch mit der VBScript-Funktion CreateObject(). Der Unterschied besteht darin, dass die GuiXT Controls-Funktion CreateObject() eine statisch vordefinierte Version der  Windows Common Controls "Comctl. ..." benutzt.

Beispiel:

Set imgList = guixt.CreateObject("ComCtl.ImageListCtrl")

GetObject() guixt.GetObject(progid)

Die Funktion ist weitgehend identisch mit der VBScript-Funktion GetObject.

Beispiel:

    Set excel =  guixt.GetObject("Excel.Application")
    
    If excel isnothingthen
        MsgBox ("Excel not running")
    Else
        excel.visible = True
        excel.Workbooks.Add  
        excel.Cells(1, 1).Value = "Hello"
    Endif

Rfc() guixt.Rfc(arguments,...)

Aufruf eines SAP Funktionsbausteins über RFC. Die Parameter sind identisch mit den bei Call beschriebenen Parametern, wobei nicht ein gesamter String, sondern die einzelnen Teile als Parameter übergeben werden.

Die GuiXT Variable V[_exception] enthält nach dem Rfc() Aufruf entweder "", falls kein Fehler auftrat, oder einen Fehlertext. Sie können auf die Variable mit guixt.Get("_exception") zugreifen.

Für übergebene Tabellen wird ein VBScript-Array aus Strings verwendet, d.h. jede Tabellenzeile ist ein String des Arrays. Falls Sie die Tabelle nur für die Ausgabe des Funktionsbausteins benötigen, reicht die Definition mit "Dim"; es wird dann automatisch ein Array in der benötigten Grösse angelegt.

Beispiel:

Dim all_vkorg

' read data via RFC / SAP searchhelp
Call guixt.Rfc("Z_S10_SEARCHHELP", "in.SEARCHHELP", "H_TVKO",  "in.COLUMNS",  
                "VKORG(4),VTEXT(20)"
,  "table.DATA(WIDTH:24)", all_vkorg)

ForEach row In  all_vkorg
        
   Dimvkey
   Dim vtext
        
   vkey  = Mid(row,1,4)
   vtext = Mid(row,5,20)
        
   ...
        
Next

Komponente GuiXT + Controls