Coding in SAPscript und SO10

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Boolesche Operatoren und Zuweisungsoperator

  • Die wichtigsten Booleschen Operatoren werden hier ausgedrückt mit "EQ" (equal) und "NE" (not equal).
  • Statt „NE“ kann auch „<>“ verwendet werden.

Adressen einbinden

Ausgabe Felder unter Bedingung

Ausgabe Felder in Abhängigkeit Bedingung in Kommandozeile

Mit einem Kommandoknoten kann eine Bedingung hinterlegt werden.

Hier wird eine Variable "LTAP-ABLAD" nur ausgegeben, wenn sie gefüllt ist.

/: IF &LTAP-ABLAD& NE &SPACE&
 * Abladestelle:,,&LTAP-ABLAD&
/: ENDIF

oder ein anderes Beispiel

/: IF &QALS-XCHPF& NE &SPACE& AND &QALS-STAT02& EQ &SPACE&
...
/: ENDIF

Im Editormenü unter "Bearbeiten - Fenster links/rechts" kann man die Zeile vergrößern, bzw. in den rechten Teil überwechseln und die Kommandozeile so vergrößern.

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&

Bei einem anderen Beispiel geht es die Telefonnummer inklusive Durchwahl.

&FSABE-TELF1&&' - 'FSABE-TEL_EXTEN1&

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 &LTAP-ABLAD& NE &SPACE&
/    Abladestelle:,,&LTAP-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.
  • 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.

Screeneditor1.JPG


Screeneditor2.JPG


Nun kann man auf der "rechten Seite" der benötigte Codingrest "POS 2 cm" ergänzen.

Screeneditor3.JPG

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.

Man sollte kommentieren:

  • Kommandoknoten-/Befehle
  • Variablen, die nicht aus dem Namen selbsterklärend sind
  • spezielle Absatzformate

Um optisch den Kommentar leicht vom sonstigen Coding-Inhalt zu unterscheiden, kann man die Kommentarzeile beginnen lassen mit dem Text

/* Kommentar: <folgender Text>

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.

...
/*
...

Logo/Grafik einbinden in SAPscript

Variablen (Symbole) in SAPscript

Im SAPscript-Formular werden stets auch variable Werte ausgegeben. Diese Variablen werden unter SAPscript "Symbole" genannt.

Die Symbole werden in SAPscript mit der Syntax "&<variablenname>&" ausgegeben, z. B.

&kna1-kunnr&

Globale Variablen (aus Druckprogramm)

  • In der Regel werden die Symbole im Druckprogramm befüllt. Hier sind sie als globale Variablen definiert.

Lokale Variablen (Schlüsselwort DEFINE)

  • In SAPscript können lokale Variablen definiert werden über eine Kommandozeile. Es kann der Wert einer anderen Variable übernommen werden.
/: DEFINE &GV_NSOLM& = &LTAP-NSOLM&

oder ein Defaultwert angegeben werden.

/: DEFINE &LV_PARTNER_ZM_NAME1& = 'Name 1 ZM'

Im Anschluss die Variablen auch in einem Subroutinen-Pool verändert werden.

siehe auch https://archive.sap.com/discussions/thread/1387843.

Aufbereitungsoptionen Variablen im Formular/Textbaustein

Kommandoknotenbefehl NEW-PAGE / Seitenumbruch auslösen

  • Im SAPscript-Formular kann ein Seitenumbruch ausgelöst werden durch den Kommandoknotenbefehl
NEW-PAGE

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.

ULINE Unterstrich (Line)

  • Im SAPscript-Formular wird ein Unterstrich ausgegeben mit dem Befehl (<n> steht für eine Zahl >= 1)
&ULINE(<n>)&


Meist 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)&

Oder auch als Aufzählungszeichen hier mit einer Länge von 2 Zeichen

&ULINE(2)& Der von uns zum &RF130-ABSTIDAT& ermittelte offenstehende

Siehe auch https://archive.sap.com/discussions/thread/393823.