Coding und Kommandobefehle in SAPscript und Standardtexten in Transaktion SO10
Siehe SAPscript.
Siehe Kategorie: SAPscript.
Siehe Kategorie: Textbaustein.
Coding und Kommandobefehle sind auch im SAPscript-Formular und bei Verwendung von SAPscript-Formularen in SO10-Texten/Standardtexten möglich. Manches lehnt sich an ABAP an, anderes kennt man als reiner ABAP-Entwickler nicht und muss sich erst daran gewöhnen.
Boolesche Operatoren und Zuweisungsoperator
- Die wichtigsten Booleschen Operatoren werden hier ausgedrückt mit "EQ" (equal) und "NE" (not equal).
- Statt "EQ" kann auch "=" und statt „NE“ kann auch „<>“ verwendet werden.
Ausgabe Felder unter Bedingung
Ausgabe Felder mit IF-Befehle
Mit einem Kommandozeile kann eine Bedingung hinterlegt werden.
Eine Kommandozeile wird mit dem Absatzformat "/:" eingeleitet.
Eine Variable wird in SAPscript mit "&" umschlossen.
Hier wird eine Variable "LTAP-ABLAD" nur ausgegeben, wenn sie gefüllt ist.
/: IF <AP-ABLAD& <> &SPACE& * Abladestelle:,,<AP-ABLAD& /: ENDIF
oder ein anderes Beispiel
/: IF &QALS-XCHPF& <> &SPACE& AND &QALS-STAT02& = &SPACE& ... /: ENDIF
Ausgabe Feldlabel bei gefülltem Feldwert
Der Feldtext „Abladestelle:“ wird nur ausgegeben, wenn die Variable „LTAP-ABLAD“ gefüllt ist. Hier verbleibt dann allerdings eine leere Zeile.
&'Abladestelle:,,'LTAP-ABLAD&
Offsetausgabe eines Feldes
Wie in ABAP kann auch in SAP ein Offset zu einem Feld angegeben werden.
Hier wird der Inhalt der Variablen "RM06P-PHTXT" ab der 14. Stelle mit einer Länge von 36 Zeichen ausgegeben.
&RM06P-PHTXT+14(36)&
Kommandoknotenbefehle in SO10-Texten
In SO10-Texten/Standardtexten sollte man sehr zurückhaltend sein Kommmandoknoten zu verwenden.
/: IF <AP-ABLAD& NE &SPACE& / Abladestelle:,,<AP-ABLAD& /: ENDIF.
- SO10-Texte können auch in Smart Forms und in Adobe Forms eingebunden werden. Aber in Smart Forms und Adobe Forms werden Kommandoknotenbefehle ignoriert. Es würde immer die Zeile "Abladestelle: ..." ausgegeben werden unabhängig von den programmierten Bedingungen.
- In SAPscript funktionieren die Kommandoknoten in einem SO10-Text. Aber es ist schwer nachvollziehbar, wenn in einen SO10-Text Programmlogik codiert wurde. Damit rechnet der Entwickler normalerweise nicht. Es sollte in aller Regel darauf verzichtet werden in den SO10-Texten Kommandoknotenbefehle zu verwenden.
Kommandozeilen länger als 72 Zeilen
Die maximale Länge einer Kommandozeile beträgt 128 Zeichen und es ist nicht möglich zeilenübergreifend eine Kommandozeile einzutragen. Es sind im Editorfenster nur 72 Zeichen zu sehen. Die maximale Länge von 128 Zeichen lässt sich allerdings (wenn auch umständlich) nutzen.
Es soll diese Zeile dargestellt werden. Sie ist länger als 72 Zeichen. In diesem konkreten Fall 80 Zeichen.
BITMAP 'TTG_GROUP_FOOTER_N1' OBJECT GRAPHICS ID BMAP TYPE BMON DPI 150 XPOS 2 cm
Im Menü kann zwischen der linken Seite des Editors (die ansonsten in aller Regel ausreicht) und der rechten Seite gewechselt werden. Hier lässt sich "POS 2 cm" nicht mehr in die Zeile schreiben auf der linken Seite. Anhand des Symbols ">" erkennt man, dass hier mehr als die sichtbare Zeile codiert wurde.
Nun kann man auf der "rechten Seite" der benötigte Codingrest "POS 2 cm" ergänzen.
Es sollte aber nach Möglichkeit darauf verzichtet werden Kommandozeilen länger als 72 Zeichen zu programmieren. Es ist intransparent und fehlerträchtig die Zeile auf diese "rechte" Seite auszudehnen.
Debugging SAPscript
Form-Routine aus SAPscript aufrufen
Kommentare in SAPscript
Das Coding mit der Darstellung von Feldern, Kommandoknoten, Absatzformaten und Zeichenformaten ist recht schwer zu lesen und zu verstehen - selbst wenn man den Code selber geschrieben hat.
Es ist empfehlenswert viel in SAPscript mittels dem speziellen Absatzformat /* zu kommentieren. Alle Zeichen in einer Zeile, die beim Absatzformat /* folgen, sind reine Kommentare.
Mit einer (oder mehr) leeren Kommentarzeilen lassen sich Codingblöcke auch gut sichtbar strukturieren. Es ist nicht möglich leere Zeile ohne gefülltes Absatzformat zu benutzen. Sobald man einmal „Bild auf / Bild runter“ gedrückt hat, werden diese leeren Zeilen gelöscht - während leere Zeilen mit dem Absatzformat /* beibehalten werden.
... /* ...
Einbindung
Adressen einbinden
Logo/Grafik einbinden in SAPscript
SAPscript-Symbole
Systemsymbole
Programmsymbole
Standardsymbole
Textsymbole
Aufbereitungsoptionen Variablen im Formular/Textbaustein
Kommandoknotenbefehl NEW-PAGE / Seitenumbruch auslösen
- Im SAPscript-Formular kann ein Seitenumbruch ausgelöst werden durch den Kommandoknotenbefehl
- Mit dem Reinen "NEW-PAGE" wird die Folgeseite von der aktuellen Seite aufgerufen.
NEW-PAGE
- Es kann beim "NEW-PAGE" aber auch explizit eine Folgeseite angegeben werden. Das macht Sinn, wenn die gewünschte Folgeseite von der Folgeseite abweicht, die man bei der Seitendefinition der aktuellen Seite angegeben hat. Z. B. wird vielleicht auf einer Seite "NEXT" als Folgeseite auch die Seite "NEXT" eingetragen, aber als letzte Ausgabeseite beim Druck soll dann eine AGB folgen, dann würde man am Ende vom MAIN eine Zeile hinzufügen, wo die Seite "AGB" aufgerufen wird
NEW-PAGE AGB
PROTECT - ENDPROTECT (Inhalte zusammenhalten)
- Es ist aus optischen Gründen oft schöner, wenn bestimmte Inhalte zusammen auf einer Ausgabeseite ausgegeben werden.
- Man kann die Inhalte, die in SAPscript zusammen ausgegeben werden sollen, mit einer Kommandozeile PROTECT beginnen und mit einer Kommandoziele ENDPROTECT abschließen.
/: PROTECT ... /: ENDPROTECT
- Man muss dabei jedoch vorsichtig sein, dass der Inhalt, der zusammen ausgegeben werden soll, nicht zu groß wird. Daher bietet sich dieser Befehl "PROTECT - ENDPROTECT" nicht für Tabellen an, wo der Inhalt sehr umfangreich werden kann.
- Man kann diesen Befehl auch in SO10-Texten einbauen. Das kann sehr elegant sein, wenn dieser Text in verschiedenen Formularen benutzt wird. Man muss jedoch vorsichtig sein, dass es letztlich keine geschachtelten PROTECT-ENDPROTECT gibt. Das erste gefundene ENDPROTECT (der vielleicht zum zweiten PROTECT-Befehl gehört) beendet auch den ersten Aufruf vom PROTECT. Insofern muss erwogen werden, ob ein eingebauter PROTECT-ENDPROTECT-Befehl im SO10-Textbaustein nicht mit einem PROTECT-ENDPROTECT im Formular kollidiert.
- In der Projektpraxis gab es bei einem Kunden einen SO10-Text mit einem Hinweis auf Internetsicherheit und da wurde dieser Befehl im SO10-Text eingebaut und so ein möglicher Seitenumbruch gleich bei einer ganzen Reihe von Formularen vorgebeugt, die diesen SO10-Text genutzt haben.
Siehe https://answers.sap.com/questions/3321054/what-is-protect-endprotect-in-sapscript.html.
ULINE Unterstrich (Line)
- Im SAPscript-Formular wird ein Unterstrich ausgegeben mit dem Befehl (<n> steht für eine Zahl >= 1)
&ULINE(<n>)&
also z. B.
&ULINE(10)&
- Abhängig von der Schriftart ist die Länge eines Unterstrichs aber nicht identisch mit der Länge der zu unterstreichenden Zeichen. Meist wird eine Proportionalschrift verwendet, wo z. B. der Buchstabe "i" weniger Platz beansprucht als ein "m". Dann muss experimentiert werden wieviel Zeichen für den Unterstrich nötig sind, wenn man die Anzahl der Zeichen kennt, die unterstrichen werden sollen.
- Oft wird der Unterstrich verwendet um thematisch Teile vom Formular visuell erkenntlich zu trennen.
- Zum Beispiel ein Unterstrich mit einer Länge von 90 Zeichen auf einer Zeile
&ULINE(90)&
- Oft wird Uline auch verwendet auch als Platzhalter für eine Unterschrift
- Meist wird die Absenderzeile in einem Formular unterstrichen