HTML-Seiten können Sie mit GuiXT Controls sehr einfach einbinden. Es gibt zwei Möglichkeiten:
Als Beispiel wollen wir in Transaktion SE37 (Funktionsbibliothek) das "Google" Fenster einblenden und den angegebenen Funktionsbaustein im SAP Developer Network "sdn.sap.com" suchen. Wie in Tutorial 4 und 6 blenden wir die Anzeige über eine eigene Drucktaste ein: if
V[show_se37_sdn=X] |
Damit ist der Ablauf wie folgt:
Der Benutzer drückt die Taste "Funktionsbaustein in SAP SDN suchen":
Das Google-Fenster wird eingeblendet (es ist gerade Halloween). Wir setzen jetzt noch den angegebenen Funktionsbaustein in das Google-Eingabefeld und starten die Suche in "sdn.sap.com", beides mit der connectHTML Anweisung. Da bei Google der Such-Button zunächst "Google-Suche" und dann "Suche" heisst, sehen wir beide Möglichkeiten vor. Den Namen der Felder und Drucktasten in HTML können Sie sich mit connectHTML -showNames anzeigen lassen.
if
V[show_se37_sdn=X] connectHTML object="&V[se37_sdn]"Set html[text_q] "&F[Funktionsbaustein] site:sdn.sap.com" if html[submit_Google-Suche] connectHTML click="submit_Google-Suche" else connectHTML click="submit_Suche" endif else Pushbutton (8,1) "Funktionsbaustein in SAP SDN suchen" process="toggle_se37_sdn.txt" size=(1,62) endif Die Google-Startseite wird dann automatisch prozessiert (sie flackert allerdings ganz kurz auf) und der Benutzer erhält folgende Anzeige:
Das gleiche führen wir nun direkt mit dem Control "Shell.Explorer durch", und zwar zunächst mit der connectHTML-Anweisung (was die bequemste Möglichkeit ist). GuiXT Script:
if
V[show_se37_sdn=X] if V[se37_sdn_init=X]CallVbs ie_init "&V[se37_sdn]" "http://www.google.com" endif connectHTML object="&V[se37_sdn]"Set html[text_q] "&F[Funktionsbaustein] site:sdn.sap.com" if html[submit_Google-Suche] connectHTML click="submit_Google-Suche" else connectHTML click="submit_Suche" endif else Pushbutton (8,1) "Funktionsbaustein in SAP SDN suchen" process="toggle_se37_sdn.txt" size=(1,62) endif Unsere
VBScript Funktion "ie_init" benutzt die "Navigate()" Method des
Controls, um zu der gewünschten URL zu navigieren:
Aus diesem Grund ist das Arbeiten direkt mit dem DOM eher zu empfehlen, wenn die aufgerufene Seite selbst geschrieben wurde (siehe weiter unten). Das Beispiel ohne connectHTML, mit eigenem Zugriff auf das Control und das HTML-DOM, sieht dann wie folgt aus:
if
V[show_se37_sdn=X] if V[se37_sdn_init=X]CallVbs ie_init "&V[se37_sdn]" "http://www.google.com" endif CallVbs ie_google_search "&V[se37_sdn]" "&F[Funktionsbaustein] site:sdn.sap.com" else Pushbutton (8,1) "Funktionsbaustein in SAP SDN suchen" process="toggle_se37_sdn.txt" size=(1,62) endif VBScript Funktion "ie_google_search":
Function ie_google_search(ie,s) Eigene HTML-Dateien und Kommunikation mit GuiXT Falls Sie eigene HTML-Dateien einbinden, ist es zum Datenaustausch zwischen Script-Routinen in der HTML-Datei (VBScript oder JavaScript) und GuiXT nützlich, das "guixt" Objekt auch in den HTML-Script-Routinen zur Verfügung zu haben: Sie können dann Variablen und Langtexte aus GuiXT lesen und schreiben, RFC-Aufrufe durchführen und über guixt.input() SAP-Felder setzen und Aktionen durchführen. Dazu rufen Sie nach der "Control"-Anweisung connectHTL object="..." auf, wobei Sie die Referenz auf das erzeugte Web Browser Control übergeben. Die connectHTML-Anweisung sorgt dafür, dass Sie html-Variablen aus GuiXT heraus lesen und setzen können. Zusätzlich sieht sie nach, ob es in dem HTML-Code eine Scriptroutine mit dem Namen "guixt_initialize" gibt. Falls ja, wird diese aufgerufen und als Parameter das "guixt" Objekt übergeben. Sie können sich das Objekt in einer globale Variable merken und später in den HTML-Script-Routinen verwenden. Ein "Hello World"-Beispiel dazu: GuiXT Script: Set text[ot] "Hello World!" Control (20,1) (24,120) progID="file:///C:\temp\gcomm.html" name="wb"ConnectHTML object="&V[wb]"Die HTML-Seite liest über das "guixt" Objekt den Langtext "ot" und gibt ihn aus: <html>
Ergebnis:
|