Die wichtigsten String Operatoren in ABAP

Dieser Artikel stellt die wichtigsten String-Operatoren in ABAP vor. Anhand zahlreicher Beispiele wird der Funktionsumfang der Operatoren verständlich gemacht.

Eine Zeichenkette vom Datentyp STRING ist einer der am häufigsten verwendeten Datentypen in der Programmiersprache ABAP. Der große Vorteil besteht darin, dass zur Designzeit, also während der Entwicklung, nicht festgelegt werden muss, wie groß der String sein soll. Dies ist für den ABAP-Entwickler sehr komfortabel. Außerdem bietet ABAP eine große Anzahl von Operatoren, mit denen der String verändert werden kann.

Zu den wichtigsten String Operatoren in ABAP gehören:

  • SHIFT – Zeichenkette verschieben
  • REPLACE – Zeichen ersetzen
  • CONDENSE – Zeichenkette verdichten
  • CONCATENATE – Textfelder zusammenschließen
  • SEARCH – In Zeichenketten suchen
  • SPLIT – Zeichenkette teilen
  • STRLEN – Länge einer Zeichenkette

Beispiele für Zeichenketten

" Deklaration von Zeichenketten
DATA: lv_char1     TYPE c, " Zeichenkette Länge 1
      lv_char2(10) TYPE c, " Zeichenkette Länge 10
      lv_char3     TYPE char255, " Zeichenkette Länge 255
      lv_char4     TYPE text255, " Zeichenkette Länge 255 (Case sensitive)
      lv_char5     TYPE string. " String

In ABAP gibt es zwei Arten von Zeichenliteralen, die sich im Datentyp und in der Behandlung von Leerzeichen unterscheiden:

  • Textfeldliteral – Datentyp c
  • Stringliteral – Datentyp string

Beide unterscheiden sich in der Behandlung schließender Leerzeichen.

Bei Textfeldliteralen werden schließende Leerzeichen ignoriert und so behandelt, als wären sie nicht vorhanden. Ein Textfeldliteral ‚ERP‘ wird als ‚ERP‘ und ein Textfeldliteral ‚ ‚ als leerer Wert behandelt. Die REPLACE-Anweisung behandelt einen leeren Suchbegriff, indem sie den Ersetzungsbegriff vor der zu bearbeitenden Zeichenkette einfügt.

Der Datentyp C wird linksbündig ausgerichtet und Leerzeichen werden rechts aufgefüllt. Der Zeichendatentyp wird als Standarddatentyp verwendet, wenn bei der Deklaration kein Datentyp angegeben wird. Wird bei der Deklaration ein Zeichendatentyp verwendet, muss die Länge der Zeichenkette in der Deklaration selbst angegeben werden. Ohne Angabe einer Länge besitzt dieser die Länge von 1. Maximal sind 65.535 Zeichen möglich. Bei der Verwendung von Zeichenkette sollte man zudem beachten, ob sie case-sensitive sind. Im Artikel „SAP-Feld case sensitive“ wird im Detail beschrieben, wie man prüfen kann, ob ein Datenelement case-sensitive ist oder nicht.

SHIFT – Zeichenkette verschieben

Mit dem Operator SHIFT kann eine Zeichenkette verschoben werden. Er wird verwendet, um den Inhalt einer Zeichenkette nach links oder rechts zu verschieben. Er ist besonders nützlich, um führende Nullen zu entfernen.

lv_char5 = '007'.
" SHIFT - Führende Nullen entfernen
SHIFT lv_char5 LEFT DELETING LEADING '0'.
"7
lv_char5 = '  007'.
" SHIFT - Führende Leerzeichen entfernen
SHIFT lv_char5 LEFT DELETING LEADING space.
"007
lv_char5 = '007'.
"SHIFT - Zeichenkette um 2 Stellen nach rechts verschieben
SHIFT lv_char5 BY 2 PLACES RIGHT.
"  007

REPLACE – Zeichen ersetzen

Um Zeichen oder ganze Wörter in einer Zeichenkette zu ersetzen, verwendest Du den Operator REPLACE. Ersetzt die Teilzeichenkette durch eine andere Teilzeichenkette, die in der Hauptzeichenkette angegeben ist. Der Operator REPLACE kann zudem verwendet werden, um reguläre Ausdrücke in ABAP zu verwenden.

" REPLACE - Ein Zeichen entfernen
lv_char5 = 'ERP UP - Wissenswertes über SAP ERP und SAP S/4HANA'.

REPLACE '-' IN lv_char5 WITH ''.

"ERP UP  Wissenswertes über SAP ERP und SAP S/4HANA
" Leerzeichen entfernen (Datentyp beachten - Textfeldliteral oder Stringliteral)
lv_char5 = 'ERP UP'.

REPLACE ` ` IN lv_char5 WITH '-'.

"ERP-UP
" REPLACE - Alle Zeichen entfernen
lv_char5 = 'ERP UP - Wissenswertes über SAP ERP und SAP S/4HANA'.

REPLACE ALL OCCURRENCES OF 'SAP' IN lv_char5 WITH ''.

"ERP UP - Wissenswertes über  ERP und  S/4HANA
" REPLACE mit regulären Ausdrücken
DATA: lv_regex       TYPE c LENGTH 12 VALUE '[eE][rR][pP]',
      lv_input_regex TYPE text100.


lv_input_regex = 'ERP UP, ERP-UP, erp up, erp-up'.

REPLACE ALL OCCURRENCES OF REGEX lv_regex IN lv_input_regex WITH ''.

IF sy-subrc = 0.
  " UP, -UP,  up, -up
  WRITE: / lv_input_regex.
ELSE.
  WRITE: / 'Nichts gefunden'.
ENDIF.

CONDENSE – Zeichenkette verdichten

Um überflüssige Leerzeichen zu entfernen, kann CONDENSE verwendet werden. Der Operator CONDENSE entfernt Leerzeichen.

" CONDENSE - Entfernt überflüssige Leerzeichen
lv_char5 = 'ERP           UP          - Wissenswertes             über SAP ERP und SAP S/4HANA'.

CONDENSE lv_char5.

"ERP UP - Wissenswertes über SAP ERP und SAP S/4HANA
" CONDENSE NO-GAPS - Entfernt alle Leerzeichen
lv_char5 = '                  ERP_UP             '.

CONDENSE lv_char5 NO-GAPS.

"ERP_UP

CONCATENATE – Textfelder zusammenschließen

Eine der am häufigsten verwendeten Operatoren ist die Verknüpfung von Textfeldern mit CONCATENATE. Der Operator CONCATENATE wird verwendet, um Zeichenketten zu einer Zeichenkette zu verknüpfen. Meistens werden hierbei zwei Zeichenketten zu einer dritten Zeichenkette verknüpft.

" CONCATENATE - Zeichenketten in eine Zeichenkette verbinden
CONCATENATE 'S/' '4HANA' INTO lv_char5.
"S/4HANA
" CONCATENATE - Zeichenketten in eine Zeichenkette mit Leerzeichen verbinden
CONCATENATE 'ERP' 'UP' INTO lv_char5 SEPARATED BY space.
"ERP UP

CONCATENATE 'ERP' ` ` 'UP' INTO lv_char5.
"ERP UP
" CONCATENATE - Zeichenketten in eine Zeichenkette mit Trennzeichen verbinden
CONCATENATE 'ERP' 'UP' INTO lv_char5 SEPARATED BY '-'.
"ERP-UP

SEARCH – In Zeichenketten suchen

Für die Suche in Zeichenketten kannst Du den Operator SEARCH verwenden. Dieser eignet sich hervorragend, wenn Du in einer Zeichenkette ein Wort suchen möchtest.

DATA: lv_string TYPE string VALUE 'ERP UP - Wissenswertes über SAP ERP und SAP S/4HANA',
      lv_word   TYPE string VALUE 'SAP'.

" SEARCH - Suche Wort in String
SEARCH lv_string FOR lv_word.
IF sy-subrc = 0.
  WRITE:/ 'Gefunden'.
ELSE.
  WRITE:/ 'Nicht gefunden'.
ENDIF.

SPLIT – Zeichenkette teilen

Wenn ein Muster in einer Zeichenkette erkannt wird, kann der Operator SPLIT verwendet werden, um einen bestimmten Textabschnitt aus einer Zeichenkette herauszuschneiden. Dabei wird der Inhalt eines Feldes in zwei oder mehr Felder aufgeteilt.

DATA: lv_string  TYPE string VALUE 'ERP UP',
      lv_string2 TYPE string VALUE 'ERP-UP',
      lv_word1   TYPE string,
      lv_word2   TYPE string.


" SPLIT - Wort bei Leerzeichen trennen
SPLIT lv_string AT space INTO lv_word1 lv_word2.

SPLIT lv_string2 AT '-' INTO lv_word1 lv_word2.

Teil einer Zeichenkette ermitteln

Die direkte Positionsbestimmung in einer Zeichenfolge ist sehr nützlich und wird häufig verwendet. Kennt man die genaue Position eines Wortes oder Zeichens in einer Zeichenkette, so kann man dieses Wort oder Zeichen leicht ermitteln. Man möchte z.B. den Buchungskreis oder die Belegnummer aus dem Objektschlüssel ermitteln und weiß, dass der Aufbau des Objektschlüssels definiert und immer gleich ist. Direkt nach der Zeichenkette gibt man mit der Zahl hinter dem Pluszeichen (+) den Index an, ab dem die Teilzeichenkette ermittelt werden soll. Die Zählung beginnt bei 0. Anschließend wird in Klammern () die Länge der Teilzeichenkette angegeben.

DATA: lv_string  TYPE string VALUE 'ERP UP',
      lv_word1   TYPE string,
      lv_word2   TYPE string.


" Teil einer Zeichenkette ermitteln
lv_word1 = lv_string(3).
"ERP
lv_word2 = lv_string+4(2).
"UP

STRLEN – Länge einer Zeichenkette

Um die Länge einer Zeichenkette zu ermitteln, kann die Anweisung STRLEN verwendet werden. Die Funktion STRLEN () gibt die Anzahl der in der Zeichenkette enthaltenen Zeichen zurück.

DATA: lv_length TYPE i,
      lv_string TYPE string VALUE 'ERP UP'.

" STRLEN - Länge einer Zeichenkette ermitteln
lv_length = strlen( lv_string ).
"6

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar