Thursday, August 27, 2009

Encoding

Für Änderungen des Encodings ist die Klasse CL_ABAP_CONV_OBJ nützlich
(mehr Infos über die Klassendokumentation).
Der Report RSCP0032 kann für Tests und Informationsgewinnung rund um
Encoding genutzt werden.
Die Funktionsbausteine ECATT_CONV_STRING_TO_XSTRING und
ECATT_CONV_XSTRING_TO_STRING können für Transformationen genutzt werden.
In der Tabelle TCP00 sind die Codepages aufgeführt.

FORM decode_response USING pi_xstring type xstring CHANGING pie_string
type string.
DATA: lo_eref TYPE REF TO cx_transformation_error,
lv_errstr TYPE string,
lo_converter TYPE REF TO cl_abap_conv_obj.

* ändern des Encoding auf ISO-8859-1 (nur das versteht Inforate)
CREATE OBJECT lo_converter
EXPORTING
incode = '1133' " ISO-8859-1
outcode = '4103' " UTF-8
EXCEPTIONS
invalid_codepage = 1
internal_error = 2
OTHERS = 3.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL METHOD lo_converter->convert
EXPORTING
inbuff = pi_xstring
outbufflg = 0
IMPORTING
outbuff = pie_string
EXCEPTIONS
internal_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.

No comments: