将 ITAB 转换为 XSTRING 并返回

Convert ITAB to XSTRING and back

我需要将 itab 保存为 xstring 或类似的东西并将其保存在 dbtab 中。 稍后我需要从 dbtab 收集这个 xstring,并使用与之前完全相同的输入在 itab 中转换它。

我尝试了很多 fuba,例如: SCMS_STRING_TO_XSTRINGSCMS_XSTRING_TO_BINARY 但我没有找到可以将其转换回来的东西。

有人以前试过类似的东西并给我一些样品吗?

很遗憾,我没有在其他博客上找到任何东西。

使用

import ... from data buffer

export ... to data buffer

将任何变量(重新)存储为 xstring。

或者您可以使用

import|export ... from|to database ...

我做了一些方法来做到这一点:

首先,我在 table 处循环并将其连接成一个字符串。 然后将字符串转换成 xstring。

 LOOP AT IT_TABLE ASSIGNING FIELD-SYMBOL(<LS_TABLE>).
CONCATENATE LV_STRING <LS_TABLE> INTO LV_STRING SEPARATED BY CL_ABAP_CHAR_UTILITIES=>NEWLINE.
ENDLOOP.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      TEXT   = IV_STRING
    IMPORTING
      BUFFER = LV_XSTRING.

返回会是这样的: 将 xstring 转换回字符串 字符串变成 table

 TRY.
    CL_BCS_CONVERT=>XSTRING_TO_STRING(
        EXPORTING
          IV_XSTR   = IV_XSTRING
          IV_CP     =  1100                " SAP character set identification
        RECEIVING
          RV_STRING = LV_STRING
      ).
  CATCH CX_BCS.
ENDTRY.

SPLIT IV_STRING AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO: TABLE <LT_TABLE> .

READ TABLE <LT_TABLE> ASSIGNING FIELD-SYMBOL(<LS_TABLE>) INDEX 1.
IF <LS_TABLE> IS INITIAL.
  DELETE TABLE <LT_TABLE> FROM <LS_TABLE>.
ENDIF.

转换为 xstring 的简单解决方案:

CALL TRANSFORMATION id SOURCE root = it_table RESULT XML DATA(lv_xstring).

后退会是这样的:

CALL TRANSFORMATION id SOURCE XML lv_xstring RESULT root = it_table.

有关详细信息,请参阅有关使用 XSL Identity Transformation 进行数据序列化和反序列化的 ABAP 文档。