从 abap.int4 到 define type enum,彻底理解 ABAP CDS 的 Data Types 类型体系
在 ADT 里写 ABAP CDS 时,一个很容易被低估的问题就是 Data Type。很多代码看起来只是给字段写了一个abap.char(10),或者给参数指定了一个abap.int4。项目做得久一些以后,却会逐渐遇到另一批类型,像 DDIC Data Element、CDS Simple Type、CDS Enumerated Type,以及 CDS Scalar Function 里的 Generic Data Type。再往 RAP、OData、Fiori Elements 方向走,类型背后携带的语义和 Metadata 又会直接影响服务模型。所以,ABAP CDS 的类型绝不只是决定一个字段占多少字节。在 ABAP 整体类型体系里,数据类型决定数据对象的技术属性,也决定 ABAP 语句如何理解和处理数据。SAP 当前的 ABAP 文档同样把 CDS Type 视为全局类型体系的一部分,除了经典 ABAP Dictionary 类型之外,CDS 已经拥有自己原生的全局类型对象。放到 ABAP CDS 里看,可以把最核心的类型分成三个家族,Built-In Data Type、User-Defined Data Type 和 Generic Data Type。这三个名字看起来差异不大,但设计目的完全不同。abap.int4这一类 Built-In Data Type 回答的是一个非常基础的问题,数据在技术层面究竟是什么。CDS Simple Type 和 CDS Enumerated Type 回答的是另一个问题,这个技术类型在我们的业务模型里代表什么。