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. Julia基础语法字符和字符串

    1.Julia字符串  2.字符

  2. ActiveMQ支持的消息协议

    ActiveMQ支持哪些协议 ActiveMQ支持多种协议传输和传输方式,允许客户端使用多种协议连接ActiveMQ支持的协议:AUTO,OpenWire,AMQP,Stomp,MQTT等Active ...

  3. python批量爬取动漫免费看!!

    实现效果 运行环境 IDE VS2019 Python3.7 Chrome.ChromeDriver Chrome和ChromeDriver的版本需要相互对应 先上代码,代码非常简短,包含空行也才50 ...

  4. 详解PHP反序列化中的字符逃逸

    首发先知社区,https://xz.aliyun.com/t/6718/ PHP 反序列化字符逃逸 下述所有测试均在 php 7.1.13 nts 下完成 先说几个特性,PHP 在反序列化时,对类中不 ...

  5. Linux网络编程(1)

    Preview 课程要求,所以学了一下UNIX网络编程,老师说挺简单的,实际上手之后才发现这里面关系没那么简单.从CS:APP11章网络编程,再加上不停地man,对当前的学习做个总结,也顺带当个报告了 ...

  6. Java中接口的概念

    接口的特点: A:接口用关键字interface表示 interface 接口名 {} B:类实现接口用 implements 表示 class 类名 implements 接口名 {} C:接口不能 ...

  7. Scala学习系列(三)——入门与基础

    本课程源码共享于 https://github.com/tree1123/learning-scala 首先,打开IDEA编辑器的SbtExampleProject项目,我们将在这个项目下进行练习 本 ...

  8. 22.Java面试学习平台-整合OSS对象存储

    SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...

  9. elementaryos5安装chrome,修复依赖

    1.首先去下载个chrome:https://www.google.cn/chrome/ 2.尝试安装chrome:sudo dpkg -i google-chrome-stable_current_ ...

  10. 点击Qtableview表头,触发事件

    connect(horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(onHeaderClicked(int))); refer to ...