ABAP - String Funktionen (Teil 3)
In diesem Artikel geht es um weitere neue String Funktionen und einen Ersatz für CONDENSE. Hierbei möchten wir dir noch zeigen, wieso du die neuen Funktionen verwenden solltest.
Inhaltsverzeichnis
Bereits in den letzten Teilen der String Funktionen sind wir auf die neuen und praktischen Funktionen eingegangen. Heute zeigen wir dir ein paar neue Möglichkeiten, eine Ablösung alter Ein-Zeilen-Kommandos und wieso du eigentlich diese ganzen neuen Funktionen benötigst.
CONDENSE
Die Anweisung dient zum Entfernen von führenden und abschließenden Leerzeichen in CHAR Feldern und Strings. Weiterhin werden mehrfache Leerzeichen innerhalb der Zeichenkette auf ein Leerzeichen verdichtet. Die Anweisung bietet außerdem noch eine Sonderfunktion um alle Leerzeichen zu entfernen.
In unseren Beispielen werden wir auf verschiedene Konstanten und Variablen verweisen, deshalb hier kurz die grundsätzlichen Definitionen:
CONSTANTS:
c_string TYPE string VALUE ` This is my name `,
c_char TYPE c LENGTH 25 VALUE ' This is my name '.
DATA:
ld_string TYPE string,
ld_char TYPE c LENGTH 25.
Hinweis: CHAR Felder füllen die letzten Stellen grundsätzlich mit Leerzeichen auf, deshalb ist die Angabe oben eigentlich überflüssig. Zur Gleichhaltung des Beispiels wurden diese aber mit übernommen.
Einfache Version
Im Beispiel wird dir sofort auffallen, dass die neue Funktion wieder mit Inline-Deklaration funktioniert und wir für die Übergabe keine eigene Variable benötigen, sondern direkt mit der Konstante arbeiten können.
" Old
ld_string = c_string.
CONDENSE ld_string.
ld_char = c_char.
CONDENSE ld_char.
" New
DATA(ld_new_string) = condense( c_string ).
DATA(ld_new_char) = condense( c_char ).
NO-GAPS
Für den Zusatz der CONDENSE Anweisung liefert die SAP aber keine Erweiterung der neuen Funktion. Hier kannst du aber auf eine bereits kennengelernte neue Funktion zurückgreifen, den Replace. Ist leider nicht so kurz zu schreiben, doch auch sehr verständlich bei der Umsetzung.
" Old
ld_string = c_string.
CONDENSE ld_string NO-GAPS.
ld_char = c_char.
CONDENSE ld_char NO-GAPS.
" New
DATA(ld_new_string) = replace( val = c_string sub = ` ` with = `` occ = 0 ).
DATA(ld_new_char) = replace( val = c_char sub = ` ` with = `` occ = 0 ).
Substring
Auch bekannt unter der Bezeichnung Teilfleldzugriffe benötigt man ab und zu mal nur einen Teil einer Zeichenkette bzw. eines Strings. Bisher arbeitete man mit der sehr kurzen Variante des Offsets und der Länge direkt an der entsprechenden Zeichenkette. Dafür gibt es nun die Zeichenketten-Funktion SUBSTRING, wie bereits auch in anderen Programmiersprachen.
" Old
ld_string = c_string+3(3).
ld_char = c_char+3(3).
" New
DATA(ld_new_string) = substring( val = c_string off = 3 len = 3 ).
DATA(ld_new_char) = substring( val = c_char off = 3 len = 3 ).
Verwendung
Du wirst dich die letzten Artikel zu diesen Themen sicherlich gefragt haben, wieso man die neuen Funktionen überhaupt verwenden sollte. Ein Vorteil, den wir bereits auch angesprochen hatten, ist natürlich die Verwendung und Verschachtelung innerhalb bestehender Aufrufe (Verkettung), sowie die Möglichkeit der Inline Deklaration.
Ein entscheidender Punkt ist aber die Verwendung im ABAP Coding und der gleichzeitigen Modellierung von Core Data Services (CDS). In einer HANA Umgebung sollten viele Aktionen mit den Daten per Code Pushdown auf die Datenbank ausgelagert werden. Deshalb sind auch in diesem Umfeld alle neuen Befehle zu finden und auch nur diese können eingesetzt werden. Eine Umgewöhnung auf die Nutzung der neuen Funktionen ist deshalb sehr sinnvoll.
Hier eine Kurze Erklärung der verwendeten Funktionen zur Definition der Spalten im CDS. Weiter Informationen zu String Funktionen in SQL über den folgenden Link.
- UPPER - Konvertierung des Feldinhalts auf Großbuchstaben, Abweichung zur ABAP Funktion TO_UPPER
- CONCAT_WITH_SPACE - Zusammenfügen des Inhalts mit einem Leerzeichen dazwischen
- REPLACE - Ersetzen der Semikolons im Ort durch Kommas (z.B. für den Abzug per CSV)
Fazit
Wie du gesehen hast, sind nicht alle neuen Befehle und Funktionen automatisch kürzer und einfacher zu nutzen. Es gibt allerdings auch Vorteile, direkt auf die neuen Funktionen umzusteigen, vor allem wenn du bereits auf einem HANA System arbeitest.
Quelle:
SAP Dokumentation - Condense
SAP Dokumentation - Replace
SAP Dokumentation - Substring