abap 转换成字符串_ABAP 将文本转换为二进制
以下東東是可以建立一個類(se24),含有三個方法,把系統中的String字符轉換為Xsting類型,由於存儲PDF等文件到SAP系統時,這是必經一步,所以較為使用
類的兩個Attribute
GC_TAB Constant Public Type CHAR1 Single-Character Indicator CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
GC_CRLF Constant Public Type CHAR1 Single-Character Indicator CL_ABAP_CHAR_UTILITIES=>CR_LF
類的三個方法
XSTRING_TO_SOLIX Static Method Public Binary Format (XSTRING) > Binary Format (SOLIX)
STRING_TO_SOLIX Static Method Public Running Text (STRING) > Binary Format (SOLIX)
STRING_TO_XSTRING Static Method Public Running Text (STRING) > Binary Format (XSTRING)
*傳入iv_xstring type XSTRING為轉換後的比特字符(需要轉換的文本)
*傳出et_solix type SOLIX_TAB為二進制字符內表
*將一個比特字符按二進制行(255)一行一行添加進入內表
IV_XSTRING Importing Type XSTRING Input data
ET_SOLIX Returning Type SOLIX_TAB Output data
data lv_size type i.
data lv_off type i.
data ls_solix type solix.
data lv_rows type i.
data lv_last_row_len type i.
data lv_row_len type i.
describe table et_solix.
lv_row_len = sy-tleng.
lv_size = xstrlen( iv_xstring ).
lv_rows = lv_size div lv_row_len.
lv_last_row_len = lv_size mod lv_row_len.
do lv_rows times.
ls_solix-line = iv_xstring+lv_off(lv_row_len).
append ls_solix to et_solix.
add lv_row_len to lv_off.
enddo.
if lv_last_row_len > 0.
ls_solix-line = iv_xstring+lv_off(lv_last_row_len).
append ls_solix to et_solix.
endif.
*以下方法可以把一個String類型字符轉換為Xstring類型
***********************************************
IV_STRING Importing Type STRING Input data
IV_CONVERT_CP Importing Type OS_BOOLEAN 'X' Run Code Page Conversion
IV_CODEPAGE Importing Type ABAP_ENCOD Target Code Page in SAP Form (Default = SAPconnect Setting)
IV_ADD_BOM Importing Type OS_BOOLEAN Add Byte-Order Mark
EV_XSTRING Returning Type XSTRING Output data
method string_to_xstring.
data lo_conv type ref to cl_abap_conv_out_ce.
data lv_bom type xstring.
data lv_xbuf type xstring.
data lv_cp type abap_encod.
try.
if iv_convert_cp is initial.
export p = iv_string to data buffer lv_xbuf.
import p = ev_xstring from data buffer lv_xbuf
in char-to-hex mode.
else.
if iv_codepage is initial.
lv_cp = cl_sx_mime_singlepart=>get_sx_node_codepage( ).
else.
lv_cp = iv_codepage.
endif.
* convert string to xstring using class cl_abap_conv_out_ce
* in this form available also in 620
lo_conv = cl_abap_conv_out_ce=>create(
encoding = lv_cp
ignore_cerr = 'X' ).
lo_conv->write( data = iv_string ).
ev_xstring = lo_conv->get_buffer( ).
* add the byte order mark
if iv_add_bom = 'X'.
case lv_cp.
when '4110'. "UTF-8
lv_bom = cl_abap_char_utilities=>byte_order_mark_utf8.
when '4102'. "UTF-16BE
lv_bom = cl_abap_char_utilities=>byte_order_mark_big.
when '4103'. "UTF-16LE
lv_bom = cl_abap_char_utilities=>byte_order_mark_little.
endcase.
if lv_bom is not initial.
concatenate lv_bom ev_xstring into ev_xstring in byte mode.
endif.
endif.
endif.
catch cx_root. "#EC *
raise exception type cx_bcs
exporting
error_type = cx_bcs=>creation_failed.
endtry.
endmethod.
**套用上述兩個方法 可以將一個String類型直接放入文件存儲SAP系統的內表類型
***************************************************************
XSTRING_TO_SOLIX Static Method Public Binary Format (XSTRING) > Binary Format (SOLIX)
STRING_TO_SOLIX Static Method Public Running Text (STRING) > Binary Format (SOLIX)
STRING_TO_XSTRING Static Method Public Running Text (STRING) > Binary Format (XSTRING)
method string_to_solix.
data lv_xstring type xstring.
lv_xstring = string_to_xstring(
iv_string = iv_string
iv_codepage = iv_codepage
iv_add_bom = iv_add_bom ).
et_solix = xstring_to_solix( lv_xstring ).
ev_size = xstrlen( lv_xstring ).
endmethod.
文章来自于网络,如果侵犯了您的权益,请联系站长删除!