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)

2071

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)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP - XCO Bibliotheken

Kategorie - ABAP

Was kannst du mit der Bibliothek in ABAP und ABAP Cloud machen und wie nutzt du die Objekte am besten? Hier erfährst du mehr.

12.11.2024

ABAP - Type Casting

Kategorie - ABAP

Wie kommst du eigentlich an den ursprünglichen Typ einer Klasse bzw. Instanz, wenn diese in einer generischen Tabelle übergeben wird? In diesem Artikel prüfen wir die Möglichkeiten.

16.04.2024

ABAP - RETURN value

Kategorie - ABAP

Nach all den Jahren ist nun endlich der "echte" Return in ABAP angekommen, in diesem Artikel zeigen wir dir, wie der funktioniert und was er kann.

13.02.2024

ABAP Deep Dive - FOR (Schleifen)

Kategorie - ABAP

Schauen wir uns einmal die FOR Schleife etwas näher an. Wie funktioniert sie? Was muss ich beachten und was kann ich damit tun?

14.04.2023

ABAP Deep Dive - Tabellenzugriff (intern)

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal den Tabellenzugriff auf interne Tabellen an und wie sie den READ TABLE ablösen.

03.02.2023