
在一个实际的 SAP S/4HANA 开发项目里,我们经常会遇到这样的代码结构。底层已经存在一个经过精心设计的 CDS View Entity,它把业务字段、关联关系、语义信息、权限控制以及部分计算逻辑都整理好了。此时业务层还需要读取这些数据,RAP Behavior Implementation 需要操作业务对象,另一个 CDS View 需要基于它继续建模,某段高性能计算又准备下沉到 SAP HANA 的 SQLScript 中。这几个需求表面上属于不同技术领域,一个属于 ABAP,一个属于 RAP,一个属于 CDS,一个属于 AMDP,但它们其实都指向同一个问题,已经定义好的 CDS 数据模型,在当前 ABAP 系统内部究竟应该怎样被复用。SAP 把这一类能力归在Local Consumption之下。这里的Local很关键。它讨论的不是通过 OData、Web API、ODBC 或其他远程协议把 CDS 暴露给系统外部,而是在同一个 AS ABAP 内部,由 ABAP 程序、ABAP SQL、ABAP EML、其他 CDS 数据模型或者 AMDP 来直接使用 CDS 对象。SAP 当前的 ABAP Data Models 文档同样把 CDS 消费划分为本地消费和服务消费两大方向,前者工作在 AS ABAP 内部,后者则面向 OData、分析客户端以及外部 SQL 等系统外部场景。理解这一点之后,很多 SAP 开发中看起来互不相关的技术就连起来了。CDS 并不仅仅是一种用来写数据库查询的语法。它更像整个 ABAP 应用数据模型的公共语言。ABAP 可以拿 CDS 实体作为类型,ABAP SQL 可以查询 CDS 实