Ansicht
Dokumentation

CL_ABAP_CONV_X2X_CE - Codepage- und Endian Konvertierung zwischen ext. Formaten

CL_ABAP_CONV_X2X_CE - Codepage- und Endian Konvertierung zwischen ext. Formaten

Vendor Master (General Section)   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

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

Die Anwendung der Klasse entspricht der Transformation von Daten aus einem Binäreingabestrom in 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 verwendete Zeichenformat, 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 insbesondere zum 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 Wert 258 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






ROGBILLS - Synchronize billing plans   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8748 Date: 20240329 Time: 030123     sap01-206 ( 78 ms )