在一个真实的 SAP S/4HANA 项目里,CDS View 很少只是为了在 ADT 中按下F8看几行数据。
我们创建I_SalesOrder、I_Product、Z_I_Inventory这样的 CDS Entity,真正的目的通常是让这些数据继续流向其他地方。它可能被一个 ABAP 类通过SELECT读取,也可能继续成为另一个 CDS View 的数据源,还可能被 RAP Business Object 通过 EML 操作,最终暴露成 OData API,交给 SAP Fiori、SAPUI5、SAP Integration Suite 或外部系统使用。
同一份 CDS 数据模型甚至还可能通过 SQL Service 暴露给 ODBC Client,让 SAP Datasphere、Microsoft Excel 或其他数据集成程序直接以 SQL 的方式访问。
所以,真正理解 CDS,不能只停留在define view entity怎么写。
更重要的问题是,CDS 数据模型创建完成之后,到底有哪些消费方式,这些消费方式分别运行在哪一层,它们之间是什么关系,以及在 ABAP Cloud 和 Clean Core 架构里,我们应该如何选择。
SAP 当前的 ABAP Data Models 文档把 CDS 数据模型的消费方式概括为两大方向,一类发生在 AS ABAP 内部,也就是 Local Consumption,另一类发生在 AS ABAP 之外,也就是 Service Consumption。内部消费覆盖 ABA