ConnectHTML

Funktion Mit der connectHTML-Anweisung können Sie Werte aus einer mit View 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 View kann entweder innerhalb des SAP  Screens erfolgen oder in einem separaten Fenster. Weitere Details finden Sie in der Dokumentation  “Special Topics” unter “Automatisierung von Internet-Seiten”.
Beispiel connectHTML click=“button_Weiter”

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

Format  Meist ist nur eine einzige HTML-Seite durch View geöffnet. In diesem Fall kann
  • connectHTML optionen  

ohne Angabe eines Fenster window=“…” genutzt werden. Alle Optionen sowie die Variablen html[...] beziehen sich dann automatisch hierauf. Falls mehr als ein View aktiv ist, kann durch die Angabe

  • connectHTML optionen  window=“&V[viewwindow]“

explizit ein Fenster genannt werden, das durch “View …. returnwindow=viewwindow” davor erhalten wurde. Alle weiteren Optionen sowie die HTML-Variablen html[...] beziehen sich dann auf dieses Fenster. 

Eine connectHTML Anweisung ist nur nötig, wenn man bestimmte Sonderoptionen (siehe unten) nutzen möchte, oder wenn man das Viewfenster explizit auswählen will. Ansonsten können die HTML-Variablen html[...] auch ohne vorhergehendes connectHTML sofort verwendet werden, wenn ein HTML-View aktiv ist. Insbesondere:

  • 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 
 

window=

Expliziter Bezug auf ein Fenster, das durch View …. returnwindow= erhalten wurde.

Bitte beachten Sie dabei folgendes: Falls Sie in einem GuiXT-Script einen HTML-View in den SAP-Screen neu einblenden und dann unmittelbar im gleichen Script durch connectHTML oder über html-Variablen ansprechen wollen, ist die Angabe returnwindow= bei View erforderlich.  Nur dann wird der HTML-View synchron während der Verarbeitung des Scriptes aufgebaut. Ohn
e
returnwindow= wäre die Seite erst nach der Anzeige des SAP-Screens ansprechbar. Bei HTML-Views, die Sie in einem separaten Fenster anzeigen durch  View …. -floating ist das nicht nötig, da diese immer synchron während der Scriptverarbeitung aufgebaut werden.

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. Da er bei View nicht angezeigt wird, ist das nur zur internen Verwendung in speziellen Fällen sinnvoll.
 

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.
searchbrowserwindow= Liefert ein offenes Browser Fenster (nur Internet Explorer), oder 0 falls kein Fenster gefunden wurde. Mit

if Q[ok]

endif

können Sie abfragen, ob ein Fenster gefunden wurde. Das Browserfenster kann in allen connecthtml Anweisungen ebenso wie ein von  View zurückgeliefertes Fenster verwendet werden.

index= In Verbindung mit  searchbrowserwindow=. Sie geben eine Nummer i an  (i=1,2,3,..) zur Suche des Browser-Fensters, falls mehrere existieren.
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.

ConnectHTML