Funktion Mit der connectHTML-Anweisung können Sie Werte aus einer mit  Control angezeigten HTML-Seite lesen, Werte dort verändern und Aktionen in der HTML-Seite auslösen. Sie können dabei eigene HTML-Seiten verwenden oder auch beliebige Internet oder Intranet-Dateien. Die Anzeige über  Control kann entweder innerhalb des SAP  Screens erfolgen oder in einem separaten Fenster.
Beispiel connectHTML click="button_Weiter"

Der Button "Weiter" in der über  View angezeigten Internetseite wird gedrückt.

Format
  • connectHTML optionen  name="mycontrol"

Sie nennen den bei Control ... name="mycontrol" angegebenen Namen des Controls, in dem die HTML-Seite angezeigt wird.

Alle weiteren Optionen sowie die HTML-Variablen html[...] beziehen sich dann auf dieses Fenster:

  • Set html[name] "wert"          // Setzt den Wert in das HTML-Element
  • "... &html[name] ..."          // liest den Wert aus der HTML-Seite        
  • if html[name]                  // fragt die Existenz des HTMl-Elementes ab        
Optionen
name= Bezug auf ein Control, das durch Control ... name= angelegt wurde.
 
click= Angabe eines HTML Elements (z.B. ein Button, ein Image oder ein Link) auf den geklickt werden soll. Beispiel:

connectHTML click="image_search.jpg"

geturl= Die aktuelle URL wird in die angegebene Variable zurückgeliefert. Das ist insbesondere dann nützlich, wenn der Benutzer bereits auf andere Seiten navigiert haben kann.  Beispiel:

connectHTML geturl="url"
if not Q[ok] or not V[url=http:// ... /basket.asp]
   Return "E: Bitte zunächst den 'Warenkorb' anwählen" -statusline
endif

seturl= Die HTML-Seite mit der angegebenen URL wird nun angezeigt.
gettitle= Der Titel der Seite wird zurückgeliefert.
settitle= Der Titel der Seite wird neu gesetzt.
 

listelements=

Angabe einer Textvariable, in die alle HTML-Elemente der laufenden Seite mit ihren Werten übertragen werden. Das ist insbesondere während der Scriptentwicklung  nützlich, um die Elementnamen bequem über Cut&Paste entnehmen zu können.  Beispiel:

// GuiXT Script
Pushbutton (toolbar)
"HTML Elemente lesen" process="get_html_elements.txt"
Textbox
(10,0) (40,120) name="elm"

// InputScript "get_html_elements.txt"
connectHTML
listelements="elm"

-shownames Sinnvoll während der Entwicklung: In dem HTML-View werden die Namen aller Elemente als Tooltip angezeigt, sobald der Mauszeiger einige Zeit auf dem Element verweilt.
Ansprechen der HTML-Elemente Die  HTML-Elemente können analog zu den Scriptvariablen V[...] verwendet werden; die Notation ist html[...]. Unterstützt sind:
  • Set html[name] "wert"          // Setzt den Wert in das HTML-Element
  • "... &html[name] ..."          // liest den Wert aus der HTML-Seite        
  • if html[name]                  // fragt die Existenz des HTMl-Elementes ab        

Nach dem Setzen eines Wertes wird automatisch eine eventuell vorhandene "on change" Routine der HTML-Seite aufgerufen. Bei Auswahlfeldern (Select) kann es nötig sein, nach Setzen des Wertes noch das Element durch click= anzuklicken, da eventuelle interne Verarbeitungen erst dadurch ausgelöst werden.

Generell ist bei dem automatischen Ablauf von HTML-Seiten zu beachten, dass in der Regel die vorhandenen Funktionen (Setzen von Werten und Klick auf Buttons, Links und Images) ausreichen, die Benutzeraktion zu simulieren. In speziellen Fällen, bei denen über JavaScript, VBScript oder durch Einbinden von Plugins eine über HTML gehende Funktionalität verwendet wird, können diese Möglichkeiten eventuell an ihr Limit stossen.

Namen der HTML-Elemente Während der Entwicklung empfiehlt sich die Verwendung der Funktionen listelements= und -shownames zur Anzeige der intern vergebenen Namen.

Generell setzt GuiXT den Namen zusammen aus dem Typ des Elements (image_, button_, checkbox_, ...) sowie einem in der HTML-Seite vergebenen Namen oder dem Text. Eventuelle Leerzeichen werden im Namen durch den Unterstrich ersetzt. Bei duplikativen Namen hängt GuiXT automatisch einen Index .2, .3,... an den ursprünglichen Namen. Beispiele:

html[image_help.jpg]
html[link_Suche]
html[link_Suche.2]
html[select_Country]
html[text_Search_Filter]

HTML-Tabellen Häufig werden Tabellen in HTML-Seiten genutzt, die auch ineinander geschachtelt werden können. Die Inhalte aller Tabellenzellen stehen  als HTML-Variablen zur Verfügung. Dabei verwendet GuiXT folgende Logik: cell_i.j.k ist der Name der Zelle Nr. k in Zeile Nr. j der Tabelle Nr. i.

Zum Beispiel bezeichnet

html[cell_1.4.5]

eine Zelle in der ersten Tabelle der Seite, und zwar die Zelle in Reihe 4  Spalte 5.

Bei geschachtelten Tabellen wird pro Zelle das gleiche Verfahren angewandt und der Zellenname davorgesetzt, mit '~' verbunden. Beispielsweise ist

html[cell_3_1_7~1_2_2~2.2.4]

folgende Zelle:

Die dritte äussere Tabelle auf der Seite. Dort die Zeile 1, Spalte 7. Diese enthält mindestens eine weitere Tabelle. Wir nehmen die erste und gehen in ihr in Zeile 2, Spalte 2. In dieser Zelle sind mindestens zwei weitere Tabellen. Wir nehmen die zweite; dort ist dann in Zeile 2, Spalte 4 die gewünschte Zelle.

Anzahl der Zeilen pro Tabelle

Pro Tabelle enthält eine Variable "..._rows" die Anzahl der Tabellenzeilen. Beispielsweise ist table_3_rows

"&html[table_1_rows]"

die Anzahl der Zeilen der ersten Tabelle. Bei geschachtelten Tabellen entsprechend. Zum Beispiel  ist.

"&html[table_3_1_7~1_rows]"

die Anzahl der Zeilen der ersten Tabelle in Zelle 1_7 der dritten Tabelle der Seite.

Bei Schleifenkonstrukten in einem Script ist es häufig einfacher, statt der Zeilenzahl die Existenz einer Zelle abzufragen. Beispiel:

// Zeilenzähler
Set V[i] 1
  

label
anf

// weitere Zeile vorhanden? sonst Ende der Tabelle
if not html[
cell_1.&V[i].1]
  goto
end
endif

... Verarbeiten der Tabellenzeile

Set V[i] &V[i] +
1
goto
anf

label
end

Checkbox und Radiobutton Die Werte einer Checkbox oder eines Radiobutton werden durch die Werte 0 und 1 repräsentiert. Das Setzen eines Radiobutton (Wert 1) löscht automatisch die übrigen Radiobutton der gleichen Gruppe. Beispiel:


Set
html[radio_English] 1

Ladezeiten der HTML-Seite Nach Aktionen, z.B. einem Klick auf einen Button, wird eventuell eine neue HTML-Seite geladen, was einige Zeit dauern kann. Jede Anweisung

connectHTML  

wartet zunächst automatisch, bis die Seite ganz geladen ist, ehe die gewünschte  Aktion stattfinden. Nach einer Wartezeit von maximal 2 Minuten beendet connectHTML die Warteschleife. Durch

if not Q[ok]
  Return
"...."
endif

können Sie nach connectHTML abfragen, ob die Aktion erfolgreich war.

Komponente GuiXT + Controls