Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Zeichenkettenverarbeitung Dokument im Navigationsbaum lokalisieren

Im folgenden Beispiel werden Komponenten vom Typ X verwendet, um Zeichen abzulegen. In Unicode-Programmen ist dies nicht mehr möglich.

 

Vor der Unicode-Umstellung

 

data: begin of L_LINE,

        TEXT1(10) type c,

        MARK1(1) type x value '00',

        TEXT2(10) type c,

        MARK2(1) type x value '00',

        TEXT3(10) type c,

        MARK3(1) type x value '00',

        BLANK(100) type c,

      end of L_LINE,

 

      HEX0(1) type x value '00',

      CRLF(2) type x value '0D0A'.

 

L_LINE-TEXT 1 = 'SYSTEM: '.

L_LINE-TEXT 2 = 'USER: '.

L_LINE-TEXT 3 = 'CLIENT: '.

 

replace: HEX0 with SY-SYSID into L_LINE, ß Unicode-Fehler

         HEX0 with SY-UNAME into L_LINE, ß Unicode-Fehler

         HEX0 with SY-MANDT into L_LINE. ß Unicode-Fehler

 

condense L_LINE. ß Unicode-Fehler

concatenate L_LINE CRLF into L_LINE. ß Unicode-Fehler

 

*Weiterverarbeitung von L_LINE.

 

Nach der Unicode-Umstellung

 

Durch die Verwendung der Konstanten aus Klasse CL_ABAP_CHAR_UTILITIES kann die Verwendung von X-Feldern vollständig vermieden werden.

 

data:

  begin of L_LINE,

    TEXT1(10) type c,

    MARK1(1) type c
      value CL_ABAP_CHAR_UTILITIES=>MINCHAR,

    TEXT2(10) type c,

    MARK2(1) type c
      value CL_ABAP_CHAR_UTILITIES=>MINCHAR,

    TEXT3(10) type c,

    MARK3(1) type c
      value CL_ABAP_CHAR_UTILITIES=>MINCHAR,

    BLANK(100) type c,

  end of L_LINE,

 

  HEX0(1) type c,

  CRLF(2) type c.

 

HEX0 = CL_ABAP_CHAR_UTILITIES=>MINCHAR.

CRLF = CL_ABAP_CHAR_UTILITIES=>CR_LF.

 

L_LINE-TEXT1 = 'SYSTEM: '.

L_LINE-TEXT2 = 'USER: '.

L_LINE-TEXT3 = 'CLIENT: '.

 

replace: HEX0 with SY-SYSID into L_LINE,

         HEX0 with SY-UNAME into L_LINE,

         HEX0 with SY-MANDT into L_LINE.

 

condense L_LINE.

concatenate L_LINE CRLF into L_LINE.

 

*Weiterverarbeitung von L_LINE.

Anmerkung: Das vorgestellt Programm, das in ähnlicher Weise in einer "echten" Anwendung gefunden wurde, ist unnötig kompliziert und sicher kein Beispiel für einen guten Programmierstil. Eine viel klarere Lösung könnte folgendermaßen aussehen:

 

class CL_ABAP_CHAR_UTILITIES definition load.

data: L_LINE(133) type c.

 

concatenate ‘SYSTEM: ‘ SY-SYSID
            ‘USER: ‘ SY-UNAME
            ‘CLIENT: ‘ SY-MANDT
             CL_ABAP_CHAR_UTILITIES=>CR_LF into L_LINE.

Ende des Inhaltsbereichs