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?
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 ''.