SAP对外接口方案根据公司对系统的管控而不同,总体上常用的主要有下面几种:
1、IDOC 方案;2、WebService方案;3、RFC 方案;4、中间件(接口平台)方案;5、FTP/SFTP 方案。
方案评估需考虑的因素,如 公司已有方案、交互数据量、交互频率、安全级别等
下面针对这几类方案做简单的介绍:
一、IDOC(Intermediate Document)
SAP IDOC 是SAP系统中一种标准数据结构,它用于在SAP系统之间或SAP系统与非SAP系统之间交换数据。这是一种自包含的数据结构,可以用于SAP系统之间或SAP系统与外部系统之间的电子数据交换。IDoc包含一组标准化的数据,可以用于通信,这些数据与发送和接收系统的实际格式无关。
SAP IDOC 常用于SAP 内部不同模块的集成,也可用于SAP 与外部系统交互:
ALE(Application Link Enabling):用于在同一集团中不同的SAP系统之间的数据交换
EDI(electronic data exchange):实现不同企业间电子数据的交换,通过IDoc文件和业务伙伴进行数据交换
通过IDoc也可连接其它应用系统
创建IDOC步骤如下:
第一步:WE31 创建IDOC所包含的字段.
第二步:WE30 创建IDOC 把Segment分配给IDOC
第三步:WE81 创建信息类型
第四步:WE82 把IDOC类型与信息类型对应.
第五步:WE57 Assign Message & Idoc Type to a Function Module for Data Process
第六步:SM59 Define a RFC connection for Idoc transfer
第七步:WE21 Define a Port ( Assign a RFC destination which created in SM59 )
第八步:WE41/42 Creat Process Code
第九步:WE20 Define a Partner Profiles( Also creat a Outbound parameters with Port, or Inbound parameters with Process code )
具体案例可以参考:IDOC的配置和开发(完整的IDOC)
IDOC系统学习
运维过程中更常用的是分析管理IDOC:
WE02 显示IDOC,根据时间、类型等查看IDOC消息。
WE46 IDOC管理(出/入)
WE60 IDOC类型文档(查看IDOC结构及其字段属性)
WE19 根据IDOC号进行IDOC处理,直接修改IDOC参数进行手动补发(慎重)
二、WebService(SOAMANAGER)
WebService 理论上既包含SAP封装的XML格式 也包含 HTTP 对应的REST方式。
XML格式的WebService
SAP既可以提供WS给外部系统调用,也可以配置调用外部系统WS,最后都是通过T-CODE:SOAMANAGER 完成服务配置。
SAP提供WS的一般步骤:
1、创建RFC
2、发布
3、SOAMANAGER配置
案例可参考:SOAMANAGER创建WEB服务
SAP Web Service简介与配置方法
SAP调用外部系统WS的一般步骤:
1、创建Services Consumer服务
2、SOANAMAGER配置
案例可参考:SAP 调用外部系统webservice接口(SOAP-XML)
经验之谈:大部分企业在使用SAP过程中,都会逐步对接外围系统,数据交互需求会越来越多,为了避免反复调整服务,需要提前规划好接口设计。如果使用这一类WebService对外提供接口,可以使用统一的RFC负责对外提供WS, 通过JSON字符串方式传输入参、出参,具体业务功能在RFC内完成分配,并分别在子RFC函数中完成解析和业务逻辑。
HTTP对应的REST方式
知识背景:HTTP教程
[JSON教程](https://www.runoob.com/json/json-tutorial.html)
灵活: 可以传输任意对象,对象类型由Content-Type标记
客户端请求request消息包括:请求行(request line)、请求头部(header)、空行、请求数据。服务端响应response包括:状态行、消息报头、空行、响应正文
主要请求方法:
- GET 请求指定的页面信息,并返回实体主体
- HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
- POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
- PUT 从客户端向服务器传送的数据取代指定的文档的内容
- DELETE 请求服务器删除指定的页面
- CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
- OPTIONS 允许客户端查看服务器的性能
- TRACE 回显服务器收到的请求,主要用于测试或诊断
常用的Get & Post 的区别:
- 请求缓存:GET 会被缓存,而post不会
- 收藏书签:GET可以,而POST不能
- 保留浏览器历史记录:GET可以,而POST不能
- 用处:get常用于取回数据,post用于提交数据
- 安全性:post比get安全
三、RFC
直接使用RFC完成数据交互,往往需要外围服务器安装sapjco3.jar, 同时处于公司内网,可以物理直连SAP服务器。
对于这类数据交互,对SAP 端的开发来说最为方便,不过对SAP服务器来说是一个考验,因为每次调用相当于多一个进程,并发数量过多会拖累SAP服务器整体性能。
案例参考:java使用jco连接sap调用rfc函数,环境配置+代码
四、中间件(接口平台)
中间件,可以通俗的理解为接口平台,统一管理企业不同系统之间的接口。常见的中间件包括SAP PO系统、企业总线(ESB)。其中SAP PO 作为SAP的产品,对SAP兼容性相当友好,但是费用高、开发复杂等缺点也不能忽视。
可以通过下面的文章了解SAP PO的发展历史和教程案例:
【SAP PO】SAP PO 简介:XI、PI、PO的关系与区别
这里分享几个SAP PI 系统开发的案例:
SAP PI System Landscape(SLD) 系统配置
【SAP PO】SAP PO 接口配置完整教程之一RFC服务发布
【SAP PO】SAP PO消息ID的应用与接口日志查询方法
五、FTP/SFTP方案
FTP/SFTP的概念和区别壳参考:什么是FTP?什么是SFTP?FTP和SFTP的区别是什么
程序逻辑主要为:
1、FTP连接
2、打开FTP文件夹(命令)
3、打开本地文件夹(命令)
4、文件转移(命令)
5、断开FTP连接
SAP也提供Demo程序:
RSFTP001 - SAPFTP Version (Current Version one is working on)
RSFTP002 - Execute FTP Command
RSFTP003 - FTP put / get Test
RSFTP004 - FTP Copy
RSFTP005 - SAPFTP check
RSFTP006 - FTP command list
RSFTP007 - Test FB:FTP_SERVER_TO_R3 / FTP_R3_TO_SERVER
RSFTP008 - Test FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT
RSFTP009 - Test FTP put with Verify