在不使用功能模块的情况下将字符串转换为xstring

时间:2018-02-19 13:51:19

标签: abap

我想将字符串转换为xstring。我知道有一个名为&#34的功能模块; SCMS_STRING_TO_XSTRING"

但由于不再使用功能模块是一个好习惯,基于类的解决方案将是我的首选方式。

我知道有一个班级

cl_abap_conv_in_ce

但我只能验证,这个类可以将xstrings转换为字符串。我想知道相反的情况。有没有人有关于如何做这个班的经验?

3 个答案:

答案 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( )内部所做的事情的本质。