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" und "NE", und ist hier vom Zuweisungsoperator "=" zu unterscheiden.

Adressen einbinden

Ausgabe Felder unter Bedingung

Mit einem Kommandoknoten kann eine Bedingung hinterlegt werden. Hinter dem ENDIF folgt ein Punkt.

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

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

Alternativ kann es so in einer Zeile codiert werden.

&'Abladestelle:,,'LTAP-ABLAD&

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.

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 daher 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.

Kommandoknotenbefehl NEW-PAGE / Seitenumbruch auslösen

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

Unterstrich (Line) mit ULINE

  • Im SAPscript-Formular wird ein Unterstrich ausgegeben mit dem Befehl
&ULINE(<n>)&

bzw. bei einer Länge von 90 Zeichen

&ULINE(90)&

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