ITSUSER
Der Benutzer, mit dem sich der ITS am System anmeldet, muss gewisse Voraussetzungen erfüllen. Er muss natürlich über die entsprechenden Berechtigungen verfügen um alle Transaktionen aufrufen zu können. Genauso wichtig sind auch standardmäßig mitzugebende Parameter (können teilweise weggelassen werden, man sollte aber über die Konsequenzen nachdenken, einige Standard-SAP-IACs verlangen, dass diese Werte z.T. gesetzt sind [VKO etc]):

WRK	z.B. 0011	Plant
VTW	10	Distribution channel
VKO	0010	Sales organization
VBG	05	Material group is displayed in the SD web scenarios
SPA	10	Division
SCL		Upper and lower case in source code: 'X' = lower, ' ' =upper
POK		PD: Views (Key, Short Text, Validity, etc.)
CSM	1000100	Customer number
AAT	OR	Order type

Subframes: beim Erzeugen eines Templates von einem Dynpro, welches nur Subframes darstellt, werden vom SAP@Web-Studio zwar alle Subframe-Aufrufe erzeugt, in der Original Framedefinition [ <frameset rows="*"> ] werden allerdings u.U. keine Subframes dafür erzeugt oder unsinnige Einträge vorgenommen [ <frameset cols=85, 0> ]. In diesem Fall händisch ändern in [ <frameset rows="*,13%,13%,13%,13%"> ] oder so. Sobald einer dieser Subframes nicht vorhanden ist werden i.d.R. alle anderen auch nicht angezeigt. Deshalb jeden einzelnen Subframe testen, ob er vom ITS bzw. SAP R/3 auch mit Inhalt gefüllt wird. Ist das der Fall, so können anschließend alle Eingabe-Felder o-ä. der beteiligten Dynpros in einen einzigen Subframe kopiert werden.

OKcodes: Zur Navigation auf dem Dynpro sind folgende Buttons hilfreich:
Diese hier bieten die Standard-Navigation:
<input type="submit" name="~OkCode=DISP" value="DISP = Anzeigen">
<input type="submit" name="~OkCode=/NEX" value="/NEX = EXIT">
<input type=submit name="~OkCode=/00" value="/00 = Enter">
<input type=submit name="~OkCode=/01" value="/01 = Hilfe">
<input type=submit name="~OkCode=/03" value="F3 = zurück">
<input type=submit name="~OkCode=/08" value="F8 = ausführen">

Desweiteren natürlich alle Funktionscodes aus der Funktionstasten oder Drucktastenleiste. Diese z.B. über SYSTEM-STATUS im SAP R/3 abfragen und durch einen Doppelklick auf den Oberflächenstatus öffnen. Der Funktionscode „BUSS“ ergibt dann z.B. folgenden Button:
<input type="submit" name="~OkCode(BUSS)" value="BUSS = sichern">

die Funktionstaste F15 (=Shift F3 oder PF15 ergibt folgenden Button:
<input type="submit" name="~OkCode(/15)" value="PF15">

die Menüabfolge Springen Nächstes Bild ergibt folgenden Button:
<input type="submit" name="~OkCode(.sn)" value="nächstes Bild">

Weitere mögliche OK-Codes:

/h	Debugger einschalten
/hs	this switches into debugging mode and activates the debugging of system functions.
/o	Übersicht der offenen Modi und die Möglichkeit einen bestehenden zu löschen oder einen neuen zu erzeugen.
/oTransaktion	Öffnen eines neuen Modi mit der Transaktion transaktion
/n	beendet die aktuelle Transaktion
/nend	termiantes all separate sessions and logs off 

/nTransaktion	Beenden der aktuellen Transaktion und starten der neuen Transaktion transaktion im aktuellen Mode. Achtung, nicht gespeicherte Daten gehen ohne Warnung verloren!
/i	Beendet den aktuellen Modus. Achtung, nicht gespeicherte Daten gehen ohne Warnung verloren!
/i1, /i2	terminates the session with the given number 
/nend	Beendet die aktuelle Sitzung und schließt alle offenen Modi. Es wird eine Bestätigung verlangt, in den verschiedenen Modi noch nicht gespeicherte Daten gehen ohne weitere Warnung verloren.
/nex	Beendet die aktuelle Sitzung ohne Nachfrage. Alle offenen Modi werden ohne Nachfrage geschlossen, Daten können verloren gehen. 
/$SYNC	Synchronisieren aller Puffer. Durch diese Funktion kann die Performance erheblich verringert werden! 
/$TAB	Synchronisiere den Tabellen-Puffer. Durch diese Funktion kann die Performance negativ beeinflußt werden. 
/$CUA	Synchronisiere den CUA-Puffer. Durch diese Funktion kann die Performance negativ beeinflußt werden. 
/$NAM	Synchronisiere den NAMTAB-Puffer. Durch diese Funktion kann die Performance negativ beeinflußt werden.
/$DYNP	Synchronisiere den Dynpro-Puffer. Durch diese Funktion kann die Performance negativ beeinflußt werden. 
/bend	Batch-Input beenden
/bdel	Laufende Batch-Input-Transaktion in der Mappe loeschen.
/bda	Umschalten Anzeigemodus auf 'sichtbar abspielen'
/bde	Umschalten Anzeigemodus auf 'nur Fehler anzeigen'

Fxxx	Starts the transaction Fxxx (only from system menu) 
Xyzw	"Fast path": "xyzw" refers to the underlined letters in the menus. 
/*xxxx	Starts transaction xxxx and skips the first screen 
=xxxx	This entry is still possible for compatibility reasons 
%sc	Searches character patterns in lists (like "System - List - Find String") 
%pc	Downloads lists 
%pri	Prints lists

Bilder anstelle von Standard-Buttons:
<input type="submit" name="~OkCode(BUSM)" value="BUSM = alle mark.">
ist gleichwertig mit
<input type=image src="`mimeURL("../../../../../../logo.gif")`" name="~OkCode(BUSM)" value="BUSM = alle mark.">
Wobei die URL-Angabe natürlich auch in das MIME-Verzeichnis zeigen kann.

Bild + Text kombiniert
<input type="image" name="~OkCode(/NEX)" src="`mimeURL("../../../s_discon.gif")`" border=0 alt="vom System abmelden" title="vom System abmelden">
<font face="Arial, Helvetica, sans-serif" size="2" color=blue><b><a href="`wgateURL(~okcode="/nex")`">LogOut</a></b></font>
Erzeugt eine Grafik + Erklärungstext, beide veranlassen denselben OK-Code.

Einbindung von CSS
Um CSS nutzen zu können müssen folgende zwei Zeilen im HEAD-Bereich von JEDEM EINZELNEN Template vorhanden sein:
<HEAD>
      <meta http-equiv="Content-Style-Type" content="text/css">
      <link rel=stylesheet type="text/css" href="http://www.<server>.de/style_datei.css">
</HEAD>

Dabei kann der Pfad zur *.css-Datei natürlich auch relativ angegeben werden. Mit obiger Angabe ist der Traffic zwar höher, es funktioniert aber auch garantiert.

Relative Pfadangabe (CSS-Datei ist Service-/Transaktions-Abhängig): 
<link REL="stylesheet" HREF="`mimeURL("style/style_datei.css")`" TYPE="text/css">
Dann liegt die Datei z.B. beim Service fpp2 unter 
<link REL="stylesheet" HREF="/sap/its/mimes/fpp2/99/de/style/style_datei.css" TYPE="text/css">

Mit der Angabe HREF="`mimeURL(~service="global", "style/style_datei.css")`" wird die css-Datei des Globalen Services übernommen. Jede andere Transaktion auch möglich.

Soll die gleiche *.css-Datei wie für die gesamte Page verwendet werden, so gilt folgende Definition im Template:
   <link REL="stylesheet" HREF="`mimeURL("../../../../../../style_datei.css")`" TYPE="text/css">
Die Datei liegt dann im Stammverzeichnis der ITS-Instanz, also (für p87):
   s4347\d:\Inetpub\ITS-p87\style_datei.css

Formulare
In Formularen werden Daten, die in disabled Input-Feldern abgelegt werden nicht mitgesendet und gehen daher beim Dynprowechsel verloren. Deshalb diese Felder auf „readonly“ setzen. Z.B.:
<input readonly type="text" name="ADDR2_DATA-COUNTRY" value="`ADDR2_DATA-COUNTRY`" maxlength=" 3" size=" 3" >

Tabelle statt Frameset

Mit Hilfe des “Schlangenparameters” ~FrameName kann auch ein komplettes Frameset innerhalb einer Tabelle dargestellt werden: (dadurch wird das ganze natürlich performanter, da nur noch eine einzige [größere] Datei übertragen wird, weniger Requests)

Um die aus mehreren Frames bestehende Anwendung in eine HTML-Seite mit einem Frame umzusetzen, entfernen Sie die Struktur <frameset> … </frameset> und verwenden stattdessen die Funktion includeFrame mit dem Befehl <table> … </table> :

<frameset rows=80,* >
  <frame name="FRAME_1" SRC="`wgateURL(~FrameName="FRAME_1")`">
  <frame name="FRAME_2" SRC="`wgateURL(~FrameName="FRAME_2")`">
</frameset>

ist gleichbedeutend mit

<table>
  <TR><TD>`includeFrame(~framename="FRAME_1")`</TD></TR>
  <TR><TD>`includeFrame(~framename="FRAME_2")`</TD></TR>
</table>