SAP 环境中的 OData 与 BAPI

OData vs BAPI in SAP environment

无论我们可以用 OData 做什么,我们都可以使用 BAPI 对吗?

那么,与 BAPI 相比,OData 的主要优势是什么?

请告诉我你的看法

BAPI

  • SAP 专有
  • 基于 SAP 专有协议 RFC
  • 固定输入结构(没有 URL 灵活的查询参数)
  • 固定输出结构(结构、表格,但不是每个的动态编号)
  • 手册文档描述了仅供人类使用的服务结构
  • 结论:适合 SAP 系统相互连接

OData

  • 开放标准
  • 基于 REST,网络事实上的应用程序集成标准协议
  • 灵活的查询语言(筛选、排序、展开、关联、搜索)
  • 灵活输出(实体、实体集、扩展实体)
  • 元数据文档以机器可读格式解释服务结构
  • 结论:适合将 SAP 系统连接到 SAPUI5 和类似的 UI

OData 相对于 BAPI 的主要优点是灵活性、开放标准和机器可读性。这可能是以速度为代价的。

这个比较有点偏差。 BAPI 是为连接服务器而发明的,而 OData 则用于将服务器连接到客户端。尽管 OData 的发明者可能已经考虑到服务器连接,但纯 REST 已成为连接这一级别的事实标准。因此,将 BAPI 与 REST 以及 Web 服务等相关标准进行比较会更清晰。

可以通过 BAPI 接口模拟 OData:(URL 查询) 字符串输入,(JSON 结果) 字符串输出。因此,您可以得出结论,两者在功率方面是等效的。但是底层协议不同,系统更容易识别REST下的HTTP协议,而不是SAP专有的RFC协议。

从功能的角度来看,BAPIOData 数据源更具体,更适合您的用例。但是 OData 是一个标准,这意味着您可以在客户端开发过程中免费获得很多工具,例如 OData js 客户端库。您可以使用可以使用 OData 数据源的框架,而不是针对您创建或 SAP 提供的单个 BAPI 进行编程。

客户端开发人员可能不熟悉他们必须从中获取数据的每个子系统的复杂性。您拥有需要处理的业务知识和必须满足的技术依赖性。您可以公开一组标准 BAPI 以达到类似的目的(如果您忽略所有非 SAP 的内容),但 OData 就是这样。一个标准接口,其中至少技术部分在数据源之间共享。

您是否看到 OData 中的值取决于您来自哪里。如果您的要求是开发一个单一的、高度集中的客户端应用程序,从 SAP 系统读取数据和向 SAP 系统写入数据,那么 BAPI 很可能是最简单的选择。但是,如果您必须设置某种 CEO 仪表板来集成多个数据源并显示各种运营统计数据,如销售数据、生产中断、现金流量以及您可能想到的任何其他信息,您将更容易集成OData 数据源到可能用于设置此类仪表板的标准应用程序。

截至目前,如果您浏览来自 SAP https://api.sap.com/package/SAPS4HANACloud?section=Artifacts 的 API hub for S/4 HANA Cloud,您会看到 SAP 正朝着 oData 等开放协议的方向前进和肥皂。 您可以轻松地将 BAPI 包装为 oData Serivce 或 SOAP 服务。