This is a test message to test the length of the message box.
Login
ABAP String Funktionen (Teil 3)
Erstellt von Software-Heroes

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.

Werbung

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


Enthaltene Themen:
Modernes ABAPString Funktionen
Kommentare (4)

ABAP Deep Dive - VALUE

Kategorie - ABAP

In diesem Artikel wollen wir uns noch einmal das Value Statement in allen Ausprägungen anschauen und wie du es in deiner täglichen Arbeit nutzen kannst.

11.11.2022

ABAP - Common Table Expression (CTE)

Kategorie - ABAP

In diesem Artikel wollen wir uns einmal den allgemeinen Tabellenausdruck WITH anschauen und wie du ihn im Alltag nutzen kannst.

28.10.2022

ABAP Deep Dive - CORRESPONDING

Kategorie - ABAP

In diesem Artikel einmal etwas mehr über das neue Corresponding Statement und wie man es im Detail einsetzen kann. Dabei schauen wir einmal auf die zusätzlichen Features.

16.09.2022

ABAP - Step

Kategorie - ABAP

Heute einmal ein neuer Zusatz für die Schleifen und wie du ihn verwenden kannst. Mit Step hast du die Möglichkeiten Schritte in einer Schleife zu überspringen.

02.09.2022

ABAP - SELECT FROM @itab

Kategorie - ABAP

Über eine interne Tabelle selektieren war früher mit vielen Zeilen Code realisiert, heute funktioniert es auch praktisch über den Select.

20.01.2022