Stringoperationen (ABAP)
Sammlung von Codebeispielen zur Nutzung von ABAP Stringfunktionen.
Dieser Artikel beschäftigt sich mit eingebauten zeichenartigen Typen.
Teilstring
Extrahieren eines Teilstrings aus einem Gesamtstring:
DATA: LV_STRINGIN TYPE STRING,
LV_STRINGOUT TYPE STRING.
LV_STRINGIN = 'Hallo Welt und guten Morgen Deutschland'.
LV_STRINGOUT = LV_STRINGIN+6(4). # Kopiere vier Zeichen startend vom 7. Zeichen (1. Zeichen wird mit Null gerechnet).
# LV_STRINGOUT enthält am Ende "Welt"
Teilen von Strings
Teilen eines Strings anhand eines Trennzeichens in zwei Teile.
Das Trennzeichen (Hier: Leerzeichen) wird dabei entfernt.
DATA: LV_SPLIT1 TYPE STRING,
LV_SPLIT2 TYPE STRING,
LV_SPLCHAR TYPE CHAR1 VALUE ' '.
SPLIT C_DATA AT LV_SPLCHAR INTO LV_SPLIT1 LV_SPLIT2.
C_DATA = LV_SPLIT1.
Strings zusammensetzen
Strings können entweder inline oder mit speziellen Befehlen zusammengesetzt werden.
DATA: LV_STR1 TYPE STRING,
LV_STR2 TYPE STRING,
LV_STROUT TYPE STRING.
LV_STROUT = LV_STR1 LV_STR2. # Inline (?)
CONCATENATE LV_STR1 LV_STR2 INTO LV_STROUT. # Mit CONCATENATE
Konvertierung in Groß-/Kleinschreibung
DATA: I_TEXT TYPE STRING.
TRANSLATE I_TEXT TO UPPER CASE.
CONCATENATE '*' I_TEXT '*' INTO I_TEXT.
WRITE:
/ 'I_TEXT: ', I_TEXT.
Tabelle von Strings
PARAMETERS: pa_token TYPE c LENGTH 70.
DATA: lt_fields TYPE stringtab.
" Liste mit Spaltennamen erstellen
APPEND pa_token TO lt_fields.
Numerische Textfelder
DATA: e_text TYPE string,
lv_vers TYPE n LENGTH 7,
lv_vers1 TYPE n LENGTH 4,
lv_vers2 TYPE n LENGTH 3.
START-OF-SELECTION.
lv_vers = '2018014'.
WRITE:
/ 'NUMC before: ', lv_vers.
lv_vers1 = lv_vers(4).
lv_vers2 = lv_vers+4(3).
IF lv_vers2 > 12.
lv_vers1 = lv_vers1 + 1.
lv_vers2 = lv_vers2 - 12.
ENDIF.
CONCATENATE lv_vers1 lv_vers2 INTO e_text.
WRITE:
/ 'NUMC after: ', e_text.
Zeichen ersetzen mit regulären Ausdrücken
Führende Ausrufezeichen ersetzen
DATA: i_text TYPE string,
e_text TYPE string.
START-OF-SELECTION.
i_text = '!Hallo Welt und guten Morgen Deutschland.'.
WRITE:
/ '*** Führende Ausrufezeichen durch Unterstriche ersetzen ***',
/ 'I_TEXT: ', i_text.
e_text = i_text.
Replace ALL OCCURRENCES OF regex '\A(!)' in e_text WITH '_'.
WRITE:
/ 'E_TEXT: ', e_text.
Ungültige Zeichen oder Leerschritte ersetzen
DATA: i_text TYPE string,
e_text TYPE string.
START-OF-SELECTION.
i_text = '!Hallo Welt und guten Morgen Deutschland.'.
WRITE:
/ '*** Nicht zugelassene Zeichen durch Unterstriche ersetzen (hier: a und e) ***',
/ 'I_TEXT: ', i_text.
e_text = i_text.
Replace ALL OCCURRENCES OF regex '[^!"%&()*+,-./:;<=>?_ 0123456789BCDFGHIJKLMNOPQRSTUVWXYZbcdfghijklmnopqrstuvwxyz.]' in e_text WITH '_'.
WRITE:
/ 'E_TEXT: ', e_text.
i_text = '!Hallo Welt und guten Morgen Deutschland.'.
WRITE:
/ '*** Leerzeichen durch Unterstriche ersetzen ***',
/ 'I_TEXT: ', i_text.
e_text = i_text.
Replace ALL OCCURRENCES OF regex '[ ]' in e_text WITH '_'.
WRITE:
/ 'E_TEXT: ', e_text.
NUMC, DATS, TIMS
Die Datentypen c und string sind allgemeine zeichenartige Datentypen, während n, d und t spezielle Eigenschaften haben. Sie sind die einzigen eingebauten ABAP-Typen, die es passend zu speziellen Typen NUMC, DATS und TIMS des ABAP Dictionary gibt. Alle anderen speziellen Datentypen des ABAP Dictionary sind allgemeinen ABAP-Typen zugeordnet.
Weitere Quellen
http://www.saptraininghq.com/10-must-know-sap-abap-character-string-coding-techniques/