ABAP - String Templates (Teil 1)
Die Verarbeitung und Erstellung von Zeichenketten wurde noch einmal durch SAP angepasst. Der neue Aufbau der Zeichenketten geht nun einfacher und bietet viele Vorteile.
Inhaltsverzeichnis
Bei dem Thema Zeichenkettenverarbeitung hat sich noch einmal etwas getan. Die Darstellung und Erzeugung eines verknüpften Textes geht nun etwas intuitiver, wie man es aus anderen Programmiersprache kennt. Die Codierung der Strings sieht etwas anders aus, aber hier wird man sich schnell umgewöhnen können.
Aktuell Darstellung
Im Moment wird der String mit dem "Accent grave" abgebildet, dies kann leicht zu Problemen führen bei der Erkennung der Zeichenkette, da dies mit einem einfachen Hochkomma verwechselt werden kann. Mit dem String werden schließende Leerzeichen berücksichtigt und nicht wie beim Char-Feld abgeschnitten.
Dazu ein kleines Beispiel mit einer Zuweisung und Leerzeichen am Ende des String. Hierbei handelt es sich um eine einfache Zuweisung. Im zweiten Beispiel wird eine Verknüpfung mehrerer Strings dargestellt, die mit einem Leerzeichen in der Mitte zusammengesetz werden.
DATA:
ld_value TYPE string.
"Erzeugung eines String
ld_value = `Dies ist ein String, Leerzeichen werden nicht abgeschnitten ... `.
" mit Verknüpfung
ld_value = `Teil 1` && ` ` && `Teil 2`.
Neue Darstellung
Beim neuen Weg werden nun "Pipes" verwendet, die den Anfang und das Ende definieren. Zusätzlich kann noch mit geschweiften Klammern der Inhalt von Variablen übernommen werden. Wichtig zu erwähnen ist noch, dass jedes Leerzeichen zwischen den Pipes, auch ein Leerzeichen am Ende im String ist.
DATA:
ld_value TYPE string.
"Erzeugung eines String
ld_value = |Dies ist ein String, Leerzeichen werden nicht abgeschnitten ... |.
" mit Verknüpfung
ld_value = |Teil 1| && | | && |Teil 2|.
Bei der Verwendung der geschweiften Klammern muss auf die Leerzeichen zwischen Klammern und Variable geachtet werden, so wie bei Klammern mit logischen Ausdrücken bzw. Rechenoperationen. Es können beliebig viele Variablen in den string eingesetzt werden.
DATA:
ld_text TYPE char25 VALUE ''.
" Inhalt übernehmen
DATA(ld_string) = |Hier kommt der Text: { ld_text }|.
Formatierung
Bei den bisher gezeigten Beispielen wurden nur die Steuerkennzeichen geändert und es ist noch kein großer Vorteil zu den herkömmlichen Strings zu erkennen. Der Vorteil der neuen Variante ist die Formatierungsmöglichkeit der Variablen beim Einfügen in den String.
Es stehen vorschiedene Möglichkeiten zur Verfügung die Variableninhalte für die Ausgabe aufzubereiten, was vorher vielleicht mit zusätzlichen Zwischenvariablen umgesetzt wurde oder wofür weitere Funktionsbausteine verwendet werden mussten.
Zur Formatierung der Inhalte muss hinter der Variable noch ein Zusatz aufgeführt werden, dieser bestimmt die durchzuführende Aktion.
Datum
Für die einfache Ausgabe des Datums in verschiedenen Formaten steht die DATE Funktion zur Verfügung. Die einfachste Form dafür ist die Ausgabe im USER Format, in den meisten Fällen bereits das richtige Format.
" Datumskonvertierung
DATA(ld_date_out) = |{ sy-datum DATE = USER }|.
Alpha
Die Alpha Konvertierung ist die Standard Ein- und Ausgabeform, die man für alle möglichen Dinge der Ausgabe und Aufbereitung von zahlen oder Belegnummern benötigt. Damit können führenden Nullen ergänzt oder entfernt werden.
DATA:
ld_char TYPE CHAR10 VALUE '123'.
" Ausgabeformat
DATA(ld_belnr) = |{ ld_char ALPHA = IN }|.
Width & Align
Legt die Länge eines Feldes fest für die Ausgabe bzw. für die Länge des Strings der erzeugt wird. Es kann immer nur ein String verlängert werden, nicht verkürzt. Mit der Formatierungsoption Align, kann der Text innerhalb des vergrößerten Bereichs noch eingerückt werden. In dem folgenden Beispiel wird der Text am Ende des Strings positioniert und davor mit Leerzeichen aufgefüllt.
" Konvertierung der Ausgabe
DATA(ld_width) = |{ 'Four' WIDTH = 10 ALIGN = RIGHT }|.
Mehr
Es gibt noch viele weitere Möglichkeiten zur Ausgabenkonvertierung, diese findest du unter dem Link im unteren Bereich zuden Formatierungsoperationen.
Fazit
Die neuen String Templates bieten viele neue Möglichkeiten bei der Aufbereitung von Meldungen, Texten und Ausgaben. Die integrierte Formatierung spart Zwischenvariablen und macht das Coding um einiges übersichtlicher. Im nächsten Teil werden wir uns mit den neuen Inline-Funktionen zum Thema Zeichenkettenverarbeitung beschäftigen.
Quelle:
SAP Dokumentation String Templates
SAP Dokumentation Formatierungsoptionen