Sap系统与sql数据库之间数据传输的方法

文档序号:6357899阅读:754来源:国知局
专利名称:Sap系统与sql数据库之间数据传输的方法
技术领域
本发明涉及数据传输领域,具体来说是涉及一种针对企业资源计划(Enterprise Resource Planning,简禾尔ERP)软件SAP(Systems,Applications, and Products in Data Processing,以下简称SAP)与SQL数据库之间的数据传输方法。
背景技术
随着电子商务技术、企业应用软件的发展日趋成熟,SAP (Systems, Applications, and Products in Data Processing) ^^ ^ ;SAP 也作为ERP行业的巨无霸,它的通用性几乎涵盖了各个行业的业务范畴。而SAP系统在企业用于管理、经营等数据分析时,由于SAP数据存储结构的特殊及复杂性,构建周期长及专业知识的要求,这就会使SAP中存储的大量宝贵的经营分析数据无法得到有效利用。根据IT市场专业调查公司Norkresearch在2005年11月的调查结果显示,有 23. 9%的用户SAP系统上线目的在于提高决策速度;与此同时Gartner公司(IT需求调查室)对SAP用户上线后的问题进行了相关问卷调查,结果显示同样有23. 9%的用户对SAP系统对于经营信息管理及决策支持上的解决方案表示不满。而目前,针对SAP数据分析的上述问题,现有常见的方案主要是
1. SAPABAP (Advanced Business Application Programming, Ι^,ΤΜ^
ABAP)专用编程语言定制数据分析报表,但是上述方式受数据量的限制,不适合大规模数据的统计。且受编程工具专业性的限制,编程人员的人工费相对较高,大幅的提升了开发费用,一旦业务发生变化报表内容、对象信息发生变化时势必产生再次修正等的运维费用。2.通过其他计算机语言和环境调用SAP系统的商业应用程序接口(Business Application Process Interface 以下简称 BAPI)禾口(Remote Function Call 以下简称 RFC)远程函数调用接口,但是这种解决方案同样涉及到开发技术要求和成本高,且开发周期长。业务发生变化的同时也造成了后续的再次修正等运维费用。3.使用 SAP BW (Business informationWarehouse)的性能来实现数据的传输,但是该方式由于专业性、成本、后续运维费用过高而无法被大部分企业采纳。

发明内容
针对上述问题,本发明的目的是提供一种SAP系统与SQL数据库之间数据传输的方法,调用低成本的SSIS (SQL Server Integration Service ;以下简称SSIS)高性能数据集成解决方案平台,避免数据量过大,专业性、成本、后续运维费用过高的问题,实现了无编程、简单设定即可实现数据的传输。为了达到上述目的,本发明的技术方案如下。SAP系统与SQL数据库之间数据传输的方法,包括以下步骤
(1)在SAP系统中构建提取SAP系统数据的SAP信息集查询;
(2)在SQL数据库中设定从SAP信息集查询接收SAP系统数据的参数;(3)建立含有数据传输事件的SSIS执行包,运行SSIS执行包将SAP系统数据传输到 SQL数据库中。进一步,上述步骤(1)具体包括以下步骤
(1. 1)定义SAP信息集查询从SAP系统中的数据表、视图、逻辑数据库中提取的SAP系统数据;
(1. 2)定义SAP信息集提取SAP系统数据的方式,其包括数据的筛选条件和输出形式。所述步骤(2)具体包括以下步骤
(2.1)设定SQL数据库与SAP系统的连接属性;
(2. 2)创建查询记录文件,并定义该查询记录文件调用的SAP信息集查询,以及接收 SAP信息集查询输出数据的SQL数据库表;
(2. 3)根据查询记录文件的定义生成SQL数据库表,所述SQL数据库表包括中间表和全镜像表,并定义全镜像表的主键字段。所述步骤(3)具体包括以下步骤 (3. 1)创建SSIS执行包;
(3. 2)定义SSIS执行包内的数据传输事件以及各事件中的变量,所述数据传输事件包括中间表数据传输、全镜像表数据传输;
(3. 3)运行SSIS执行包,将SAP系统数据传输到SQL数据库表中。更进一步,所述步骤(3. 3)中,运行SSIS执行包的步骤包括(3. 3. 1)将从SAP信息集查询中提取的SAP系统数据写入中间表中;(3. 3. 2)将中间表中的数据传输到全镜像表中;(3. 3. 3)将运行结果写入日志,SSIS执行包正常结束或执行出错处理。优选的,所述步骤(3. 3. 1)中,中间表中的数据类型为Unicode型文本。优选的,所述步骤(3. 3. 1)中,在写入中间表前还包括根据预先设定的结构转换函数对SAP信息集查询输出的数据进行表结构变更处理。优选的,所述步骤(3. 3. 2)中,全镜像表中的数据类型通过预先设定的变换函数转换成与SAP信息集查询中的数据类型一致。优选的,当步骤(3. 2)中设置的变量包括数据抽取用键值变量,则在步骤(3. 3. 2) 的全镜像表数据传送成功后,还包括根据设置的数据抽取用键值变量进行变量更新处理。所述步骤(3. 3. 2)中,中间表数据传输到全镜像表中的方式采用全项传输或增量传输。所述增量传输是根据全镜像表中定义的主键字段对中间表数据进行匹配,可以采用根据匹配结果添加全镜像表没有的数据,并更新全镜像表中已经存在的差异数据。也可以根据匹配结果删除全镜像表里已经存在的数据后,再添加中间表中的差异数据。所述步骤(1. 2)之前还包括,将定义的SAP信息集查询进行分组化处理。又,所述步骤(2. 3)中还包括定义语言转换视图及其对应的语言转换字典,所述步骤(3. 3. 2)中还包括根据定义的语言转换视图及语言转换字典对全镜像表中的字段进行语言转换处理。本发明的主要优点如下。如上述本发明的数据传输方法,由于采用了基于SAP系统信息集查询功能的数据抽取方式,免去了 SAP系统ABAP专业性开发语言定制报表的操作;执行数据传输采用目前成熟的SSIS执行包(SSIS Package),通过简单的事件参数定义即可立即实现数据传输,便捷地实现SAP与SQL数据库之间的数据传输。因此,本发明大幅缩短了 SAP系统的ABAP开发周期,同时操作简便,极大程度的减少了专业知识的要求,能够有效降低开发及后续运维的庞大费用支出。另外,本发明在数据接收端SQL数据库中分别建立中间表和全镜像表,采用SSIS 执行包分步完成对中间表和全镜像表的数据传输。全镜像表对中间表传输的数据和以前传输的数据进行增量合并,从而实现了先进科学的增量传输管理,能够免去庞大数据量的重复获取,降低了系统负荷,减少了数据传输时间。


图1是本发明SAP系统与SQL数据库之间数据传输方法的流程示意图。图2是本发明数据传输方法一实施例的详细流程示意图。图3是本发明数据传输方法中SSID执行包运行的流程示意图。图4是本发明数据传输方法中SAP信息集查询输出的特殊数据形式的示例图。图5、图6是本发明中定义SAP信息集查询提取数据的界面示意图。图7、图8是本发明中对SAP信息集查询分组化处理界面示意图。图9是本发明中定义SAP信息集查询提取数据方式的界面示意图。图10是本发明中设置SAP系统与SQL数据库连接属性的界面示意图。图11是本发明中创建查询记录文件的界面示意图。图12是本发明中创建SQL数据库表的界面示意图。图13是本发明中定义主镜像表主键字段的界面示意图。图14 图16是本发明采用SSIS执行包进行数据传输的界面示意图。图17是本发明在日志中查询SSIS执行包处理结果的界面示意图。图18是本发明在主镜像文件中查询传输后数据的界面示意图。
具体实施例方式下面结合附图和实施例进一步说明本发明的传输数据过程。参见图1、图2所示,本发明SAP系统与SQL数据库之间数据传输的方法,包括以下步骤
步骤1 在SAP系统中构建提取SAP系统数据的SAP信息集查询,其包括 步骤101 定义SAP信息集查询从SAP系统中的数据表、视图、逻辑数据库中提取的SAP 系统数据;
步骤102 对定义的SAP信息集查询进行分组化处理;
步骤103 定义SAP信息集提取SAP系统数据的方式,其包括数据的筛选条件和输出形式。步骤2 在SQL数据库中设定从SAP信息集查询接收SAP系统数据的参数,其包括
步骤201 设定SQL数据库与SAP系统的连接属性;
步骤202 创建查询记录文件,并定义该查询记录文件调用的SAP信息集查询,以及接
6收SAP信息集查询输出数据的SQL数据库表;
步骤203 根据查询记录文件的定义生成SQL数据库表,所述SQL数据库表包括中间表和全镜像表,定义语言转换视图及其对应的语言转换字典,并定义全镜像表的主键字段。步骤3 建立含有数据传输事件的SSIS执行包,运行SSIS执行包将SAP系统数据传输到SQL数据库中,其包括
步骤301 创建SSIS执行包;
步骤302 定义SSIS执行包内的数据传输事件以及各事件中的变量,所述数据传输事件包括中间表数据传输、全镜像表数据传输;
步骤303 运行SSIS执行包,将SAP系统数据传输到SQL数据库表中。参见图3所示,所述步骤303具体包括
步骤3031 将从SAP信息集查询中提取的SAP系统数据写入中间表中;
步骤3032 将中间表中的数据传输到全镜像表中;
步骤3033 将运行结果写入日志,SSIS执行包正常结束或执行出错处理。在本实施例中,上述SSIS执行包运行过程中的具体操作如下。1、从SAP系统中抽取的数据写入中间表的处理。中间表的各字段的数据类型为Unicode型的文本类型。通过这样的处理可以对从 SAP的信息集查询中输出的不规范数据(不规范数据形式可参见图4中提供的样例)进行转换。例如,出库时间数据的内部定义为数值型的40000,而输出形式为4:00:00。如果给该数据进行严格的数据类型定义,将可能导致数据写入出错,而且事后很难追溯错误原因。因此基本上是定义为文本类型对应SQL数据库的数据保存。如果在后面的处理过程中发生错误,那么也会因为有中间表数据,使出错原因的调查变的容易一些。通过调用ob jPslETLWrapper. extractlMTable ( PR0FILENAME )的方式即可实现写入中间表处理,其中《PR0FILENAME》代表指向的中间表名称。运行后,执行以下处理依照中间表PR0FILENAME中设定的SAP信息集查询,执行SAP用户组对应的信息集查询,并将SAP信息集查询执行的结果存入SQL数据中指定的SQL数据库的中间表 PR0FILENAME 内。2、全镜像表传输处理。全镜像表传输处理是执行把中间表的数据和以前传输的数据进行增量合并的处理,使用已定义的全镜像表主键字段信息,对待传输的数据进行匹配以及增量合并处理。全镜像表是将中间表和以前传输的数据增量合并后的数据库表。本实施例中,不同于上述中间表传输,全镜像表的数据类型和SAP信息集查询的通用数据保持一致的定义,因此在执行从中间表向全镜像表传送数据处理时,需要通过预先设置的变换函数进行数据类型的转换处理。对全镜像表数据类型进行严格设定是为了在后续的经营信息分析等设定分析项目时,能够正确识别日期,数值等数据类型,并且有利于设定立方体等事宜。而如果数据类型不能被识别,那么诸如测量值的合计等处理将无法自动执行。全镜像表传输时,采用增量传输的方式仅将中间表中存储的差异数据传输到全镜像表中可以大大提高数据传输的效率。增量传输的方式是通过数据传输事件中的变量进行设置,执行处理具体过程如下。通过以下命令,将DBPR0FILE里的中间表IMTABLENAME的数据向全镜像表 FLTABLENAME 传送
ob jPslETLffrapper. transferFLTable ( IMTABLENAME , _ FLTABLENAME , _ DBPROFILE , _ TRANSFERMODE )
其中,变量《IMTABLENAME》是要传输数据的中间表的名称, FLTABLENAME 是用于接收中间表数据的全镜像表的名称,《TRANSFERMODE 是数据的传输方式,变量 TRANSFERMODE可以根据需要设置为全项传输方式Tl,或者增量传输方式的UI或DI。当TRANSFERMODE设置为TI时,执行传输时先删除全镜像表里所有记录,再执行中间表的传送,即全项传输。作为优选,可以采用以下增量传输的方式。当TRANSFERMODE设置为UI时,执行传输时根据全镜像表里设置的主键字段对中间表数据进行匹配,添加全镜像表没有的数据,更新全镜像表已经存在的数据。当TRANSFERMODE设置为DI时,执行传输时根据全镜像表里设置的主键字段对中间表数据进行匹配,删除全镜像表里已经存在的数据后,再添加中间表数据。由于这种模式会把可更新的数据先删除再添加,所以不能保留全镜像表里追加列的信息,但是另一方面, 这种模式的处理效率比UI要高。3、Schema 变更处理。Schema变更处理是执行表结构的变更处理,如果对正规化的SAP表构造很难分析时,可以变在SQL数据库的中间表中保存的构造。因此,在数据写入中间表前,可以先根据预先设定的结构转换函数对SAP信息集查询输出的数据进行表结构变更处理,例如行列的变化处理、追加不够的字段等,从而使中间表能以最恰当的方式保存数据,方便后续的分析处理。4、变量更新处理。如果在定义数据传输事件变量时使用了数据抽取用键值变量,那么需要在全镜像数据传送成功之后,根据设定的数据抽取用键值变量,对传送的变量进行更新处理。在全镜像数据传送成功之后再执行变量更新,是为了在全镜像数据传送失败时,防止数据发生不整合的情况。5、语言转换处理。所谓语言转换视图,是根据语言转换字典的定义对全镜像表中的字段进行语言转换的表示视图,本发明在全镜像表传输时根据语言转换视图及语言转换字典可以自动将全镜像表中的字段名称转换成需要的语言存储显示,便于查看和后续的处理分析。6、后处理。将SSIS正常结束的信息写入日志中,执行包的正常结束处理。7、出错处理
如果上述处理中发生错误,将执行出错处理,将错误信息写入日志中,执行包结束处理。以下将结合图5 图17所示的操作界面示意图,详细说明本发明数据传输方法的实现过程。
图5是定义SAP信息集查询提取数据的数据表的示意图。如图5所示,本实施例中定义的SAP信息集查询从SAP系统中提取的系统数据是数据表VBAP (PSL_SDT_VBAP)。选定数据表VBAP后进入图6所示的界面。在图6中,界面左列为数据表VBAP中所包含的全部数据字段,用户可以根据需要选定需要调用数据,而右边窗体中显示字段则是筛选后输出的字段。为了便于SAP系统的管理,本实施例中对定义的信息集查询进行基于用户组的分组化处理,如图7所示,创建名称为“销售相关查询组”的用户组,并在图8所示界面中将需要调用的数据表VBAP指定给该用户组,即可在所创建的用户组中定义、添加、调用SAP信息集查询实现数据的提取传输。建立分组后,进入图9所示的界面可以定义SAP信息集查询提取数据的筛选条件和输出形式,图9中左侧窗体中可以勾选出数据表内要查询的字段以及要输出的字段(本实施例中),而右侧窗体中则是对数据筛选的条件进行定义,根据需要提取符合条件的数据,输出的内容在下方窗体中显示出来。完成对数据发送方SAP系统的SAP信息集查询定义后,需要对数据接收方SQL数据库作相应的参数设定,以接收SAP信息集查询提取的SAP系统数据。首先,如图10所示创建到SAP系统的连接,对SQL数据库与SAP系统连接属性进行定义,包括IP地址、系统编号、访问用户名、密码等必要属性。创建连接后,还需要创建查询记录文件来定义接收SAP系统数据的具体参数。如图11所示,定义的参数包括要调用的SAP信息集查询“PSL_SDM_VBAP”,用户组“PSL_SD_ TRNS”,以及定义所要创建的用于接收数据的SQL数据库表名称,在本实施例中,定义的SQL 数据库表为中间表(IM表)“PSL_SDM_IM_VBAP”以及全镜像表(FL表)“PSL_SDM_FL_VBAP”。在定义数据库表后,即可根据定义创建相应的数据表文件。如图12对要生成的数据表文件的名称和属性(中间表/全镜像表)进行定义,并定义语言转换视图,点击“执行” 创建相应的中间表和全镜像表进入图13所示的界面。图13中打开全镜像表PSL_SDM_FL_ VBAP,在右侧显示的字段中选定全镜像表的主键字段(PRIMARY_KEY),该主键字段将在传输时用于匹配增量数据。完成对数据发送方SAP系统和数据接收方SQL数据库的设定后,即可通过SSIS平台实现数据传输的处理,图14 图16是本发明采用SSIS执行包进行数据传输的一个实施例,其中SSIS执行包的设计、执行均采用图形化的显示方式,便捷直观。图14中是创建的SSIS执行包,中间窗体显示的是图形化的SSIS执行包控制流程,图中各方框代表SSIS执行包中定义的数据传输事件,而事件中的变量在界面右上角的窗体中显示和设定,图中是在进行中间表数据传输的事件设定,变量窗口中需对要提取数据的SAP信息集查询名称等参数进行设定。同样的,图15中要对全镜像表数据传输的变量进行设定,需对中间表名称、全镜像表名称、传输模式等参数进行设定。完成数据传输事件及各事件变量的设定后,即可运行SSIS执行包,执行数据传输处理。执行后如图16所示确认执行结果,全部显示为绿色即为执行成功,结果信息将记录在日志中。记录在日志中的SSIS执行包处理结果信息可以在图17所示的界面中进行查询。
图18所示的界面可以在完成数据传输后的主镜像文件中查询更新后的数据。需要指出的是,以上所述仅是本发明的一个较佳实施例,并不构成对本发明技术方案的限制,凡是在本发明的精神和原则之内,所作的修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.SAP系统与SQL数据库之间数据传输的方法,其特征是,包括以下步骤(1)在SAP系统中构建提取SAP系统数据的SAP信息集查询;(2)在SQL数据库中设定从SAP信息集查询接收SAP系统数据的参数;(3)建立含有数据传输事件的SSIS执行包,运行SSIS执行包将SAP系统数据传输到 SQL数据库中。
2.如权利要求1所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(1)包括以下步骤(1. 1)定义SAP信息集查询从SAP系统中的数据表、视图、逻辑数据库中提取的SAP系统数据;(1. 2)定义SAP信息集提取SAP系统数据的方式,其包括数据的筛选条件和输出形式;所述步骤(2)包括以下步骤(2.1)设定SQL数据库与SAP系统的连接属性;(2. 2)创建查询记录文件,并定义该查询记录文件调用的SAP信息集查询,以及接收 SAP信息集查询输出数据的SQL数据库表;(2. 3)根据查询记录文件的定义生成SQL数据库表,所述SQL数据库表包括中间表和全镜像表,并定义全镜像表的主键字段;所述步骤(3)包括以下步骤(3. 1)创建SSIS执行包;(3. 2)定义SSIS执行包内的数据传输事件以及各事件中的变量,所述数据传输事件包括中间表数据传输、全镜像表数据传输;(3. 3)运行SSIS执行包,将SAP系统数据传输到SQL数据库表中。
3.如权利要求2所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(3. 3)中,运行SSIS执行包的步骤包括(3. 3. 1)将从SAP信息集查询中提取的SAP系统数据写入中间表中;(3. 3. 2)将中间表中的数据传输到全镜像表中;(3. 3. 3)将运行结果写入日志,SSIS执行包正常结束或执行出错处理。
4.如权利要求3所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(3. 3. 1)中,中间表中的数据类型为Unicode型文本。
5.如权利要求3所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(3. 3. 1)中,在写入中间表前还包括根据预先设定的结构转换函数对SAP信息集查询输出的数据进行表结构变更处理。
6.如权利要求3或4或5所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(3. 3. 2)中,全镜像表中的数据类型通过预先设定的变换函数转换成与SAP信息集查询中的数据类型一致。
7.如权利要求3所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,当步骤 (3. 2)中设置的变量包括数据抽取用键值变量,则在步骤(3. 3. 2)的全镜像表数据传送成功后,还包括根据设置的数据抽取用键值变量进行变量更新处理。
8.如权利要求3所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(3. 3. 2)中,中间表数据传输到全镜像表中的方式采用全项传输或增量传输。
9.如权利要求8所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述增量传输是根据全镜像表中定义的主键字段对中间表数据进行匹配,根据匹配结果添加全镜像表没有的数据,并更新全镜像表中已经存在的差异数据。
10.如权利要求8所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述增量传输是根据全镜像表中定义的主键字段对中间表数据进行匹配,根据匹配结果删除全镜像表里已经存在的数据后,再添加中间表中的差异数据。
11.如权利要求2所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(1. 2)之前还包括,将定义的SAP信息集查询进行分组化处理。
12.如权利要求3所述的SAP系统与SQL数据库之间数据传输的方法,其特征是,所述步骤(2. 3)中还包括定义语言转换视图及其对应的语言转换字典,所述步骤(3. 3.2)中还包括根据定义的语言转换视图及语言转换字典对全镜像表中的字段进行语言转换处理。
全文摘要
SAP系统与SQL数据库之间数据传输的方法,包括以下步骤(1)在SAP系统中构建提取SAP系统数据的SAP信息集查询;(2)在SQL数据库中设定从SAP信息集查询接收SAP系统数据的参数;(3)建立含有数据传输事件的SSIS执行包,运行SSIS执行包将SAP系统数据传输到SQL数据库中。本发明采用基于SAP系统信息集查询功能的数据抽取方式,调用低成本的SSIS数据集成解决方案平台,避免数据量过大,专业性、成本、后续运维费用过高的问题,实现无编程、简单设定即可实现数据的传输,有效降低开发及后续运维的庞大费用支出。同时,本发明还采用了科学的增量传输管理,能够免去庞大数据量的重复获取,降低了系统负荷,减少了数据传输时间。
文档编号G06F17/30GK102156736SQ20111009069
公开日2011年8月17日 申请日期2011年4月12日 优先权日2011年4月12日
发明者柳沢学 申请人:上海电通信息服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1