我想将字符串转换为xstring。我知道有一个名为&#34的功能模块; SCMS_STRING_TO_XSTRING"
但由于不再使用功能模块是一个好习惯,基于类的解决方案将是我的首选方式。
我知道有一个班级
cl_abap_conv_in_ce
但我只能验证,这个类可以将xstrings转换为字符串。我想知道相反的情况。有没有人有关于如何做这个班的经验?
答案 0 :(得分:5)
与此同时,我自己找到了解决方案。对于可能感兴趣的人:
DATA(lo_conv) = cl_abap_conv_out_ce=>create( ).
lo_conv->write( data = lv_content ).
DATA(lv_xstring) = lo_conv->get_buffer( ).
答案 1 :(得分:3)
XSTRING的帮助文本为此提供了一个很好的功能方法:
cl_abap_codepage=>convert_to( )
答案 2 :(得分:0)
首先,您需要决定编码的方式。 UTF-8? UTF-16?只是简单的HEX?
对于UTF-8您可以使用系统调用(而不是函数调用)执行以下操作:
首先进行全局一次性初始化:
STATICS: g_conv_utf8 TYPE xstring. " used for conversion
DATA: l_flags TYPE c LENGTH 1.
system-call convert id 20
srcenc 'SET LOCALE LANGUAGE'
dstenc 'UTF-8'
replacement '#'
type l_flags
cinfo g_conv_utf8.
然后进行后续调用:l_string - > l_xstring(+ l_len)
SYSTEM-CALL CONVERT ID 24
DATA l_string
ENDIAN ' '
IGNORE_CERR 'X'
N -1
BUFFER l_xstring
LEN l_length
CINFO g_conv_utf_8.
这是cl_abap_codepage=>convert_to( )
内部所做的事情的本质。