SAP系统的接口方式
SAP对外接口方案根据公司对系统的管控而不同,方案评估需考虑的因素,如 公司已有方案、交互数据量、交互频率、安全级别等,总体上常用的主要有下面几种:
1. PI (信使中间件)中间件(接口平台)方案
2. RFC/JCO (远程函数调用)
3. Web Service
4. Restful调用
5. 直连接口方式
6. IDOC 方案
7. FTP/SFTP 方案
中间式接口:使外部系统和SAP系统相对独立,不涉及双方内部结构。
主动式接口:SAP系统主动发起请求,读写数据。
6. 被动式接口:SAP系统作为被动方接收其他系统的数据请求
WebService缺点
1、引入代码较多,对于初学者难以理解;
2、效率不高,本身HTTP是应用层协议,效率就不高;
此外,XML不论是解析还是单元素或属性都要包含两次(<element>128</element>),网络传输上时间和空间损耗都比较大。
优点:跨平台
缺点:xml数据量大的话 效率低
OData
Restful的优势
1. 轻量,直接基于http,不在需要任何别的诸如消息协议。get/post/put/delete为CRUD操作
2. 面向资源,一目了然,具有自解释性。
3. 数据描述简单,一般以xml,json做数据交换。
4 HTTP考虑的更全面,更易用,更有扩展性。
不必再YY一个协议: 取东西就要GET(GET就是安全的,不会修改服务资源),
新增就要POST(POST就是不安全的),修改就要PUT(PUT就要幂等),
删除就是DELETE(DELETE就要幂等)....
优雅的展示你的资源,甚至让别人不看协议就能找到这个资源.
5 REST充分利用HTTP的几个动作,可以让浏览器或者中间件根据动作来确定数据有没有发生改变,决定是不是要缓存数据
SAP系统接口方式的详细划分:
1. PI (信使中间件)
适用于大公司,使用Web Service作为底层技术,具有实时性高和处理大数据量的优点。
数据: SAP- PI- U8
U8- PI- SAP
PI 底层用的还是webservice 技术
优点:实时性高; 可处理大数据(在调用PROXY 发送时 还可以分包处理); 有接口数据日志在PI系统;
缺点:PI 服务器+1; PI系统配置工作; 和每个外部系统都要做wsdl配置;
2. RFC/JCO (远程函数调用)
适用于小公司或简单业务场景。
JAVA那边叫JCO,SAP叫RFC,其实是同一个)
(1)我们提供SAP系统的主机名,端口,地址,密码等相关信息给对方系统;
(2)在SE37里面写好function,并且把这个function设置为remote 形式远程调用。
远程启用的模块:
由其他系统调用SAP的RFC,在J2EE项目里有JCO可以使用(其他语言也有类似的dll包),可以调用RFC和返回结果。
这个方式只要能够熟悉类似JCO的使用,就可以在其他系统中使用,比中间表有
优点:更好的实时性,(如果数据量大,会导致进程时间过长,有超时风险)
缺点:SAP中Fuction属于纯过程式语言,很多时候功能不是很强,另外只能单向进行调用,一般是和Web Service同时使用(在C++/C#项目里,也可以建立RFC,但不确定SAP也能调用其他系统的RFC)。
3. Web Service
Web Service(一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序接口)
SAP调用其他系统的Web Service还是比较常见的,其实SAP也可以提供Web Service的,这也算是与时俱进,和所谓的SOA扯上关系了。
优点:都符合WS的标准,任何其他系统都实现了相应的接口,在实时性和交互性上都有了保障。
缺点:SAP对Web Service发布的格式要求比较严格,很多时候无法调用就是因为格式不对,(格式问题是这种方式使用过程常见问题,而且双方开发产生争议很大原因,可能需要一方配合调整)
还好一般在建立Web Service Proxy的时候就会发现。
Web Service调用方式
(1)Se37 写一个function,这个function启用远程调用
(2)SE80 创建企业服务,然后激活服务定义
(3)SOAMANAGER 进行相关配置
补充:
SOA(Service-Oriented Architecture,面向服务的架构)是一个组件模型,是一种高层级的架构设计理念,可通过在网络上使用基于通用通信语言的服务接口,让软件组件可重复使用。
SOA将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
4. Restful调用
(1)在SICF中做一些相关的配置
(2)用SICF中的生成的类,在这个类中调用我们写的function
(3)Se37 写function
restful和JCO的区别:restful对方可以直接传参访问,JCO是需要服务器安装SAP GUI。然后下载SAP官方的Java JCA包,引入这个jca包,配置登陆gui端的配置。实现模拟后台登陆gui,调用SE37函数,从而实现远程调用。
5. 直联接口方式
5.1 通过HTTP地址直连对方的数据库
一般对方会给我们一个HTTP地址,然后我们调用这个地址就可以了,大概调用方式如下:
DATA: lo_http_client TYPE REF TO if_http_client,
lv_url TYPE string,
lv_json TYPE string,
lv_len TYPE