CN103744991B - 一种基于xml的sap系统间数据传输的方法 - Google Patents

一种基于xml的sap系统间数据传输的方法 Download PDF

Info

Publication number
CN103744991B
CN103744991B CN201410027807.4A CN201410027807A CN103744991B CN 103744991 B CN103744991 B CN 103744991B CN 201410027807 A CN201410027807 A CN 201410027807A CN 103744991 B CN103744991 B CN 103744991B
Authority
CN
China
Prior art keywords
data
interior table
wrapper
node
interior
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410027807.4A
Other languages
English (en)
Other versions
CN103744991A (zh
Inventor
孙恕坚
张震宇
李林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Corp of China SGCC
State Grid Jiangsu Electric Power Co Ltd
Jiangsu Electric Power Information Technology Co Ltd
Original Assignee
State Grid Corp of China SGCC
State Grid Jiangsu Electric Power Co Ltd
Jiangsu Electric Power Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by State Grid Corp of China SGCC, State Grid Jiangsu Electric Power Co Ltd, Jiangsu Electric Power Information Technology Co Ltd filed Critical State Grid Corp of China SGCC
Priority to CN201410027807.4A priority Critical patent/CN103744991B/zh
Publication of CN103744991A publication Critical patent/CN103744991A/zh
Application granted granted Critical
Publication of CN103744991B publication Critical patent/CN103744991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于XML的SAP系统间数据传输的方法,该方法通过将数据内容和数据格式封装到标准XML中,实现数据在SAP系统之间的传输。本发明可以屏蔽系统业务数据本身结构的差异,采用标准数据类型STRING,以屏蔽系统之间接口定义的差异,可实现数据接口统一化。本发明适用于双方系统发送变化后数据的传输。

Description

一种基于XML的SAP系统间数据传输的方法
技术领域
本发明涉及一种数据传输方法,具体地说是一种基于XML的SAP系统间数据传输的方法。
背景技术
作为大型的企业管理软件,SAP系统在大型的集团公司、多业务领域的大型企业应用的越来越广泛,很多公司都拥有多个SAP系统,而系统之间又需要进行数据交换,或者是业务同步等。
在有多套SAP系统部署的生态环境中,这些SAP系统之间需要进行数据传输。当某个系统业务发送变更后,难免会导致相关的系统之间接口错误,导致之前的数据传输程序的不顺畅,而这时需要花费大量的时间进行接口的修改及联调测试工作。由于系统之间接口定义没有一个统一的标准,或是协议,当已经上线的系统发生变更时,对接口定义的修改和测试,会占用很大的工作量。
发明内容
为了克服现有技术存在的问题,本发明的目的是提供一种基于XML的SAP系统间数据传输的方法,该方法通过将数据内容和数据格式封装到标准XML中,实现数据在两个SAP系统之间的传输,从而屏蔽系统业务数据本身结构的差异,可采用标准数据类型STRING,以屏蔽系统之间接口定义的差异,可实现数据接口统一化。本发明适用于双方系统发送变化后数据的传输。
本发明的目的是通过以下技术方案来实现的:
一种基于XML的SAP系统间数据传输的方法,其特征在于:该方法通过将数据内容和数据格式封装到标准XML中,实现数据在SAP系统之间的传输,具体步骤如下:
1)用ABAP语言编写封装器,定义接口;
2)部署封装器,封装器完成后,在所有涉及的SAP系统中部署封装器,以便在不同的系统中使用封装器中定义的方法;
3)将数据整理成SAP内表形式,并调用封装器的方法CREATE_FOR_ITAB,将数据放入封装器实例中;如果需要传输多个SAP内表,则同时调用方法ADD_ITAB,将数据加入到封装器实例中,实现数据内容和结构封装;
4)调用封装器方法GET_STRING,将封装器实例转换成通用传输类型;SAP系统之间结构的参数定义以通用传输类型定义;则系统发生变化,接口不需要变化;
5)将上一步骤得到的通用类型数据传输到差异SAP系统,传输使用RFC调用;
6)数据接收系统接受到上一步传输的数据后,调用封装器的方法CREATE_FOR_STRING创建封装器实例;
7)数据接收系统通过封装器实例解析数据,调用封装器;通过内表标示获取内表数据,根据双方系统约定的内表标示获取内表数据,根据方法返回的内表数据整理成想要的数据,应用于本系统业务,由此实现数据和数据本身的结构从一个SAP系统到另一个SAP系统传输。
本发明中,中用ABAP语言编写封装器,定义接口,具体如下:
1.CONSTRUCTOR:构造函数,创建一个XML属性,其类型为if_ixml,其是最终用来存储数据和内部结构的载体;
2.GET_NODE_BY_NAME:根据结点名称,获取此结点的方法;
3.CREATE_FOR_ITAB:将数据放入封装器的方法;通过传入的内表,使用系统类静态方法cl_abap_typedescr=>describe_by_data方法得到内表的数据结构,同时,在XML的Root结点下创建一个结点,名为传入的唯一标示内表标示,将内表结构的字段特性,在内表标示下创建一个Head结点,存入内表字段特性;在内表标示结点下创建结点Table,将业务数据存入名称为Table结点中;
4.GET_ITAB_CATC:获取数据标示的结构信息的方法;通过遍历XML找到存放结构信息的结点;将内表结构信息提取出来,以便动态创建内表;
5.ADD_VERSION:添加内表结构到封装器中的方法;通过遍历XML在Root结点下创建一个内表标示,同时将内表结构信息存入创建的结点之下;创建完内表结构信息后,在内表标示结点下创建一个名为Table的结点,以用来接收内表数据;
6.ADD_ITAB:通过传入的内表及内表标示,将数据及结构存入封装器的方法;首先得到内表的结构信息,调用ADD_VERSION将内表结构信息放入XML中,将将内表数据部分存储在Table结点下;
7.ANALYSIS_TO_ITAB:将封装器中的所有收集的内表解析出来的方法;其解析结果应如下it_data格式:
TYPES:BEGINOFis_data,
versionTYPEstring,
tableTYPEREFTOdata,
ENDOFis_data.
TYPES:it_dataTYPETABLEOFis_data.
获取封装器中所有的内表标示,对每一个内表标示获取其子结点;遍历子结点,得到名称为Head的结点,从中获取内表的结构信息,根据结构信息,在程序中动态创建出内表;遍历子结点,得到名称为Table的结点,从中获取内表的数据部分;
8.GET_ITAB_BY_VERSION:通过内表标示获取内表数据的方法;通过ANALYSIS_TO_ITAB方法将封装器中的数据解析后根据内表标示,读取标示一致的内表数据;
9.GET_VERSION:获取某内表标示的XML结点信息的方法;通过传入的内表标示遍历XML返回结点名称等于内表标示的节点;
10.REMOVE_VERSION:删除一个内表标示的内表数据及其内表结构信息的方法;通过ADD_VERSION获取内表标示对应的节点,在封装器中移除此节点;
11.GET_STRING:将封装器转换成通用传输类型数据的方法;
12.CREATE_FOR_STRING:通过通用类型创建封装器的方法。
本发明将数据及其结构封装在封装器中进行传输。采用本发明可实现数据接口统一化。并且解决由于双方系统发送变化后,导致数据传输接口定义修改的问题。
本发明通过将数据内容和数据格式封装到标准XML中,实现数据在两个SAP系统之间的传输,从而屏蔽系统业务数据本身结构的差异,可采用标准数据类型STRING,以屏蔽系统之间接口定义的差异,实现数据接口统一化。
本发明适用于双方系统发送变化后数据的传输。
具体实施方式
一种基于XML的SAP系统间数据传输的方法,该方法通过将数据内容和数据格式封装到标准XML中,实现数据在SAP系统之间的传输,解决系统变化后修改接口定义的问题,具体步骤如下:
步骤一、用ABAP语言编写封装器。定义接口(本实施例中使用接口ZP001_IF_XML定义,但不限于此名称),开发类实现类(本实施例中使用类ZP001_XML_ITAB定义,但不限于此名称),封装器包含的方法描述如下。
1.CONSTRUCTOR:构造函数,创建一个XML属性,其类型为if_ixml,其是最终用来存储数据和内部结构的载体。
2.GET_NODE_BY_NAME:根据结点名称,获取此结点的方法。
3.CREATE_FOR_ITAB:将数据放入封装器的方法。通过传入的内表,使用系统类静态方法cl_abap_typedescr=>describe_by_data方法得到内表的数据结构,同时,在XML的Root结点下创建一个结点,名为传入的唯一标示内表标示,将内表结构的字段特性(包括name、type_kind、length、decimals),在内表标示下创建一个Head结点,存入内表字段特性。在内表标示结点下创建结点Table,将业务数据存入名称为Table结点中。
4.GET_ITAB_CATC:获取数据标示的结构信息的方法。通过遍历XML找到存放结构信息的结点。将内表结构信息提取出来,以便动态创建内表。
5.ADD_VERSION:添加内表结构到封装器中的方法。通过遍历XML在Root结点下创建一个内表标示,同时将内表结构信息(包括name、type_kind、length、decimals)存入创建的结点之下。创建完内表结构信息后,在内表标示结点下创建一个名为Table的结点,以用来接收内表数据。
6.ADD_ITAB:通过传入的内表及内表标示,将数据及结构存入封装器的方法。首先得到内表的结构信息,调用ADD_VERSION将内表结构信息放入XML中,将将内表数据部分存储在Table结点下。
7.ANALYSIS_TO_ITAB:将封装器中的所有收集的内表解析出来的方法。其解析结果应如下it_data格式:
TYPES:BEGINOFis_data,
versionTYPEstring,
tableTYPEREFTOdata,
ENDOFis_data.
TYPES:it_dataTYPETABLEOFis_data.
获取封装器中所有的内表标示,对每一个内表标示获取其子结点。遍历子结点,得到名称为Head的结点,从中获取内表的结构信息,根据结构信息,在程序中动态创建出内表。遍历子结点,得到名称为Table的结点,从中获取内表的数据部分。
8.GET_ITAB_BY_VERSION:通过内表标示获取内表数据的方法。通过ANALYSIS_TO_ITAB方法将封装器中的数据解析后根据内表标示,读取标示一致的内表数据。
9.GET_VERSION:获取某内表标示的XML结点信息的方法。通过传入的内表标示遍历XML返回结点名称等于内表标示的节点。
10.REMOVE_VERSION:删除一个内表标示的内表数据及其内表结构信息的方法。通过ADD_VERSION获取内表标示对应的节点,在封装器中移除此节点。
11.GET_STRING:将封装器转换成通用传输类型数据的方法。
12.CREATE_FOR_STRING:通过通用类型创建封装器的方法。
步骤二、部署封装器:
封装器开发完成后,将所有涉及的SAP系统中部署开发的封装器。以便在不同的系统中都可以使用封装器中定义的方法。
步骤三、开发自己的应用程序将数据整理成SAP内表形式,并调用封装器的方法CREATE_FOR_ITAB,将数据放入封装器实例中。如果需要传输多个SAP内表,则可以同时调用方法ADD_ITAB,将数据加入到封装器实例中。这一步骤是将数据内容和结构封装的过程。
步骤四、调用封装器方法GET_STRING,将封装器实例转换成通用传输类型。SAP系统之间结构的参数定义以通用传输类型定义。这样的好处在于系统发生变化,接口不需要变化。
步骤五、开发人员将上一步骤得到的通用类型数据通过自己实际的企业软件环境传输到差异SAP系统,这里传输一般使用RFC调用。
步骤六、数据接收系统接受到上一步传输的数据后,调用封装器的方法CREATE_FOR_STRING创建封装器实例。
步骤七、数据接收系统通过封装器实例解析数据,调用封装器GET_ITAB_BY_VERSION方法,根据双方系统约定的内表标示获取内表数据,开发者根据方法返回的内表数据整理成自己想要的数据,应用于本系统业务。这是实现数据释放的过程。由此实现数据和数据本身的结构从一个SAP系统到另一个SAP系统传输。
通过如上所述的实施例,可见在差异化SAP系统间数据传输组件所带来的效果。可实现数据接口统一化。在双方系统发送变化后,实现数据在两个SAP系统之间的正常传输。

Claims (1)

1.一种基于XML的SAP系统间数据传输的方法,其特征在于:该方法通过将数据内容和数据格式封装到标准XML中,实现数据在SAP系统之间的传输,具体步骤如下:
1)用ABAP语言编写封装器,定义接口;具体如下:
1.CONSTRUCTOR:构造函数,创建一个XML属性,其类型为if_ixml,其是最终用来存储数据和内部结构的载体;
2.GET_NODE_BY_NAME:根据结点名称,获取此结点的方法;
3.CREATE_FOR_ITAB:将数据放入封装器的方法;通过传入的内表,使用系统类静态方法cl_abap_typedescr=>describe_by_data方法得到内表的数据结构,同时,在XML的Root结点下创建一个结点,名为传入的内表标示,在内表标示下创建一个Head结点,存入内表字段特性;在内表标示结点下创建结点Table,将业务数据存入名称为Table的结点中;
4.GET_ITAB_CATC:获取内表结构信息的方法;通过遍历XML找到存放结构信息的结点;将内表结构信息提取出来,以便动态创建内表;
5.ADD_VERSION:添加内表结构到封装器中的方法;通过遍历XML在Root结点下创建一个内表标示,同时将内表结构信息存入创建的结点之下;创建完内表结构信息后,在内表标示结点下创建一个名为Table的结点,以用来接收内表数据;
6.ADD_ITAB:通过传入的内表及内表标示,将数据及结构存入封装器的方法;首先得到内表的结构信息,调用ADD_VERSION将内表结构信息放入XML中,将内表数据部分存储在Table结点下;
7.ANALYSIS_TO_ITAB:将封装器中的所有收集的内表解析出来的方法;其解析结果应如下it_data格式:
TYPES:BEGIN OF is_data,
version TYPE string,
table TYPE REF TO data,
END OF is_data,
TYPES:it_data TYPE TABLE OF is_data,
获取封装器中所有的内表标示,对每一个内表标示获取其子结点;遍历子结点,得到名称为Head的结点,从中获取内表的结构信息,根据结构信息,在程序中动态创建出内表;遍历子结点,得到名称为Table的结点,从中获取内表的数据部分;
8.GET_ITAB_BY_VERSION:通过内表标示获取内表数据的方法;通过ANALYSIS_TO_ITAB方法将封装器中的数据解析后根据内表标示,读取标示一致的内表数据;
9.GET_VERSION:获取某内表标示的XML结点信息的方法;通过传入的内表标示遍历XML返回结点名称等于内表标示的节点;
10.REMOVE_VERSION:删除一个内表标示的内表数据及其内表结构信息的方法;通过ADD_VERSION获取内表标示对应的节点,在封装器中移除此节点;
11.GET_STRING:将封装器转换成通用传输类型数据的方法;
12.CREATE_FOR_STRING:通过通用类型创建封装器的方法;
2)部署封装器,封装器完成后,在所有涉及的SAP系统中部署封装器,以便在不同的系统中使用封装器中定义的方法;
3)将数据整理成SAP内表形式,并调用封装器的方法CREATE_FOR_ITAB,将数据放入封装器实例中;如果需要传输多个SAP内表,则同时调用方法ADD_ITAB,将数据加入到封装器实例中,实现数据内容和结构封装;
4)调用封装器方法GET_STRING,将封装器实例转换成通用传输类型;SAP系统之间结构的参数定义以通用传输类型定义;则系统发生变化,接口不需要变化;
5)将上一步骤得到的通用类型数据传输到差异SAP系统,传输使用RFC调用;
6)数据接收系统接受到上一步传输的数据后,调用封装器的方法CREATE_FOR_STRING创建封装器实例;
7)数据接收系统通过封装器实例解析数据,调用封装器通过内表标示获取内表数据方法,根据双方系统约定的内表标示获取内表数据,根据方法返回的内表数据整理成想要的数据,应用于本系统业务,由此实现数据和数据本身的结构从一个SAP系统到另一个SAP系统传输。
CN201410027807.4A 2014-01-21 2014-01-21 一种基于xml的sap系统间数据传输的方法 Active CN103744991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410027807.4A CN103744991B (zh) 2014-01-21 2014-01-21 一种基于xml的sap系统间数据传输的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410027807.4A CN103744991B (zh) 2014-01-21 2014-01-21 一种基于xml的sap系统间数据传输的方法

Publications (2)

Publication Number Publication Date
CN103744991A CN103744991A (zh) 2014-04-23
CN103744991B true CN103744991B (zh) 2017-07-07

Family

ID=50502009

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410027807.4A Active CN103744991B (zh) 2014-01-21 2014-01-21 一种基于xml的sap系统间数据传输的方法

Country Status (1)

Country Link
CN (1) CN103744991B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202335B (zh) * 2014-09-19 2018-04-20 成都博智维讯信息技术有限公司 一种基于xml的简化的sap数据传输方法
CN105302728B (zh) * 2015-11-27 2018-03-23 中国民生银行股份有限公司 Sap接口的测试方法和装置
CN106843864A (zh) * 2017-01-09 2017-06-13 武汉开目信息技术股份有限公司 一种与sap集成的回调方法
CN108900369B (zh) * 2018-05-31 2021-08-27 武汉虹信技术服务有限责任公司 一种基于post请求的接口测试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101159005A (zh) * 2006-07-31 2008-04-09 Sap股份公司 管理智能物件网与企业应用间交互服务质量的方法和系统
CN101221499A (zh) * 2006-11-29 2008-07-16 Sap股份公司 用于配置应用软件的方法和设备
CN102098287A (zh) * 2010-12-17 2011-06-15 无锡华润上华半导体有限公司 一种实现sap与b2b系统数据传输的方法
CN102156736A (zh) * 2011-04-12 2011-08-17 上海电通信息服务有限公司 Sap系统与sql数据库之间数据传输的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101159005A (zh) * 2006-07-31 2008-04-09 Sap股份公司 管理智能物件网与企业应用间交互服务质量的方法和系统
CN101221499A (zh) * 2006-11-29 2008-07-16 Sap股份公司 用于配置应用软件的方法和设备
CN102098287A (zh) * 2010-12-17 2011-06-15 无锡华润上华半导体有限公司 一种实现sap与b2b系统数据传输的方法
CN102156736A (zh) * 2011-04-12 2011-08-17 上海电通信息服务有限公司 Sap系统与sql数据库之间数据传输的方法

Also Published As

Publication number Publication date
CN103744991A (zh) 2014-04-23

Similar Documents

Publication Publication Date Title
US10467241B2 (en) Dynamically provisioning instances of a single-tenant application for multi-tenant use
CN103744991B (zh) 一种基于xml的sap系统间数据传输的方法
CN104731943B (zh) 一种服务器和数据处理方法
US20180278725A1 (en) Converting a single-tenant application for multi-tenant use
Attie et al. Dynamic input/output automata, a formal model for dynamic systems
CN104572091B (zh) 应用软件实现方法、装置以及计算机设备
CN107291523A (zh) 一种Web前端消息总线系统
CN111367818B (zh) 基于动态数据返回的系统组件测试方法及装置
US20130138733A1 (en) Universal collaboration adapter for web editors
EP2171614A2 (en) Transporting table valued parameter over tabular data stream protocol
US20150121155A1 (en) Performing customized deployment scenarios in shared environments
CN108304473A (zh) 数据源之间的数据传输方法和系统
US10348595B2 (en) Managing data-driven services
CN105893591B (zh) 一种数据共享服务智能编排方法
CN103399735A (zh) 远程函数调用接口中间层开发方法
CN108228912A (zh) 一种业务数据的处理方法及相关装置
CN110247843A (zh) 一种基于微信公众平台的自定义业务消息推送方法及系统
EP2395468A1 (en) Semantic user interface data assembling
CN105447012B (zh) 一种用于数据库的写入互斥方法及装置
CN106682183A (zh) 一种可联动的数据可视化看板系统
Li Design and Implementation of Software Testing Platform for SOA-Based System
CN106980617A (zh) 一种基于json语句操作数据库的方法和系统
CN105488056B (zh) 一种对象处理方法与设备
CN106503149B (zh) 一种数据同步方法及其系统
US11467949B2 (en) Techniques and architectures for providing an isolated runtime context in a shared environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant