CN109933313B - 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 - Google Patents
一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 Download PDFInfo
- Publication number
- CN109933313B CN109933313B CN201910135968.8A CN201910135968A CN109933313B CN 109933313 B CN109933313 B CN 109933313B CN 201910135968 A CN201910135968 A CN 201910135968A CN 109933313 B CN109933313 B CN 109933313B
- Authority
- CN
- China
- Prior art keywords
- sap
- abap
- application
- j2ee
- http
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种SAP NetWeaver平台与J2EE系统的通用接口集成方法,包括J2EE应用调用SAP应用方法和SAP应用调用J2EE应用方法。本发明由于在J2EE应用和SAP应用都提供了统一框架程序,由框架程序负责接口交互的参数映射、接口调用及错误处理,开发人员只需进行普通的接口业务功能开发,调用统一的框架函数即可,大大提高了开发效率。
Description
技术领域
本发明涉及具有SAP商业软件和J2EE应用软件集成的IT架构的传统企业、互联网企业的IT技术领域,特别是一种SAP NetWeaver平台与J2EE系统的通用接口集成方法。
背景技术
SAP NetWeaver是一种可以随时用于业务运作,面向服务的平台,适用于 SAP的所有解决方案。它可以帮助企业跨越技术和机构组织的界限,实现人员、信息和业务流程的集成,其设计实现了与Microsoft.NET、Oracle的J2EE和IBM WebSphere的全面互操作,并通过这些技术得到进一步扩展。
SAP应用都是基于SAP NetWeaver平台的应用,SAP XI交流基础设施 (ExchangeInfrastructure)应用集成平台作为SAP NetWeaver中间件产品的一部分,目的是为non-SAP系统提供一个其他管理信息系统与SAP系统进行数据和流程交互的平台,因为SAP定位于ERP系统,关注点在企业的人、财、物,但对于企业其他的专业系统,SAP的功能无法覆盖和取代,因此,必须有“接口”来实现相互之间的数据和业务交换。
SAP NetWeaver平台的应用与外围系统的集成如图1。SAP XI7.1之后,XI 改名为PI,全称NetWeaver Process Integration。
由图1可以看出,SAP NetWeaver平台与外围系统交互的技术一般的方案有:
1)SAP系统与外围系统直连调用
一般通过RFC,BAPI,IDoc,Webservice等方式,IDoc是SAP自己的类似 xml格式的文档数据交换的方式,系统间利用message传递,不涉及底层函数调用, idoc的处理方式是用edi来执行的。而RFC必须在线的方式调用,一般做同步的, bapi是SAP已经做好的实现特定业务操作的rfc。
尽管SAP为与外围系统的RFC调用提供了的自己的JCo(Java)/NCo(.Net) 程序的底层支持,但如何配置和JCo/NCo连接、如何提供参数的通用解析方法,如何提供高可用的机制等,都没有很好的解决方案,需要实施人员去摸索定制。
此外,SAP还提供了通用的Webservice协议的直连调用方式。SAP系统与外围系统的每一个交互接口都通过定义一个Webservice方法来实现接口数据的交互,调用方和被调用方的参数定义必须严格按Webservice的接口参数定义进行,由于不具备通用性,开发和修改非常麻烦。
2)通过SAP的服务总线产品Process Integretion(PI)提供服务
SAP系统与外围系统的每一个交互接口都由PI提供一个代理方法,PI通过配置jdbc连接直接操作外围系统的数据库,或者为每一个外部接口配置一个调用Webservice/http方法来实现与外部程序的交互。
SAP通过Interface Builder工具来定义PI的消息接口、消息类型、数据类型、接口映射、消息映射、适配器等来实现每一个接口的消息交互。见图2。
因为每一个接口都需要进行以上方法进行定义接口参数,不具备通用性,工作复杂而低效。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种SAP NetWeaver平台与J2EE系统的通用接口集成方法,降低开发难度,不需要专门的人力维护PI的消息、接口等配置,同时解决PI消息推送的状态有时不同步的问题。
为解决上述技术问题,本发明所采用的技术方案是:一种SAP NetWeaver 平台与J2EE系统的通用接口集成方法,包括J2EE应用调用SAP应用方法和SAP 应用调用J2EE应用方法;
所述J2EE应用调用SAP应用方法以下步骤:
1)建立一个JCo目标库,在J2EE应用启动时完成对JCo目标库的初始化;
2)根据当前的J2EE应用与目标SAP应用的对应关系,从数据库配置中找到对应的包含SAP账号的JCo连接配置;
3)根据JCo连接配置的参数,获取JCo连接,并完成RFC参数结构获取和解析、RFC参数和Java变量的映射、RFC调用及错误处理机制、连接释放;
4)返回RFC调用结果给J2EE应用;
所述SAP应用调用J2EE应用方法包括以下步骤:
1)在SAP应用中使用ABAP程序类设计通用的处理函数,实现ABAP调用http时的任意ABAP变量的json文本序列化,以及处理http调用返回的json文本到ABAP变量的反序列化;
2)使用ABAP程序类设计通用的http调用方法,实现外围应用url获取、 http请求的参数映射、http调用,利用SAP本身的服务接口 IF_HTTP_CLIENT,以及上述的ABAP变量序列化及反序列化,完成json 文本数据交互的http调用。
所述J2EE应用调用SAP应用方法还包括:
5)在SAP相关RFC的参数结构因业务需求发生变化时,在J2EE应用中设计SAP RFC函数参数刷新机制,针对SAP RFC参数结构的变化直接刷新。
所述SAP应用调用J2EE应用方法还包括:
3)根据配置情况进行http调用的日志记录。
所述SAP应用调用J2EE应用方法的步骤1)中,在SAP应用中使用ABAP 程序类设计通用的处理函数,实现ABAP调用http时的任意ABAP变量的json 文本序列化的具体实现过程包括:
1)判断变量类型;
2)对于字符型变量,进行字符串转换处理,然后进入步骤3);对于数字型变量,进行数字转换处理,然后进入步骤3);对于日期型变量,进行日期转换处理,然后进入步骤3);对于结构型变量,进行结构分解,按字段类型顺序处理结构字段(方法同前面的字符型,数字型或日期型),然后进入步骤3);对于二维表型变量,进行表结构分解,循环处理每行结构体(方法同前面的结构型变量类型),然后进入步骤3);
3)拼装字符串;
4)返回字符串。
处理http调用返回的json文本到ABAP变量的反序列化的具体实现过程包括:
1 )将json文本反序列化为ABAP结构体;
2 )开始ABAP参数遍历;
3 )获取ABAP结构体中节点对应的字符串值;
4 )根据ABAP参数节点类型解释字符串并赋予节点值;
5 )判断是否遍历完成,若否,则返回步骤2);否则,进入步骤6);
6 )返回ABAP参数变量。
使用ABAP程序类设计通用的http调用方法的具体实现过程包括:
1)将输入参数序列化成json串;
2)根据输入参数确定请求url;
3)用SAP标准方法处理http请求;
4)判断是否请求失效,若是,则获取并设置出错信息,进入步骤5);否则,获取返回信息,即json串,将返回的json串反序列化成ABAP输出参数;
5)根据配置情况写调用日志;
6)返回结果。
与现有技术相比,本发明所具有的有益效果为:本发明由于在J2EE应用和 SAP应用都提供了统一框架程序,由框架程序负责接口交互的参数映射、接口调用及错误处理,开发人员只需进行普通的接口业务功能开发,调用统一的框架函数即可,大大提高了开发效率。这种通用的接口集成技术对于开发人员是透明的,可独立部署,也可结合企业的自己框架进行融合,实施周期不超过1个星期;支持多应用和多账户映射的JCo连接配置,无需修改程序。无需SAP PI或企业自身的服务总线产品(ESB)支持,减少服务器和数据库的数量,不需要PI配置和运维人员,开发效率提高50%,基本无需运维,成本大大降低;支持SAP服务端的消息服务器的负载均衡机制,以及J2EE应用的高可用,系统的可用性和吞吐率大大提高;建立各Sever的统一刷新机制,解决SAP RFC函数调用参数 JVM缓存刷新问题,实现了在线的版本更新。SAP RFC函数的参数基本不需维护,SAP RFC函数的登记和刷新机制简单高效。
附图说明
图1为SAP NetWeaver平台的应用与外围系统的集成图;
图2为SAP实现每一个接口的消息交互示意图;
图3为实现ABAP调用http时的任意ABAP变量的json文本序列化流程图;
图4为处理http调用返回的json文本到ABAP变量的反序列化流程图;
图5为ABAP程序类设计通用的http调用方法流程图。
具体实施方式
本发明提供的SAP NetWeaver平台与J2EE系统高效稳定的通用接口集成技术方案的接口交互方式如下:
1)J2EE应用调用SAP应用是采用Java的JCo方案,直接调用SAP的RFC 函数
提供了统一的J2EE框架程序,由框架程序负责接口入参、出参相关Java变量和RFC变量的映射及JCo调用,开发人员只需进行普通的接口业务功能开发,调用统一的框架函数即可。
2)SAP应用调用J2EE应用采用http接口直连的方式
在SAP平台提供了统一的ABAP框架程序,设计了简洁的接口交互参数格式,框架程序将任意类型ABAP变量都可以解析成json串,进行http请求,然后把返回的json结果串解析成约定格式的ABAP变量。ABAP开发人员调用外围接口时,只要遵循了接口约定的数据节点,就像调用普通的RFC函数一样,专注业务功能开发即可。
下面就这两个方面说明本发明的内容。
1.J2EE应用调用SAP应用
1)使用定制的CustomDestinationDataProvider程序提供数据库存放的多应用和多账户映射的JCo连接配置,在J2EE应用启动时完成JCo连接的初始化工作,支持SAP应用的负载均衡。开发人员无需知道JCo连接对应的SAP账号的细节,只需提供需调用的SAP应用即可。SAP账号修改时,提供了维护界面直接对配置数据进行修改,重新加载即可使用,无需修改应用程序。
2)开发了SAPService程序,完成SAP RFC函数调用的JCo连接(Destination) 获取、RFC参数结构获取和解析、RFC参数和Java变量的映射、RFC调用及错误处理机制、连接释放。
3)开发了RFCInboundProcess程序,完成了当前调用的J2EE应用与目标 SAP应用的对应关系获取以及权限审核,提供了J2EE框架的SAP调用的统一归口函数,让开发人员像调用普通的Java函数一样调用RFC函数。同时提供了J2EE 应用与目标SAP应用的账号配置维护后台处理方法,方便管理人员进行界面维护。
4)开发了SAPRepository程序,提供了JCoRFC函数参数刷新机制,可以针对JCoRFC函数的参数结构发生变化时直接刷新即可使用,解决了由于JVM 缓存RFC参数结构导致调用参数结构不一致问题,无需重启J2EE应用即可使用。
5)提供异步的处理框架,实现了J2EE应用与SAP应用的异步请求服务需求。
2.SAP应用调用J2EE应用
1)开发了json处理封装类ZCL_JSON_UTIL,负责ABAP调用http时的任意ABAP变量的json文本序列化,以及处理http调用返回的json文本到ABAP 变量的反序列化。
2)开发了http封装类ZCL_HTTPCLIENT_UTIL,负责处理SAP应用的ABAP 程序调用外部接口的外围应用url获取、http请求的参数映射、http调用,利用了SAP本身的服务接口IF_HTTP_CLIENT,采用json文本串进行数据交互,参数映射会调用前面所述的json处理封装类ZCL_JSON_UTIL。
3)可用根据配置表进行http调用的日志记录,框架程序统一对重要接口和出现错误的接口调用的日志保存ZTHTTP_LOG表。
4)设计了对J2EE应用的高可用机制,需要J2EE应用提供主备的http请求入口,当ABAP程序请求http主应用入口无响应时,自动切换到http的备应用入口。同时在J2EE端实现了负载均衡以提高响应吞吐率。
本发明为NetWeaver平台与J2EE系统的交互设计了一种高效稳定的通用接口集成方法,解决了SAP与外围系统的双向数据进行交互,包括企业的供应链、销售订单、仓储管理、财务管理业务数据进行同步。解决的主要技术问题如下:
1)支持SAP应用与外围系统的双向通用的接口调用,提供统一框架程序,完成平台环境中的自有参数类型转换,参数只需要按接口约定的类xml/json节点格式,如SAP的应用调用外围系统的接口,提供接口约定节点的ABAP参数变量即可,J2EE外围系统调用SAP的RFC函数,提供接口约定的节点形式的Java Map变量即可;
2)外围系统调用SAP平台支持多应用和多账户映射的JCo连接配置,由系统管理员管理,不需要开发人员在代码中体现,开发人员只需像普通的接口调用一样负责业务的实现;
3)支持SAP的消息服务的负载均衡,以及外围系统的http服务的负载均衡,并提供高可用的容错机制,实现在线版本更新;
4)实现JCoRFC函数的参数结构在线更新机制;
5)降低开发难度,不需要专门的人力维护PI的消息、接口等配置,同时解决PI消息推送的状态有时不同步问题。
实施例:
1)HDEP平台请求SAP接口的实现,采用SAP JCo的Java包调用RFC的实现接口。
◆SAP的官方支持包:sapjco3-NTAMD64-3.0.11.zip、 sapjco3-linuxx86_64-3.0.11.tgz
◆SAP RFC函数的参数约定如:Z_IF_ECC_HBP002B(msg_out.type=‘S’才表示RFC处理成功)
◆JCo的框架支持:多应用和多账户映射的JCo配置,支持负载均衡,通用跨应用调用方式,使用appid=999进行HDEP平台的http请求进行调试,对应到SAP ECC系统的SVR_TEST用户,HOMA系统提供全部配置和刷新功能
2)SAP请求HDEP平台接口的实现,ABAP的http服务接口IF_HTTP_CLIENT: http封装类ZCL_HTTPCLIENT_UTIL,json处理封装类ZCL_JSON_UTIL,日志保存ZTHTTP_LOG表,替换PI全部采用通用的http调用方法
◆通用http接口设计(如:ZCL_HTTPCLIENT_UTIL)
调用结果:ERRORTYPE、ERRORNO、ERRORMESSAGE、EXCEPTION、 UIMESSAGE保存在ZCL_HTTPCLIENT_UTIL类中
◆原生json格式
http://10.10.33.68/HDEP/ProcessWeb?json=ntv&appid=21
Post:
{″FunctionID″:″HG960700″,″Action″:″get_stock_ecc″,″parameters″:{″wms_db_username″:″″,″mandt″:″800″},
″itab_in″:
[{″product_id″:″207403″},{″product_id″:″207404″},{″product_id″:″207405″} ,……,{″product_id″:″212441004″}]
}
默认的带rown的格式:
{″FunctionID″:″HG960700″,″Action″:″get_stock_ecc″,″parameters″:{″wms_db_username″:″″,″mandt″:″800″},
“itab_in”:
{“row1″:{″product_id″:“207403″},“row2″:{″product_id″:“207404″},“row3″:{ “product_id″:“207405″},……,″row100″:{″product_id″:“212441004″}}
}
Claims (6)
1.一种SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,包括J2EE应用调用SAP应用方法和SAP应用调用J2EE应用方法;所述J2EE应用调用SAP应用方法以下步骤:
1)建立一个JCo目标库,在J2EE应用启动时完成对JCo目标库的初始化;
2)根据当前的J2EE应用与目标SAP应用的对应关系,从数据库配置中找到对应的包含SAP账号的JCo连接配置;
3)根据JCo连接配置的参数,获取JCo连接,并完成RFC参数结构获取和解析、RFC参数和Java变量的映射、RFC调用及错误处理机制、连接释放;
4)返回RFC调用结果给J2EE应用;
所述SAP应用调用J2EE应用方法包括以下步骤:
1)在SAP应用中使用ABAP程序类设计通用的处理函数,实现ABAP调用http时的任意ABAP变量的json文本序列化,以及处理http调用返回的json文本到ABAP变量的反序列化;
2)使用ABAP程序类设计通用的http调用方法,实现外围应用url获取、http请求的参数映射、http调用,利用SAP本身的服务接口IF_HTTP_CLIENT,以及上述的ABAP变量序列化及反序列化,完成json文本数据交互的http调用。
2.根据权利要求1所述的SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,所述J2EE应用调用SAP应用方法还包括:
1)在SAP相关RFC的参数结构因业务需求发生变化时,在J2EE应用中设计SAP RFC函数参数刷新机制,针对SAP RFC参数结构的变化直接刷新。
3.根据权利要求1所述的SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,所述SAP应用调用J2EE应用方法还包括:
1)根据配置情况进行http调用的日志记录。
4.根据权利要求1所述的SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,所述SAP应用调用J2EE应用方法的步骤1)中,在SAP应用中使用ABAP程序类设计通用的处理函数,实现ABAP调用http时的任意ABAP变量的json文本序列化的具体实现过程包括:
1)判断变量类型;
2)对于字符型变量,进行字符串转换处理,然后进入步骤3);对于数字型变量,进行数字转换处理,然后进入步骤3);对于日期型变量,进行日期转换处理,然后进入步骤3);对于结构型变量,进行结构分解,按字段类型顺序处理结构字段,方法同字符型,数字型或日期型,然后进入步骤3);对于二维表型变量,进行表结构分解,循环处理每行结构体,方法同前面的结构型变量类型,然后进入步骤3);
3)拼装字符串;
4)返回字符串。
5.根据权利要求1所述的SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,处理http调用返回的json文本到ABAP变量的反序列化的具体实现过程包括:
1)将json文本反序列化为ABAP结构体;
2)开始ABAP参数遍历;
3)获取ABAP结构体中节点对应的字符串值;
4)根据ABAP参数节点类型解释字符串并赋予节点值;
5)判断是否遍历完成,若否,则返回步骤2);否则,进入步骤6);
6)返回ABAP参数变量。
6.根据权利要求1所述的SAP NetWeaver平台与J2EE系统的通用接口集成方法,其特征在于,使用ABAP程序类设计通用的http调用方法的具体实现过程包括:
1)将输入参数序列化成json串;
2)根据输入参数确定请求url;
3)用SAP标准方法处理http请求;
4)判断是否请求失效,若是,则获取并设置出错信息,进入步骤5);否则,获取返回信息,即json串,将返回的json串反序列化成ABAP输出参数;
5)根据配置情况写调用日志;
6)返回结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910135968.8A CN109933313B (zh) | 2019-02-25 | 2019-02-25 | 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910135968.8A CN109933313B (zh) | 2019-02-25 | 2019-02-25 | 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109933313A CN109933313A (zh) | 2019-06-25 |
CN109933313B true CN109933313B (zh) | 2022-07-19 |
Family
ID=66985742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910135968.8A Active CN109933313B (zh) | 2019-02-25 | 2019-02-25 | 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109933313B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252339A (zh) * | 2013-06-25 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 接口层开发、接口层实现数据交互的方法和装置 |
CN104484164A (zh) * | 2014-11-20 | 2015-04-01 | 朱敏 | 一种erp环境下数据处理方法及系统 |
CN107193666A (zh) * | 2017-04-20 | 2017-09-22 | 北京安云世纪科技有限公司 | 应用程序之间调用的控制方法及装置 |
-
2019
- 2019-02-25 CN CN201910135968.8A patent/CN109933313B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252339A (zh) * | 2013-06-25 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 接口层开发、接口层实现数据交互的方法和装置 |
CN104484164A (zh) * | 2014-11-20 | 2015-04-01 | 朱敏 | 一种erp环境下数据处理方法及系统 |
CN107193666A (zh) * | 2017-04-20 | 2017-09-22 | 北京安云世纪科技有限公司 | 应用程序之间调用的控制方法及装置 |
Non-Patent Citations (3)
Title |
---|
ABAP接口之Http发送json报文;wuqingbo;《https://www.cnblogs.com/wuqingbo/p/6434124.html》;20170223;全文 * |
One more ABAP to JSON Serializer and Deserializer;Alexey Arsenyev;《https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=499355652》;20180523;全文 * |
SAP与其它系统集成的接口技术研究;赵佳琦;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20110415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109933313A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1693765B1 (en) | A data processing system and method | |
US7350184B2 (en) | System and method for enterprise application interactions | |
US7213049B2 (en) | System and method for transaction processing with transaction property feature | |
US6738975B1 (en) | Extensible distributed enterprise application integration system | |
US7580946B2 (en) | Smart integration engine and metadata-oriented architecture for automatic EII and business integration | |
US7415715B2 (en) | Transaction execution system interface and enterprise system architecture thereof | |
EP1430424B1 (en) | Computing system and method to implicity commit unsaved data for a world wide web application | |
US7080092B2 (en) | Application view component for system integration | |
US8321450B2 (en) | Standardized database connectivity support for an event processing server in an embedded context | |
US7225425B2 (en) | Rapid application integration | |
US9508050B2 (en) | Executing a business process in a framework | |
US20030229884A1 (en) | Interaction manager template | |
US20110023055A1 (en) | Standardized database connectivity support for an event processing server | |
US20040044729A1 (en) | Rapid application integration using functional atoms | |
US8352958B2 (en) | Systems and methods for providing a generic audit trail service | |
US20070169016A1 (en) | Systems and methods for providing mockup business objects | |
MXPA00007085A (es) | Sistema de integracion de aplicacion de empresa distribuido extensible. | |
US9836314B2 (en) | Native user interface interaction via a web-based user interface | |
JP2002531893A (ja) | 小型軽量クライアントアーキテクチャーを有するクライアントサーバシステム | |
CN114925084A (zh) | 分布式事务处理方法、系统、设备及可读存储介质 | |
US8286181B2 (en) | Supporting administration of a multi-application landscape | |
CN109933313B (zh) | 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 | |
Vandersluis | XML-based integration with xaware: Unifying applications and data in Today's e-business world | |
US20090100091A1 (en) | Method and system for providing a process object framework for processing a request-type process | |
De Jonghe et al. | J2ee technology in practice: building business applications with the java 2 platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |