在 SAP S/4HANA 系统里排查一个 OData V4 请求时,经常会遇到一种很有意思的现象。HTTP 层看到的只是一个普通的GET、POST、PATCH或$batch请求,真正进入 ABAP Runtime 之后,SAP Gateway Foundation 却不会把整个请求粗暴地交给一个万能对象处理。相反,框架会根据当前操作类型,把请求包装成非常具体的 Request Interface,同时准备与之严格匹配的 Response Interface,再把二者交给 Data Provider。
这也是 SAP Gateway Foundation 的 OData V4 Runtime 和很多传统 REST Framework 在设计理念上的一个明显差异。
当前 SAP Help Portal 中的 SAP Gateway Foundation 文档仍然把 OData V4 服务开发划分为 Service Provisioning、Service Registration、Service Group Publishing、Tools 和 Additional Features 几块。官方同时明确建议,在 OData V4 场景里优先采用基于 ABAP Development Tools,也就是 ADT 的程序化开发方式,而不是继续把经典 Service Builder 当成主要开发入口。
如果只是从 HTTP 角度观察,很容易低估这套 Runtime Interface 体系的重要程度。真正开始写 DPC,特别是继承/IWBEP/CL_V4_ABS_DATA_PROVIDER