`
JerryWang_SAP
  • 浏览: 1044060 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

ABAP和XML数据格式互相转换的两种方式

阅读更多

ABAP和XML数据格式互相转换是广大开发人员经常遇到的需求。本文介绍两种方式。

1. ABAP提供了一个工具类cl_proxy_xml_transform,通过它的两个方法abap_to_xml_xstring和xml_xstring_to_abap实现两种格式的互换。

看具体例子:

REPORT zxm.

DATA: ls_abap TYPE zzcrmost__pro001dotproduct1.

DATA: ls_line LIKE LINE OF ls_abap-item.

ls_line-logsys = 'AG3'.

ls_line-object_family = '0401'.

ls_line-product_id = 'MCF-0001'.

ls_line-product_type = '01'.

APPEND ls_line TO ls_abap-item.

ls_line-logsys = 'QDD'.

ls_line-object_family = '0402'.

ls_line-product_id = 'MCF-0002'.

ls_line-product_type = '02'.

APPEND ls_line TO ls_abap-item.

DATA(xml) = cl_proxy_xml_transform=>abap_to_xml_xstring( EXPORTING abap_data = ls_abap ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' ).

DATA: ls_abap2 LIKE ls_abap,

ls_abap3 LIKE ls_abap.

cl_proxy_xml_transform=>xml_xstring_to_abap( EXPORTING ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' xml = xml IMPORTING abap_data = ls_abap2 ).

ASSERT ls_abap2 = ls_abap.

最后一行的ASSERT语句,说明从ABAP格式转换成XML格式,再转换成ABAP格式,转换前的ABAP数据和转换后的ABAP数据是完全相同的。

上述ABAP代码使用到的结构体zzcrmost__pro001dotproduct1类型定义如下:

 

如果我们单步调试工具类cl_proxy_xml_transform,发现它也没有神奇之处,

 

内部生成了一个ABAP simple transformation,以此来实现ABAP和XML格式的互相转换。

 

在调试器里记录下这个生成的transformation ID,然后用事务码STRANS打开,就可以看到明细了。

 

2. 有了方法1单步调试发现simple transformation的提示,我们可以用另一种更简单的办法实现两种格式的互换,即直接调用simple transformation:

DATA: lv_xml TYPE string.

CALL TRANSFORMATION id SOURCE b = ls_abap RESULT XML lv_xml.

生成的XML的根节点名称为b,因为上面代码调用参数SOURCE,将ABAP变量ls_abap传入时,绑定的参数名为“b”。

CALL TRANSFORMATION id SOURCE XML lv_xml RESULT b = ls_abap3.

ASSERT ls_abap2 = ls_abap3. 用这种方式进行ABAP->XML->ABAP仍然能得到最初的ABAP变量的值。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 

 
 
0
0
分享到:
评论

相关推荐

    生成XML文件ABAP程序

    根据提供的ABAP程序片段,我们可以总结出以下关于生成XML文件的相关知识点: ### 1. ABAP中的IXML库介绍 ABAP(Advanced Business ...这种方法不仅适用于简单的XML文档,也可以扩展到更复杂的XML结构和数据类型。

    SAP解析xml abap解析xml

    XML(可扩展标记语言)作为一种开放标准的数据交换格式,被用于不同系统间的数据传输。因此,如何在SAP系统中高效地解析和处理XML文档成为了一个重要的技术课题。 ### 数据结构定义 在ABAP程序中,首先定义了多个...

    sap abap & xml

    ABAP支持两种主要的XML映射方式:使用标准工具(ST)和使用XSLT(Extensible Stylesheet Language Transformations)。 - **使用标准工具**:这是ABAP中最简单的一种映射方式,适用于简单场景。它使用`MAP DATA`...

    ABAP解析XML

    随着业务需求的增长和技术的发展,XML(Extensible Markup Language)作为一种标准化的数据交换格式,在ABAP开发中的应用变得越来越广泛。XML不仅被用来存储数据,也被用作不同系统间进行数据交换的标准格式之一。 ...

    ABAP-操作Excel导出数据

    总的来说,通过ABAP中的OLE和DOI,我们可以直接控制Excel应用程序,实现自定义的数据导出格式和功能,为用户提供更灵活的数据处理方式。虽然这种方法可能比直接生成CSV文件复杂,但在某些情况下,它能提供更丰富的...

    ABAP 基本数据类型及计算

    ABAP拥有丰富的基本数据类型,这些类型定义了变量存储数据的方式和范围。以下是一些主要的基本数据类型及其特性: 1. C(Character):用于存储文本,最大长度可达262143个字符,默认长度为1个字符。 2. N(Numeric...

    SAP数据表大全ABAP数据表大全

    在SAP系统中,ABAP(Advanced Business Application Programming)是一种编程语言,用于开发和定制企业级应用程序。ABAP数据表是SAP系统的核心组成部分,它们存储了系统的业务数据和配置信息。本资料集“SAP数据表...

    sap 操作XML(自己的笔记)

    - **生成数据工厂及数据流**:数据工厂和数据流是生成XML文档时的重要组成部分,它们负责组织和管理数据。 - **创建文档**:使用相应的API或工具创建XML文档的基本结构。 - **生成XML**:填充具体的数据到XML文档中...

    ABAP 收入成本数据源转换

    SAP BW ABAP 收入成本数据源转换

    abap4 程序语法和 格式

    1. **语句结构**: ABAP4语句可以按照多种方式进行格式化,但通常需要遵守以下几个原则: - 每个语句以关键字开头,后面跟着参数,最后以句号结尾。 - 语句之间可以通过空行分隔以增强可读性。 - 可以在一行内书写...

    ABAP数据快速填充EXCEL

    ABAP数据快速填充EXCEL,比传统的OLE方式要运行速度快。

    ABAP 读取EXECL数据到数据表中

    ABAP 语言具有强大的功能,可以实现复杂的业务逻辑和数据处理。本文将详细介绍如何使用 ABAP 语言读取 EXCEL 数据到数据表中。 一、EXCEL 数据读取 在 ABAP 中,读取 EXCEL 数据可以使用 OPEN DATASET 语句读取 ...

    Abap基础学习文档12_以簇方式存 储数据对象.doc

    - **数据簇**: 在ABAP/4内存中,可以通过数据簇的方式来存储复杂的数据对象,这些数据簇能够在不同的程序级别和模块化单元间共享。 **应用场景** - 跨多个程序层的数据传递,例如报表与其他`SUBMIT`调用的报表、...

    ABAP 为物料主数据添加字段

    ABAP 为物料主数据添加字段 Add field in material master.

    ABAP批量创建元素程序

    此外,批导模板(域批导模板.zip和数据元素批导模板.zip)是CSV或Excel格式的文件,用于输入元素和域的详细信息。用户可以通过事务码SMW0上传这些模板,然后运行ABAP程序进行批量创建。 这个程序的实用性在于它可以...

    ABAP 常用语句 数据读取 删除 修改 等语句 常用语句ABAP

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与ABAP语言相关的多个核心知识点,包括数据读取、删除、修改等基本操作。下面将逐一详细展开这些知识点。 ### ABAP 数据读取 #### 1. 表的初始化与赋值 - **...

    Notepad++ ABAP代码高亮显示 ABAP.XML

    Notepad++ ABAP代码高亮显示

    sap abap 报表格式设置方法

    7. **页结束和行结束**:页结束和行结束的设置通常是固定的,确保每个页面和数据行的正确划分。 8. **打印预览**:完成所有设置后,可以通过打印选择进行预览,查看报表的外观是否符合预期。如果需要,可以手动指定...

    abap产生流水号的两种方法

    ABAP产生流水号的两种方法 ABAP是SAP系统中的一种编程语言,用于开发SAP系统中的应用程序。在SAP系统中,流水号是非常重要的一种数据类型,用于标识唯一的记录。然而,SAP系统中并没有提供序列号的功能,但是我们...

    xtt:ABAP的Xml模板工具包

    当系统需要与外部应用交换XML格式的数据时,`xtt`能帮助构建和解析XML消息,确保数据传输的准确性和效率。 - **Web服务接口**: 在实现SOAP或RESTful Web服务时,`xtt`可用于生成响应或解析请求,简化接口开发...

Global site tag (gtag.js) - Google Analytics