ABAP 内表与XML转换
1需求说明
在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表。
2创建转换编辑器
事务代码:STRANS
选择简单转换
以图形方式编辑
右键插入新行
选择参考的类型。此处的TYPE类型是SE11中创建的表类型
SE11表类型如下
结构为嵌套结构,其中包含详细信息的表类型
详细信息表类型
其中包含两个详细信息字段
插入行后整个结构如下
在源代码中将会看到如下信息
完成XML格式
3代码实现
3.1内表与XML转换
定义变量
头行内表赋值
将内表转换为XML,并将返回的二进制字符串转为XML字符串
将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. "将内表转换为XML TRY . 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. "-----------------------------------------@斌将军--------------------------------------------
定期更文,欢迎关注