CL_ABAP_CONV_X2X_CE - Codepage- und Endian Konvertierung zwischen ext. Formaten

CL_GUI_FRONTEND_SERVICES - Frontend Services   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Funktionalität

Instanzen der Klasse CL_ABAP_CONV_X2X_CE ermöglichen die Konvertierung von Textdaten zwischenverschiedenen Zeichensätzen und die Konvertierung von numerischen Daten zwischen verschiedenen Zahlenformaten (Bytereihenfolge).

Die Anwendung der Klasse entspricht der Transformation von Daten aus einem Binäreingabestromin einen Binärausgabestrom: Die Datenobjekte werden sequentiell aus einem Eingabepuffer gelesen und in einen Ausgabepuffer geschrieben.

I.a. werden die Methoden der Klasse wie folgt verwendet:

CL_ABAP_CONV_X2X_CE=>CREATE
Eine Konvertiererinstanz wird angelegt. Als Parameter können angegeben werden: Der Eingabepuffer(d.h. der Binärstring, welcher die zu lesenden Daten enthält), das im Eingabepuffer verwendeteZeichenformat, die im Eingabepuffer verwendete Bytereihenfolge, das im Ausgabepuffer zu verwendende Zeichenformat, die im Ausgabepuffer zu verwendende Bytereihenfolge, etc.
CONVERT_C, CONVERT_...
Daten werden konvertiert. Aufeinanderfolgende Aufrufe dieser Methode ermöglichen das sequentielle Lesen von Daten aus dem Eingabepuffer und Anfügen an das Ende des Ausgabepuffers.
GET_OUT_BUFFER
Holen des Ausgabepuffers zur weiteren Verarbeitung. (Schreiben in eine Datei, Versenden per RFC, o.ä.)
RESET
Einzelne Attribute der Konvertiererinstanz können neu gesetzt werden. (Diese Methode ist insbesonderezum Aufsetzen auf einem neuen Eingabepuffer und zum Löschen des Ausgabepuffers unter Beibehaltung der übrigen Attribute gedacht.)

Beziehungen

CL_ABAP_CONV_IN_CE
Konvertierung von Binärdaten in ABAP Datenobjekte.
CL_ABAP_CONV_OUT_CE
Konvertierung von ABAP Datenobjekten in ein Binärformat.
CL_ABAP_CHAR_UTILITIES
Diverse Attribute und Methoden zu Zeichensätzen und Bytereihenfolge.

Beispiel

Im folgenden Beispiel werden Texte von UTF-8 in die Codepage 1100 (Latin-1) und Zahlen aus der little-endian Darstellung in die big-endian Darstellung konvertiert.

DATA:

  in_buffer TYPE XSTRING,

  out_buffer TYPE XSTRING,

  conv TYPE REF TO cl_abap_conv_x2x_ce.

in_buffer = '414220C3B602010000'.

conv = cl_abap_conv_x2x_ce=>create(

         in_encoding = 'UTF-8'

         in_endian = 'L'

         out_encoding = '1100'

         out_endian = 'B'

         input = in_buffer

       ).

CALL METHOD conv->convert_c( n = 5 ).

CALL METHOD conv->convert_i( ).

out_buffer = conv->get_out_buffer( ).

Der Inhalt der Variablen in_buffer setzt sich zusammen aus 5 Bytes (hexadezimal "414220C3B6"), die 4 UTF-8 Zeichen repräsentieren(A, B, SPACE, o-Umlaut), und 4 Bytes (hexadezimal "02010000"), die den Wert258 im little-endian Format repräsentieren. Diese Daten werden konvertiert und die Variable out_buffer enthält nun den Hexadezimalstring "414220F600000102". Dieser setzt sich zusammen aus:

  • 4 Bytes (hexadezimal "414220F6"), die die obigen 4 Zeichen in Codepage 1100 (ISO-8859-1) repräsentieren. Man beachte, daß sich die Längenangabe n =5 auf die Anzahl der zu konvertierenden elementaren Zeichen bezieht. Bei Multi-Byte Codepages wie UTF-8 bedeutet dies, daß das Multi-Byte Zeichen"C3B6" in der Länge 2 gezählt wird.
  • 4 Bytes (hexadezimal "00000102"), welche den Wert 258 im big-endian Format repräsentieren.

Wenn die gewünschte Bytereihenfolge in dem von TRANSLATE... NUMBER FORMAT erwarteten Format (als N(4) Wert) vorliegt, kann wie folgt vorgegangen werden:

TYPE-POOLS: ABAP.

CLASS cl_abap_char_utilities DEFINITION LOAD.

DATA:

  in_number_format(4) TYPE N VALUE '0101',

  out_number_format(4) TYPE N VALUE '0000'.

DATA:

  in_endian TYPE ABAP_ENDIAN,

  out_endian TYPE ABAP_ENDIAN,

  conv TYPE REF TO cl_abap_conv_x2x_ce..

in_endian  = cl_abap_char_utilities=>number_format_to_endian(

               in_number_format

             ).

out_endian = cl_abap_char_utilities=>number_format_to_endian(

               out_number_format

             ).

conv = cl_abap_conv_x2x_ce=>create(

         in_encoding = 'UTF-8'

         in_endian = in_endian

         out_encoding = '1100'

         out_endian = out_endian

         input = in_buffer

       ).

Hinweise

Details sind in der Dokumentation der jeweiligen Methoden erklärt.

Weiterführende Informationen



CPI1466 during Backup   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.


Length: 8174 Date: 20120527 Time: 082909     triton ( 157 ms )