
Architektur des SAP GUI for HTML
Server des SAP GUI for HTML
Das SAP GUI for HTML setzt auf dem ITS (Internet Transaction Server) auf. Der ITS bildet die Schnittstelle zwischen einem 'zustandslosen' Web-Server (HTTP-Protokoll), dessen Kommunikation mit dem Web-Browser über Zyklen mit je einer Anfrage/Antwort abläuft, und einem 'zustandsabhängigen' R/3-System (SAP GUI-Protokoll), bei dem die Ausführung betriebswirtschaftlicher Vorgänge von internen Status abhängt.
Der ITS unterstützt Standard-Web-Server wie Microsoft Internet Information Server (IIS), Netscape Enterprise Server (NES) und Apache Web Server.
Die folgende Abbildung zeigt einen Anfrage-/Antwort-Zyklus für das SAP GUI for HTML:

Wenn der Benutzer einen Modus des SAP GUI for HTML aus einem Web-Browser heraus startet, dann umfaßt der Anfrage-/Antwort-Zyklus folgende Schritte:
Ein Style ist ein konfigurierbarer Satz von Regeln, die festlegen, wie die Oberflächenelemente eines R/3-Transaktionsdynpros in HTML abgebildet werden.
Um den Benutzerkontext im R/3 zu pflegen, hält der AGate die Verbindung zum R/3-System für die gesamte Dauer des SAP-GUI-Modus aufrecht. Die Verbindung zwischen dem Web-Browser und dem Web-Server wird jedoch nach jedem Anfrage-/Antwort-Zyklus geschlossen.
Bei jeder weiteren Anfrage, die nach dem Öffnen des Modus abgesetzt wird, benutzt der Web-Browser Cookies, um eine Moduskennung mit der HTTP-Anfrage zu senden, die zur eindeutigen Identifizierung der Verbindung zum R/3-System dient.
Bei jedem nachfolgenden Dialogschritt im Web-Browser ändert der Benutzer eine Reihe von Dynprofeldern. Der Web-Browser schickt diese Felder an den Web-Server und den WGate, der sie wiederum an den AGate weiterleitet. Dank der eindeutigen Moduskennung, die mit der Anfrage verschickt wurde, findet der AGate die Verbindung zum R/3-System und schickt die geänderten Dynprofelder mit einem OK-Code an R/3. Das R/3-System gibt ein geändertes SAP-Dynpro zurück, das entweder mit Hilfe der Standard-Styles oder mit Hilfe eines eigenentwickelten HTML-Template in HTML umgesetzt wird.
HTML-Generierung

Die Kommunikation mit dem R/3-System wird vom DIAG Protocol Interpreter gesteuert, der ein entsprechendes C++-Objekt für jedes Dialogobjekt auf dem Transaktionsdynpro zur Verfügung stellt. Die C++-Objekte sind in einem Objektbaum angeordnet. Jede C++-Klasse bietet Methoden, um auf die spezifischen Attribute des entsprechenden Dialogobjekts zuzugreifen – und sie zu ändern.
Der SAP-GUI-Server durchläuft den Objektbaum und ermittelt alle Dialogobjektattritbute, die für die HTML-Darstellung benötigt werden. Die Objektattribute werden HTML-Templates und –Styles als
<object>.<attribute> zur Verfügung gestellt.
Der SAP-GUI-Controller (Screen Layout Manager) durchläuft den Dialogobjektbaum, der vom DIAG Protocol Interpreter erstellt wurde. Dabei wendet der Controller auf jedes Objekt HTML-Styles an, um das R/3-Dynpro in eine HTML-Seite umzusetzen. Diese Styles werden durch HTMLBusiness-Funktionen implementiert. Für jedes Dynproelement gibt es eine solche Funktion.
Der Controller führt folgende Aufgaben aus:
HTML-Styles
Damit Dialogobjektattribute in ansonsten statische HTML-Seiten eingemischt werden können, bietet der Server des SAP GUI for HTML den HTMLBusiness-Interpreter an, der die HTML Business-Funktionen auswertet.
HTMLBusiness-Funktionen können beliebig viele Parameter haben.
Beispielsweise hat die Funktion
tablecontrol mehrere Parameter zur Konfiguration von Table-Controls.Der Quelltext für den HTML-Style
tablecontrol sieht wie folgt aus:function tablecontrol( ~tcname, X,Y,width,height,with_position=1 )
write("<!-- TableControl " ,~tcname,"-->\n") ;
if ( ^~tcname.columnCount == 0 )
return("") ;
end ;
if ( with_position==1 )
<!--divbegin(x,y,width,height) ; -->
write("<div class=\"all\" style=\"overflow:
auto;width:",~font_size*width,";") ;
abs_position(X,Y) ;
abs_size(width,height) ;
write("\">") ;
else
write("<div class=\"all\" style=\"overflow:
visible;width:",~font_size*width,";") ;
write("\">") ;
end ;
tablecontrol_main(~tcname);
divend() ;
end ;
Jede
write -Anweisung schickt HTML-Quelltext an den Web-Browser.