*&---------------------------------------------------------------------*
*& Form CONVERT_TO_X
*&---------------------------------------------------------------------*
* 转换数据格式进入16进制,防止传输过程中碰到中文字符是出现乱码的问题
*----------------------------------------------------------------------*
FORM CONVERT_TO_X TABLES IT_EXPORT LIKE T_EXPORT[] "输出表
USING L_INPUT TYPE STRING"待转化的字符串
CHGLINE TYPE C"是否需要换行
conv TYPE REF TO cl_abap_conv_out_ce "字符处理类
CHANGING X_STRING TYPE XSTRING
L_TTLEN TYPE I. "总长度
DATA:L_XSTRLEN TYPE I,"转换后的长度长度
BUFFER TYPE XSTRING.
CONSTANTS:L_LINELEN TYPE I VALUE 80."每行的长度.
TRY.
CALL METHOD CONV->WRITE( DATA = L_INPUT ).
CATCH cx_sy_codepage_converter_init.
* MESSAGE ID 'FES' TYPE 'E' NUMBER '024'.
CATCH cx_sy_conversion_codepage.
* MESSAGE ID 'FES' TYPE 'E' NUMBER '026'.
* text = oref->get_text( ).
* WRITE: / INPUT COLOR COL_KEY, TEXT COLOR COL_NEGATIVE.
CATCH cx_parameter_invalid_type.
* MESSAGE ID 'FES' TYPE 'E' NUMBER '023'.
CATCH cx_parameter_invalid_range.
* MESSAGE ID 'FES' TYPE 'E' NUMBER '023'.
ENDTRY.
IF CHGLINE = 'X'.
CALL METHOD CONV->WRITE( DATA = cl_abap_char_utilities=>cr_lf )."输入换行符
ENDIF.
BUFFER = CONV->GET_BUFFER( ).
CONCATENATE X_STRING BUFFER INTO X_STRING IN BYTE MODE.
DO.
L_XSTRLEN = XSTRLEN( X_STRING ).
IF L_XSTRLEN >= L_LINELEN.
L_TTLEN = L_TTLEN + L_LINELEN.
APPEND X_STRING TO IT_EXPORT.
SHIFT X_STRING BY L_LINELEN PLACES IN BYTE MODE.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDFORM. " CONVERT_TO_X
浙公网安备 33010602011771号