CN109933313B - 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 - Google Patents

一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 Download PDF

Info

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
Application number
CN201910135968.8A
Other languages
English (en)
Other versions
CN109933313A (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.)
Happigo Co ltd
Original Assignee
Happigo 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 Happigo Co ltd filed Critical Happigo Co ltd
Priority to CN201910135968.8A priority Critical patent/CN109933313B/zh
Publication of CN109933313A publication Critical patent/CN109933313A/zh
Application granted granted Critical
Publication of CN109933313B publication Critical patent/CN109933313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种SAP NetWeaver平台与J2EE系统的通用接口集成方法,包括J2EE应用调用SAP应用方法和SAP应用调用J2EE应用方法。本发明由于在J2EE应用和SAP应用都提供了统一框架程序,由框架程序负责接口交互的参数映射、接口调用及错误处理,开发人员只需进行普通的接口业务功能开发,调用统一的框架函数即可,大大提高了开发效率。

Description

一种SAP NetWeaver平台与J2EE系统的通用接口集成方法
技术领域
本发明涉及具有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处理成功)
Figure GDA0003637815380000071
◆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)
Figure GDA0003637815380000081
调用结果: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)返回结果。
CN201910135968.8A 2019-02-25 2019-02-25 一种SAP NetWeaver平台与J2EE系统的通用接口集成方法 Active CN109933313B (zh)

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)

* Cited by examiner, † Cited by third party
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 北京安云世纪科技有限公司 应用程序之间调用的控制方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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