前言
SAP 与其他系统实时性交互的方式主要有两种,分别为RFC 和Web Service 方式。
RFC方式,是指SAP的Function设置成RFC形式,可以由其他系统调用SAP的RFC形式。调用SAP的RFC,在J2EE(JAVA)项目里有JCO可以使用,可以调用RFC和返回结果。这个方式只要能够熟悉类似JCO的使用,就可以在其他系统中使用,但是因为SAP中Fuction属于自开发函数,需要的ABAP开发能力较高,另外只能单向进行调用,一般是和Web Service同时使用(在C++/C#项目里,也可以建立RFC,但不确定SAP也能调用其他系统的RFC)。
Web Service,就是系统交互使用Web Service方式。一般,SAP调用其他系统的Web Service还是比较常见的,其实SAP也可以提供Web Service的,这也算是与时俱进,和所谓的SOA扯上关系了。这种方法的好处是都符合WS的标准,任何其他系统都实现了相应的接口,在实时性和交互性上都有了保障。需要注意的是SAP对Web Service发布的格式要求比较严格,很多时候无法调用就是因为格式的原因,还好一般在建立Web Service Proxy的时候就会发。
一、RFC配置
1、通过TCODE【SE80】,选择函数组,我这里命名为【ZBW99】,可自行定义,该函数组创建好后,是没有下图中那些函数模块的,需要右键【ZBW99】创建【功能模块】,每个功能模块就代表着一个RFC接口。
2、当功能模块创建好后,需要对其进行相应的设置与代码编写,才可使用。首先以这个接口为例,属性页签下,需要勾选【远程启用的模块】,如果不勾选,该接口只能在当前系统中使用,一旦勾选,外部系统可直接调用该接口。
3、第二个页签【导入】指的是该接口的输入参数,调用者通过输入对应的参数值获取对应的数据,这一块可根据实际需要来自行设定。
4、第三个页签【导出】指的是接口的输出参数,一般外部系统调用BW接口时返回的数据都为JSON格式数据,即HTTP + JSON,JSON数据的解析由外部系统进行自行处理。
5、最后一个页签【源代码】,该部分是接口的主要核心逻辑部分,该接口怎么通过输入参数进行取数,怎么将数据给到最终的输出参数,都是该部分需要思考的。
到这里RFC接口基本已经创建完成了,创建完成后,开发者需要进行自测,自测完成后才可将该函数接口名称给到外部系统调用,如果外部系统是SAP,可直接通过call function 直接调用,如果是java或者大数据平台,可通过JCO调用。注意:这种方式是一种单向调用,指的是外部系统需要获取BW数据,可通过这种方式。
二、Web Service 配置
Webservice是以WSDL形式发布,即一个带有URL的XML文件。
要让外部应用能够访问SAP的Web Service(以下简称为WS),那么必须配置SAP的webservice作为服务提供者(Service Provider),则需要先后按照以下步骤进行操作:
①创建RFC函数
②给RFC函数配置WS(webservice)
③使用SOAMANAGER生成WSDL(可供外部访问的XML链接)
前面RFC已经创建好,这里直接配置WS,如下图所示:
配置过程可参考【SAP】ABAP——Web Service简介与配置方法_abap webservice-优快云博客 。
上面这种方式为外部系统调用BW的WS,配置服务选择的是【service Provider】,即服务提供者,如果需要BW调用外部系统的WS,配置的时候选择【Service ConSumer】,配置过程与上面一致。