ABAP: ## Werte in String ersetzen

Ein # Zeichen in einem ABAP String kann auf ein Sonderzeichen oder ein unsichtbares Zeichen im String deuten. Ein REPLACE hilft hier dann nicht weiter. Das Zeichen # kann für verschiedene Werte stehen. Zum Beispiel für einen NULL Wert, CR_LF, NEWLINE oder auch FORM_FEED usw.  Wie kann aber nun das Zeichen # entfernt werden?

Beispiel mit NULL Werten

NULL Character / 00 / Zero entfernen

Der erste Weg führt über die Klasse cl_abap_conv_in_ce. Hier wird der NULL Wert in einer Variable gespeichert und anschließend das REPLACE ausgeführt.

DATA l_null_character TYPE c LENGTH 1.
l_null_character = cl_abap_conv_in_ce=>uccpi( 0 ).
REPLACE ALL OCCURRENCES OF l_null_character  IN l_temptext WITH ''.

Im zweiten Weg wird eine Variable vom Typ x mit dem Wert ’00’ angelegt und dieser Wert wird dann mit Replace getauscht.

DATA l_hexwert TYPE x VALUE '00'.
REPLACE ALL OCCURRENCES OF l_hexwert IN l_temptext WITH ''.

NEWLINE, CR_LF entfernen

Mit Hilfe der Klasse cl_abap_char_utilities lassen sich folgende Zeichen löschen:

HORIZONTAL_TAB
VERTICAL_TAB
NEWLINE
CR_LF
FORM_FEED
BACKSPACE

Dies geschieht mit folgendem Aufruf.

REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>CR_LF IN l_temptext WITH ''.
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB IN l_temptext WITH ''.
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>VERTICAL_TAB IN l_temptext WITH ''.
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>NEWLINE IN l_temptext WITH ''.
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>FORM_FEED IN l_temptext WITH ''.
REPLACE ALL OCCURRENCES OF CL_ABAP_CHAR_UTILITIES=>BACKSPACE IN l_temptext WITH ''.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.