
Einsatzmöglichkeiten
Übernimmt Quelltext aus anderen HTML-Templates in das aktuelle HTML-Template.
Syntax
include([[~service=]expression,] [[~theme=]expression,] [[~language=]expression,] [~name=]expression)
Parameter
Parameter |
Bedeutung |
~service |
Name des Service. Bei keiner Angabe wird der aktuelle Service verwendet. |
~theme |
Theme. Bei keiner Angabe wird die aktuelle Theme verwendet (in der Datei .srvc des Service definiert). Sie können ~theme="" angeben, um den ganzen Theme-Teil des URL-Pfades wegzulassen. |
~language |
Sprache. Bei keiner Angabe wird keine Sprache verwendet. Wenn Sie die aktuelle Sprache verwenden möchten, geben Sie ~language=~language an. Dieses Verhalten kontrastiert mit dem ~language-Parameter der Anweisung mimeURL. |
~name |
Dateiname. Die einzubindende Datei wird über einen wie folgt aufgebauten Pfad geholt: <itsRootDir>\<virtual ITS>\templates\<~service>\<~theme>\ <filename(~name)>[_<~language>].<extension(~name)>|html) |
Beschreibung
Mit der Anweisung include können Sie Quelltext aus einem anderen HTML-Template in das aktuelle HTML-Template einbinden.
Vorteile
Die Anweisung include hat folgende Vorteile:
Konsistenter Stil für Internet-Anwendungen
Viele Internet-Anwendungen verwenden oft die gleichen Stilelemente wie etwa Titelleisten oder Copyright-Hinweise. Sie können diese Elemente in einer einzelnen Datei ablegen und in die entsprechenden Templates einfügen. Über diese Datei können auch Aktualisierungen an den Stilelementen leicht global vorgenommen werden.
Wiederverwendung von Quelltext
Java- oder Visual-Basic-Skripte können in mehreren Templates wiederverwendet werden. Dies ist vor allem nützlich, wenn Sie oft verwendete Routinen wie z.B. Gültigkeitsprüfungen bei Benutzereingaben implementieren.
Wiederverwendung von Funktionsdeklarationen
Eingebundene Dateien können auch Funktionsschnittstellendeklarationen enthalten. Dies ist vor allem bei externen Funktionsbibliotheken nützlich, denn Sie können alle Bibliotheksfunktionen in einer Datei deklarieren und in alle Templates einfügen, welche diese Bibliothek verwenden.
Benannte oder positionale Parameter
Sie können benannte oder positionale Parameter verwenden.
Bei positionalen Parametern (z.B. kein ~language= vor dem Sprachenwert) wird folgende Reihenfolge angenommen:
~name ist der erste nicht benannte Parameter von rechts
~service ist der erste nicht benannte Parameter von links
~theme ist der zweite nicht benannte Parameter von links
~language ist der dritte nicht benannte Parameter von links
Beispiel zum Einfügen von Quelltext aus dem gleichen Verzeichnis wie das einfügende Template:
`include ("purchasing_titlebar")`
Beispiel zum Einfügen von Quelltext aus dem Verzeichnis des globalen Templates (mit der gleichen Theme):
`include ("global", "purchasing_titlebar")`
Beispiel zum Einfügen von Quelltext für externe Funktionsdeklarationen:
`include ("system", "", "sapxjstring.html")`
Kompilier- und Laufzeitauswertung
Der Internet Transaction Server (ITS) löst include-Anweisungen entweder beim Kompilieren oder zur Laufzeit auf.
Wenn die Parameter als Konstanten übergeben werden oder implizit durch den aktuellen Kontext definiert sind, kann der ITS sie zum Kompilierzeitpunkt auflösen. Die Auswertung zur Kompilierzeit ist performance-freundlicher als die Auswertung zur Laufzeit.
Beispiele für Include-Anweisungen, die zum Komplierzeitpunkt aufgelöst werden:
`include ("purchasing_titlebar.html")`
Service, Theme und Sprache werden durch das einfügende Template definiert.
`include ("purchasing"&"_titlebar"&".html")`
Service, Theme und Sprache sind implizit definiert; der Ausdruck "purchasing"&"_titlebar"&".html" wird als Konstante ausgewertet.
`include ("system", "", "sapxjstring.html")`
Allen Parametern werden explizit Konstantenwerte zugeordnet.
Beispiele für Include-Anweisungen, die nur zur Laufzeit aufgelöst werden können:
`include ("purchasing" & screen_element & ".html")`
Hier ist screen_element ein nicht-konstanter Subausdruck, der erst zur Laufzeit definiert werden kann.
`include (~service=~service, "purchasing_titlebar.html")`
Der HTML-Business-Interpreter unterscheidet nicht zwischen Variablen, die zur Kompilier- oder Laufzeit definiert wurden, wenn er Ausdrücke vorauswertet. Aus diesem Grund wird ~service nicht als konstanter Ausdruck angesehen. Fehlt der Parameter ~service jedoch vollständig, wird er als eine Konstante behandelt und implizit definiert.
Einfügen von Sprachressourcen mit Templates
Wenn Sie ein Template aus einem anderen Service in Ihren aktuellen Service einbinden, werden auch alle Sprachressourcen berücksichtigt, die zu dem Template gehören.
Wenn ein eingebundenes Template auf die Sprachressourcendatei <resource file>_<language>.htrc verweist, versucht der HTMLBusiness-Interpreter, den Namen innerhalb des eingebundenen Templates aufzulösen.
Wenn ein eingebundenes Template auf die Sprachressourcendatei <resource file>_<language>.htrc verweist und der Name nicht innerhalb des eingebundenen Templates aufgelöst werden kann, muss der HTMLBusiness-Interpreter versuchen, den Namen innerhalb des einbindenden Templates aufzulösen.
Das Template templateA_html des Service A enthält das Template templateB_html des Service B:
Wenn templateB_html des Service B auf die Sprachressourcendatei resource1_en.htrc verweist, löst der HTMLBusiness-Interpreter den Namen innerhalb des Templates templateB.html des Service B auf.
Wenn der Name der Sprachressourcendateien nicht innerhalb des eingebundenen Templates templateB.html aufgelöst werden kann, muss er innerhalb des einbindenden Templates templateA.html des Service A aufgelöst werden.
Beispiel für eine Einbindung zur Kompilierzeit:
`include(~service="paw1",~theme="99", ~name="sapmpw01_100")`
templateA.html des Service A enthält templateB.html des Service B und templateC.html des Service C:
templateA.html enthält den folgenden HTMLBusiness-Quelltext:
`write (#resource1)`
`include(~service="ServiceB", ~theme="99", ~name= "B" )`
`include (~service="ServiceC", ~theme="99",~name="C")`
templateB.html enthält den folgenden HTMLBusiness-Quelltext:
`write (#resource1)`
`write (#resource2)`
templateC.html enthält den folgenden HTMLBusiness-Quelltext:
`write (#resource1)`
`write (#resource2)`
Die Inhalte der entsprechenden Sprachressourcendateien sehen folgendermaßen aus:
Ressourcendatei |
Variable |
Wert |
templateA_en.htrc |
#resource1 |
A1 |
#resource2 |
A2 |
|
templateB_en.htrc |
#resource1 |
B1 |
templateC_en.htrc |
#resource1 |
C1 |
Wenn die Anmeldesprache Englisch (en) ist und Sie templateA.html ausführen, erhalten Sie folgende Ausgabe:
A1
B1
A2
C1
A2
Beispiel für eine Einbindung zur Laufzeit:
mytheme=99`
`include(~service="paw1",~theme=mytheme,~name="sapmpw01_100")`
templateA.html des Service A enthält templateB.html des Service B und templateB.html des Service B enthält templateC.html des Service C.
templateA.html enthält den folgenden HTMLBusiness-Quelltext:
`write (#resource1)`
`mytheme=99`
`include (~service="ServiceB", ~theme=mytheme,~name="B" )`
templateB.html enthält den folgenden HTMLBusiness-Quelltext:
`mytheme=99`
`include (~service="ServiceC", ~theme=mytheme, ~name="C")`
`write (#resource1)`
`write (#resource2)`
templateC.html enthält den folgenden HTMLBusiness-Quelltext:
`write (#resource1)`
`write (#resource2)`
Die Inhalte der entsprechenden Sprachressourcendateien sehen folgendermaßen aus:
Ressourcendatei |
Variable |
Wert |
templateA_en.htrc |
#resource1 |
A1 |
#resource2 |
A2 |
|
templateB_en.htrc |
#resource1 |
B1 |
templateC_en.htrc |
#resource1 |
C1 |
Wenn die Anmeldesprache Englisch (en) ist und Sie templateA.html ausführen, erhalten Sie folgende Ausgabe:
A1
C1
A2
B1
A2
Einschränkungen
Sie können die include-Anweisung nicht in einer Sprachressourcendatei verwenden.
Der Name der eingebundenen Datei muss die Erweiterung .html haben.