笔者之前连续发布了四篇一万字左右的长文:
万字长文介绍 ABAP AI SDK 的前世今生:SAP 官方生成式 AI 开发框架全景解析
万字长文讲透什么是 SAP PCE?
万字长文解密:SAP Fiori 首屏加载缓慢背后的真相
告别 SAP GUI 事务码时代:手把手教你配置 SAP Fiori Launchpad
有读者反馈看了之后“脑子嗡嗡的”。今天这篇文章篇幅就短得多了。
在 SAP 开发领域,如何高效地将 CDS 视图转化为 OData 服务一直是开发者关注的核心话题。
随着 SAP 技术栈的不断演进,从 AS ABAP 7.40 到 ABAP Platform 7.54,SAP 为我们提供了四种不同的实现路径,这些路径在时间上诞生的先后顺序,代表着技术的进步与开发效率的提升。
本文简单给大家梳理一下这四种方案,帮助大家在实际项目中做出最优选择。
方案一:映射数据源(AS ABAP 7.40+)
第一种方案从 AS ABAP 7.40 版本开始支持,这是最传统的实现方式。在这个方案中,开发者需要在 SAP Gateway 事务代码 SEGW 中手动将 CDS 视图及其关联关系映射到 OData 服务的实体集和导航属性上。
具体操作流程是:首先导入 DDIC 结构,然后创建关联关系,最后将这些元素映射到 CDS 视图上。
虽然这种方式需要较多的手动操作,但它为开发者提供了最大的灵活性和控制力,特别适合需要精细化定制的复杂业务场景。这种方式让开发者能够完全掌控数据模型与 OData 服务之间的映射关系。
方案二:引用数据源(AS ABAP 7.50+)
从 AS ABAP 7.50 版本开始,SAP 引入了更加便捷的开发方式。
在 SEGW 中,开发者可以直接引用 CDS 视图作为数据源,系统会自动识别并处理 CDS 视图中定义的关联关系。
这种方式大大简化了开发流程,开发人员只需要在 SEGW 中选择要引用的 CDS 视图,系统就会自动生成对应的 OData 服务结构,包括实体集和导航属性。
相比第一种方案,这种方式减少了大量重复性的手工映射工作,让开发者能够更专注于业务逻辑的实现,开发效率显著提升。
方案三:注解发布(AS ABAP 7.50+)
同样是从 AS ABAP 7.50 版本开始,SAP 提供了一种更加优雅的实现方式:通过注解直接发布 CDS 视图为 OData 服务。
开发者只需要在 ADT 中编写 CDS 视图时,添加一个简单的注解 @OData.publish: true,系统就会自动将该 CDS 视图发布为 OData 服务。
这种声明式的开发方式体现了现代化编程的理念,代码简洁优雅,维护成本低。
特别适合那些结构相对简单、不需要复杂定制的标准 OData 服务开发场景。
一行注解就能完成服务发布,这正是开发效率最大化的体现。
方案四:服务定义与绑定(ABAP Platform 7.54+)
进入 ABAP Platform 7.54 时代,SAP 推出了最新的开发范式——服务定义和服务绑定。这是目前 SAP 推荐的最佳实践方式。
在 ADT 中,开发者可以为 CDS 视图创建服务定义(Service Definition),明确定义要暴露的数据结构和操作。然后通过服务绑定(Service Binding)将服务定义与具体的协议(如 OData V2 或 V4)进行绑定。这种方式实现了数据模型、服务定义和协议绑定的完全解耦,极大地提升了架构的灵活性和可维护性。
这种方式不仅支持 OData 协议,还为未来支持其他协议预留了扩展空间,是面向未来的架构设计。它将业务逻辑、服务定义和技术实现完美分离,让代码结构更加清晰,也更易于团队协作和长期维护。
如何选择合适的方案?
四种方案各有特点,选择时需要综合考虑你的 SAP 系统版本、项目复杂度和团队技术栈。如果你的系统版本较新(7.54+),强烈推荐使用第四种方案,这是 SAP 官方推荐的最佳实践。
对于版本在 7.50 的系统,第二种或第三种方案都是不错的选择。而如果系统版本较旧,那么第一种传统方式仍然是可靠的解决方案。
随着 SAP 技术的持续演进,我们可以看到一个明显的趋势:开发方式越来越简洁,代码越来越声明式,架构越来越解耦。