原文链接:
- SAP INTERFACES IN A NUTSHELL | RFC, BAPI, IDOC, EDI, ALE, UDDI, SOAP, WSDL, REST, API, FTP, SFTP
- SAP interfaces to external systems
在开发接口的时候,总有很多技术和名词,但是总不知道它们的区别和使用方式,所以上网查了一下,发现这两篇文章不错,因此翻译汇总如下,如果翻译的不好,请多多赐教。
如何将外部系统集成到 SAP 中以及 ERP 系统提供哪些接口?
SAP 标准接口提供了将外部系统连接到 SAP 的集成。最后但同样重要的是,公司流程的数字化需要集成非 SAP 系统。 SAP 接口允许任何其他软件和其他解决方案与 SAP 系统交换数据。每个可用的数据交换接口都有优点和缺点。在这里,我们介绍了最重要的集成接口,描述了它们的基本功能,并在视频中展示了 SAP 系统与 RFC 接口的耦合示例。在我们的实际示例和行业说明中发现您需要了解的有关使用 SAP 的所有信息。您可以访问我们的教程流,找到有关此主题的专门视频。
RFC – Remote Function Call
- 远程函数调用
- 用于与 SAP 和/或其他系统通信的标准 SAP 接口
- RFC 调用功能模块
根据 SAP 本身的说法,非 SAP 系统和 SAP 之间通信的经典方式是 RFC 接口。 RFC 接口也经常用于 SAP 系统本身之间的通信。简单来说,RFC 就是一个远程函数调用。从 SAP/R3 到今天,用于集成的 RFC 接口一直可用。对于 RFC,有一个 RFC 客户端和一个 RFC 服务器,客户端借此调用服务器上的函数。该函数在远程系统上执行。在 RFC 耦合中,两个系统都可以充当服务器和客户端。 RFC 函数的调用是同步的,特别适用于生产直接需要决策或数据的流程。 OPC Router 可以使用所有参数类型和数据调用 SAP 系统中的 RFC 接口,也可以配置为 RFC 服务器,作为调用目标。
可以通过 SE37 来查看远程调用模块是否开启:
BAPI – Business Application Programming Interface
- 业务应用程序编程接口
- SAP 业务对象的特定方法,存储在 SAP 系统的业务对象存储库 (BOR) 中
- 用于执行业务任务
- 在 SAP 中,BAPI 作为支持 RFC 的功能模块存储在 ABAP Workbench Function Builder 中。
- BAPI 具有标准业务接口,使外部应用程序(在 SAP 业务对象的帮助下)能够访问 SAP 流程、功能和数据。
BAPI 的基本概念是面向对象。 BAPI 使业务对象在 SAP 系统中可用,以供外部系统访问。业务对象表示真实的对象,例如订单、客户或文章。使用业务对象提供的方法专门访问这些实例。从技术上讲,该方法是在 RFC 接口的基础上调用的。调用的实例由关键字段(客户编号等)确定。 OPC 路由器通过 SAP 插件连接 BAPI。
ALE(Application Link Enabling )
- R/3 应用程序之间交换业务数据的机制
- 它是 SAP Netweaver AS ABAP 中的一项基本服务,应用程序使用该服务发送和接收 IDoc
IDoc Messages
- 中间文件
- SAP 应用程序中使用的标准数据结构,用于在 SAP 系统应用程序和外部系统之间传输数据
- 例如,使用 IDocs,拥有 SAP ERP 系统的公司可以与合作伙伴或客户等外部实体交换数据
- 它是交换数据的数据容器
- 当我们执行出站 ALE 或 EDI 流程时,会创建一个 IDOC
IDoc(中间文档)是一种 SAP 文件格式。它用于传输交易数据。 IDoc 的结构由 IDoc 类型规定,并定义文件中字段的确切长度和位置。 IDoc 分为标题行、任意数量的数据段和状态记录。与 RFC 接口相反,通过 IDoc 进行的通信始终是异步的。发送方根据 IDoc 类型的规范创建带有数据的 IDoc,并将其传输到目标系统。接收系统接受 IDoc 并将其插入 IDoc 的处理缓冲区,从这里开始陆续处理文件。 IDoc 是一种非常古老且行之有效的通信方法,特别适用于传输主数据和过帐记录。您可以使用 SAP 插件从任何来源发送 IDocs。
EDI(Electronic Document Interchange)
- 电子文件交换
- 使用标准格式通过通信网络在企业与其合作伙伴之间以电子方式交换商业文件。 EDI 需要 IDoc。
- 数据将首先转换为统一的交换格式,即所谓的 EDI 格式,而不是直接交换 IDoc。许多公司要求他们的供应商通过 EDI 发送数据。
- SAP 不提供 EDI 转换器,但在标准系统中有可用的 EDI 消息供使用
UDDI(Universal Description Discovery and Integration)
- 通用描述发现和集成
- 基于 XML 的标准,用于描述、发布和查找网络服务
- UDDI 与 SOAP 和 WSDL 一起被视为 Web 服务的三大基础标准之一
- 为客户端提供一种动态查找其他 Web 服务的机制。
- 充当 Web 服务接口的目录
SOAP Webservice
- 简单对象访问协议 Web 服务
- 它是一种基于 XML 的消息传递协议,用于在计算机之间交换信息
SOAP 网络服务是连接 SAP 的较新技术之一。自从 7.0 版本和 SAP NetWeaver 的引入,Web 服务已经成为接口的标准。SOAP 是一种纯网络技术,使用 HTTP 协议调用功能。RFC 功能也是通过 SOAP 接口提供的。客户端通过 WSDL 文件(Web 服务描述语言)接收关于函数及其参数的详细信息。WDSL 文件可以通过定义的 URL 进行检索。Web 服务在 SAP 中使用 WebDynpro 创建,并连接到 ABAP 程序和 RFC 接口。RFC 功能也可以使用其他解决方案(如 SAP MII)作为 Web 服务发布。OPC Router 可以用其 SOAP 插件使用 SAP 的 Web 服务。
WSDL(Web Service Definition Language)
- Web 服务定义语言
- 它是描述 Web 服务的标准格式
wsdl:definitions
<wsdl:definitions name="name_to_be_specified"
targetNamespace="target_uri"
xmlns:tns="target_uri"
xmlns:wsdl="wsdl_uri"
xmlns:xxxx="respective_uri" ...>
...
</wsdl:definitions>
REST API(REpresentational State Transfer)
- 代表性的状态转移
- 在网络上的计算机系统之间提供标准的架构风格,使系统更容易相互沟通
- 符合 REST 标准的系统,通常被称为 RESTful 系统,其特点是它们是无状态的,并将客户端和服务器的关注点分开
多年来,SAP Gateway 一直具有以 REST API 的形式提供 ABAP 函数和 RFC 接口的功能。 REST 比 SOAP 有一些优势,但在技术上是相似的,因为它也是通过 HTTP 协议进行的函数调用。与 SOAP 相比,REST 易于从各种平台调用,以 JSON 或 XML 格式传输纯人类可读的数据,速度更快,节省资源。在 REST 的基本思想中,对象是通过 REST 访问的,而不是它的方法。可以通过 REST 访问更改对象的状态。变化是由传递的参数引起的。一个可能的用例是通过 REST 接口连接 SAP PI。
API(Application Programming Interface)
- 应用程序接口
- 允许您的产品或服务与其他产品和服务进行通信,而无需知道它们是如何实现的
- 这可以简化应用程序开发,节省时间和金钱
- 当您设计新工具和产品或管理现有工具和产品时,API 可为您提供灵活性;简化设计、管理和使用;并提供创新机会
- API 有时被认为是合同,其文件代表双方的协议: 如果第一方以特定的方式发送远程请求,第二方的软件就会这样回应
SAP HANA
2013 年,SAP 发布了 HANA 平台,同时也发布了 SAP HANA 平台的内存数据库。对关系数据库的访问类似于对其他关系数据库系统的访问,由此可以将 SAP 连接实现为纯数据库连接。如果要连接的 SAP 应用程序使用共同商定的表和函数,则可以通过它们进行数据交换。 SAP HANA 数据库可以免费测试,使用 OPC 路由器访问的 SAP HANA 插件可以轻松建立。
名词缩写总结
| 名词缩写 | 全称 |
|---|---|
| RFC | Remote Function Call |
| BAPI | Business Application Programming Interface |
| IDOC | Intermediate Document |
| EDI | Electronic Document Interchange |
| ALE | Application Link Enabling |
| UDDI | Universal Description Discovery and Integration |
| SOAP | Simple Object Access Protocol Web Service |
| WSDL | Web Service Definition Language |
| REST | REpresentational State Transfer |
| API | Application Programming Interface |
| FTP | File Transfer Protocol |
| SFTP | Secure File Transfer Protocol (or SSH File Transfer Protocol where SSH stands for Secure Shell) |
FTP: 文件传输协议,用于在 Internet 上的计算机之间传输文件的标准 Internet 协议。
SFTP:安全文件传输协议,或 SSH 文件传输协议,其中 SSH 代表安全外壳,文件传输协议 (FTP) 的安全版本,它有助于通过安全外壳 (SSH) 数据流进行数据访问和数据传输。
FTP vs SFTP
您可以将这两个(在高层次上)视为文档。 FTP 作为您的常规邮件,SFTP 作为您的加密电子邮件。 FTP 和 SFTP 的主要目的是将文件从一台计算机传送到另一台计算机(甚至从一个系统传送到另一个系统)。
唯一的区别是 SFTP 附带了一种从一台计算机安全远程登录到另一台计算机的方法。 SFTP 有一个安全层或外壳。因此,可以将它与加密的电子邮件相关联,但不要过于字面意思。
例如:如果客户需要来自银行的一些文件,银行可以通过 SFTP 将这些文件从他们的服务器发送到客户的服务器。这些文件将从他们的“计算机”带到客户的“计算机”,并放置在一个文件夹中。反过来,客户端可以将这些文件从上述文件夹(由银行访问)移动到另一个服务器文件夹,应用程序可以在其中访问/使用文件进行处理。
| FTP | SFTP |
|---|---|
| 文件传输 | 安全文件传输. Shell. |
| 普通邮件(邮递员投递) | 电子邮件(加密) |
ALE vs IDOC vs EDI
从它们的正式定义来看,您可以将 ALE 和 EDI 视为载体。将 IDOC 视为信息的乘客。基本上,有 2 种车辆可供乘客选择。
ALE 只能从 SAP 转到 SAP 位置(例如:SAP 开发环境到 SAP 测试环境),而 EDI 可以从 SAP 转到非 SAP 位置,反之亦然(例如:.NET 应用程序到 SAP 开发环境,反之亦然)。
| ALE | IDOC | EDI |
|---|---|---|
| SAP 之间的数据交换 | 数据容器 | SAP 系统到非 SAP 系统的数据交换 |
| 载体 (SAP to SAP) | 数据 (with information) | 载体 (SAP to Non-SAP) |
RFC vs BAPI
这些都是 SAP 中的函数调用。您可以将这两个视为对运算符的调用。 RFC 将迎合仅覆盖本地呼叫(SAP 到 SAP)的运营商,而 BAPI 将迎合可以覆盖国际呼叫(本地到国外/国际或 SAP 到非 SAP 反之亦然)的运营商。
RFC 将促进本地呼叫,而 BAPI 将促进国际呼叫。 BAPI 是技术上支持 RFC 的功能模块。在这种情况下,您可以说所有 BAPI 都是 RFC,但并非所有 RFC 实例都是 BAPI。
从技术角度来看,您可以将 BAPI 与 Business Objects 相关联。这些业务对象是在非 SAP 应用程序可以访问的业务对象存储库中创建的。例如,可以创建/利用 BAPI 来容纳来自外部系统的数据,例如订单或销售订单。
另一件需要注意的事情是,您可以将 BAPI 与业务对象和面向对象编程 (OOP) 方法相关联。
此时它仍然有点令人困惑,但通常您可以将 BAPI 关联为一个函数调用,使外部应用程序能够访问 SAP 中的业务流程和数据。
| RFC | BAPI |
|---|---|
| RFC 是一个可以处理 SAP 到 SAP 的函数调用 | BAPI 是支持 RFC 的函数调用,它支持非 SAP 到 SAP 接口 |
| 本地调用 | 国际呼叫外部/非 SAP 系统到 SAP |
UDDI vs SOAP vs WSDL vs REST vs API
这些都与 Web 服务相关联。我们可以这样区分它们:
- UDDI 是 Web 服务接口的目录。它就像一个目录服务,企业可以在其中列出自己并依次搜索 Web 服务。
- UDDI 使用 WSDL 来描述 Web 服务的接口。
- SOAP 始终采用 XML 格式,它用作消息(带有实际数据)
- WSDL 是描述相关 Web 服务的 XML 文档。如果这个文档描述了 web 服务,那么这个文档就是 UDDI 目录的一部分。
- REST 是一种架构风格或模式,它总是与 API 相关联(您可能听说过 REST API)。与 SOAP 不同,它不限于 XML。可以涵盖纯文本、HTML、XML、JSON 等。
- API 是应用程序之间的协议。把它想象成一个简单的合同。 API 不关心另一个应用程序的背景。它只需要应用程序来完成交易的结束。一个简单的例子就是服务员。
- 这个服务员就是你的 API。您向服务员提及您的订单,服务员向厨师传达/提及您的订单。然后厨师会根据您点的菜做饭。一旦订单完全煮熟,服务员就会将订单交付给您。这满足了这个例子。
- 你提出了一个要求。你得到你的订单。提到高层的服务员不需要了解两种背景(你和厨师),这是一个很冷酷的例子。服务员只需履行“契约”即可。
- 从刚才提供的视觉效果来看,有一条红色虚线表示所有 Web 服务都是 API,但并非所有 API 都是 Web 服务。
| UDDI | SOAP | WSDL | REST | API |
|---|---|---|---|---|
| Web 服务接口目录 | 用于交换实际数据/信息的基于 XML 的消息传递协议 | 描述和解释相关 Web 服务的 XML 文档 | 架构风格 + 纯文本、HTML、XML、JSON 等 | 应用程序之间的协议 |
| 目录 | 发送带有实际数据的消息 | 描述 Web 服务 | 架构风格,总是与 API 有关 | 只要履行合同。我不需要知道你的背景 |
其他参考资料
请随时访问这些链接以获取有关每个链接的更多信息。其中大部分深入探讨了该主题。