从 SE11 到 CDS,在 Eclipse ADT 里写出第一张销售订单 CDS View
做 ABAP 开发很多年以后,SE11 和 SE16 很容易变成一种肌肉记忆。查表结构进 SE11,看业务数据进 SE16 或 SE16N,写报表时从 VBAK、VBAP、KNA1、MARA 这些表里取数据,再回到 ABAP 里循环、拼接、判断、汇总。这个开发习惯在 ECC 时代很常见,也能解决大量实际问题。
到了 SAP S/4HANA,情况开始变了。SAP HANA 不只是一个更快的数据库,它把很多原来放在应用服务器上的数据处理能力,推到了数据库层附近。ABAP 开发也不再只是把数据从数据库搬到 Application Server,再靠 LOOP、READ TABLE、COLLECT 之类的语句处理。更合适的方式,是把过滤、关联、聚合、字段语义、部分业务表达尽量下沉到数据库层,让数据在更靠近数据的位置被加工。SAP 的 ABAP CDS 文档也把 ABAP CDS 定位为一种在 ABAP Dictionary 里定义数据模型的方式,可以基于已有数据库表、数据库视图或其他 CDS view 来定义结构化视图。
这就是从 SE11 走向 CDS 的背景。SE11 没有消失,SE16 也没有消失,但它们不再是现代 S/4HANA 数据建模的中心。现在做 Fiori Elements、RAP、分析型报表、轻量 OData 服务、Clean Core 扩展,CDS View 往往是入口。
为什么不是继续在 ABAP 里 JOIN 和 LOOP
在传统 ABAP 报表里,常见写法是先从 VBAK 取销售订单抬头,再根据 VBELN 到 VBAP 取行项目,最后在 ABAP 内表里拼装结果。如果数据量只有几百条,这种写法问题不明显。可是在真实的
