将 ITAB 转换为 XSTRING 并返回
Convert ITAB to XSTRING and back
我需要将 itab 保存为 xstring 或类似的东西并将其保存在 dbtab 中。
稍后我需要从 dbtab 收集这个 xstring,并使用与之前完全相同的输入在 itab 中转换它。
我尝试了很多 fuba,例如:
SCMS_STRING_TO_XSTRING
或 SCMS_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 文档。
我需要将 itab 保存为 xstring 或类似的东西并将其保存在 dbtab 中。 稍后我需要从 dbtab 收集这个 xstring,并使用与之前完全相同的输入在 itab 中转换它。
我尝试了很多 fuba,例如:
SCMS_STRING_TO_XSTRING
或 SCMS_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 文档。