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 (0)
Werbung

ABAP - Predicative Method Call

Kategorie - ABAP

Durch das OO Konzept werden für komplexe Abfragen meist eigene Methoden verwendet. In diesem Artikel geht es um den Vergleich des Ergebnisses aus solchen Methoden.

14.05.2021

ABAP - Performance für den SELECT

Kategorie - ABAP

In diesem Artikel schauen wir uns noch ein paar Spezialfälle mit dem SELECT an und beleuchten die Performance dieser Konstrukte. Wir zeigen dir die aktuellen Alternativen dafür und geben kleinere Tipps beim Lesen.

02.04.2021

ABAP - Objekte prüfen (Instanzen)

Kategorie - ABAP

In diesem Artikel zeigen wir dir, wie du Instanzen analysieren und auf diese korrekt reagieren kannst, wenn du diese zum Beispiel bei einer Verarbeitung übergibst und individuell reagieren möchtest.

19.03.2021

ABAP - Schleifen

Kategorie - ABAP

Mit dem modernen ABAP wurden auch neue Schleifen und Möglichkeiten zur Einschränkung von Tabelleninhalten geschaffen. Diese neuen Befehle schauen wir uns in diesem Artikel näher an.

19.02.2021

ABAP - Vergleiche

Kategorie - ABAP

Heute betrachten wir uns das Thema Vergleiche und Vergleichsoperatoren im Hinblick auf die neuen Befehle und die aktuelle Verwendung. Was hat sich bisher alles geändert und was sollte man noch tun.

12.02.2021