法律状态公告日
法律状态信息
法律状态
2017-07-07
授权
授权
2014-05-21
实质审查的生效 IPC(主分类):G06F17/30 申请日:20140121
实质审查的生效
2014-04-23
公开
公开
技术领域
本发明涉及一种数据传输方法,具体地说是一种基于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系统 之间的正常传输。
机译: 一种用于安全数据传输的基于密码的认证和会话密钥协议的方法,一种用于安全地传输数据的方法以及一种电子数据传输系统
机译: 一种用于安全数据传输的基于密码的认证和会话密钥协议的方法,一种用于安全地传输数据的方法以及一种电子数据传输系统
机译: 无线电通信系统中基于基站间站间载波聚合方案的数据传输方法和装置