ABAP 内表与 XML 转换

作者:斌将军 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表。

事务代码:STRANS

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

选择简单转换

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

以图形方式编辑

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

右键插入新行

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

选择参考的类型。 **此处的TYPE类型是SE11中创建的表类型**

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

SE11表类型如下

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

结构为嵌套结构,其中包含详细信息的表类型

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

详细信息表类型

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

其中包含两个详细信息字段

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

插入行后整个结构如下

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

在源代码中将会看到如下信息

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

完成XML格式

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

## 3.1 内表与 XML 转换

定义变量

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

头行内表赋值

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

将内表转换为XML,并将返回的二进制字符串转为XML字符串

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

将XML转换为内表

ABAP 内表与 XML 转换 - 封面图
ABAP 内表与 XML 转换 - 封面图

## 3.2 源代码

"-----------------------------------------@斌将军--------------------------------------------DATA:LT_EKKO TYPE ZTXML001, GT_EKKO TYPE ZTXML001, GS_EKKO TYPE ZSXML001, GT_EKPO TYPE ZTDETAIL, GS_EKPO TYPE ZSDETAIL, XML_XSTRING TYPE XSTRING, XML_STRING TYPE STRING, LO_OREF TYPE REF TO CX_ST_ERROR, LV_MESSAGE TYPE CHAR200. "输出参数

"行结构GS_EKPO-EBELP = '00010'.GS_EKPO-LOEKZ = 'X'.APPEND GS_EKPO TO GT_EKPO.

"头结构GS_EKKO-ID = '111'.GS_EKKO-EBELN = '4100000011'.GS_EKKO-BUKRS = '2000'.GS_EKKO-DETAIL = GT_EKPO.APPEND GS_EKKO TO GT_EKKO.

"将内表转换为XMLTRY . CALL TRANSFORMATION ZXMLTEST001 SOURCE POHEADER = GT_EKKO RESULT XML XML_XSTRING. "2进制转换XML字符串不乱码 CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING' EXPORTING IM_XSTRING = XML_XSTRING "二进制字符串 IM_ENCODING = 'UTF-8' IMPORTING EX_STRING = XML_STRING. "返回的xml字符串 CATCH CX_ST_ERROR INTO LO_OREF. "传输XML转换错误 LV_MESSAGE = LO_OREF->GET_TEXT( ) . "报错日志保存ENDTRY.WRITE /:XML_STRING.

"将XML转换为内表TRY.

CALL TRANSFORMATION ZXMLTEST001 SOURCE XML XML_STRING RESULT POHEADER = LT_EKKO. CATCH CX_ST_ERROR INTO LO_OREF. "返回XML解析错误 LV_MESSAGE = LO_OREF->GET_TEXT( ).ENDTRY.WRITE /:LV_MESSAGE."-----------------------------------------@斌将军--------------------------------------------
斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP内表与XML转换.md」整理生成,仅用于内部技术分享与学习交流。