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.

ABAP 内表与XML转换的更多相关文章

  1. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)

    *********************************************************************** * Title           : ZSDF003  ...

  2. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW

    *********************************************************************** * Title           : ZSDF002  ...

  3. ABAP 内表的行列转换-发货通知单-打印到Excel里

    需要传入数据到Excel里的模板如上图所示 ********************** *           设计主要逻辑与原理说明                                 ...

  4. ABAP 内表的行列转换-发货通知单2

    *&---------------------------------------------------------------------* *& Report  Z_TEST_C ...

  5. ABAP 内表的行列转换-发货通知单-SLIS

    REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...

  6. ABAP 内表的行列转换-NEW

    REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: mseg,mkpf. DATA: gd_fieldcat TYPE slis_t_fieldca ...

  7. ABAP 内表的行列转换

    http://www.cnblogs.com/qlp1982/p/3370591.html

  8. Abap 内表的语法

    ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的  内表支持循环对每行数据进行操作,也支持整体操作 ...

  9. ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...

随机推荐

  1. Web三维编程入门总结之三:3D碰撞检测初探

    自己动手写一个方法比分析他人的写的方法困难很多,由此而来的对程序的进一步理解也是分析别人的代码很难得到的. 一.先来几张效果图: 1.场景中有两个半径为1的球体,蓝色线段从球心出发指向球体的“正向” ...

  2. stand up meeting 12/4/2015 -12/6/2015

    part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云        ------  --- 数据库 朱玉影  等待张葳出关        0  foxit reader  6 ...

  3. Python - Python的基础知识结构,学习方法、难点和重点

    [原创]转载请注明作者Johnthegreat和本文链接. 相信大家都知道,Python很容易学,有编程基础的人,最多两个星期就可以很愉快的撸Python的代码了,那么具体涉及的知识有哪些,下面为大家 ...

  4. python爬虫实例,一小时上手爬取淘宝评论(附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...

  5. vue2.x学习笔记(十八)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12629705.html. 处理边界情况 这里记录的都是和处理边界情况有关的功能,即一些需要对vue的规则做一些小调 ...

  6. python列表简介

    什么是列表?如何使用列表?https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range 列表相关知识: ...

  7. python 基础篇 匿名函数

    匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...

  8. sk-learn实现L2岭回归,对线性回归正则化

    岭回归算法: from sklearn.datasets import load_boston from sklearn.externals import joblib from sklearn.li ...

  9. Web中间件常见漏洞

    IIS Internet Information Services--windows 解析漏洞 IIS 6.x 基于文件名:该版本默认会将 *.asp;.jpg 此种格式的文件名,当成 Asp 解析, ...

  10. 【Inno Setup】Pascal 脚本 ---- 事件函数

    转载 事件函数 Inno Setup支持以下函数和过程. 1. [安装初始化]该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下: function Initi ...