
在一个已经存在数年的 SAP S/4HANA 项目里打开某个 CDS View,源码可能只有几十行,但真正作用在这个 CDS Entity 上的 Annotation 却远远不止源码里肉眼看到的那些内容。一个字段明明没有写@EndUserText.label,Fiori 页面上却已经显示出了字段名称。另一个字段在底层 CDS View 里定义了 Annotation,到了上层 Consumption View 之后,看到的值却已经发生变化。还有一种更容易让开发人员困惑的情况,Data Definition 中明明写着一个 Annotation Value,运行时看到的却不是这个值。检查语法没有错误,重新激活 CDS 也没有效果,继续全文搜索代码,可能又找到几个 Metadata Extension,其中有的属于#CORE,有的属于#PARTNER,还有一个属于#CUSTOMER。此时真正需要回答的问题已经不是源码里写了什么,而是 ABAP CDS 元数据经过继承、传播和合并之后,最终究竟采用了什么。SAP 在 ABAP Development Tools for Eclipse,也就是我们通常说的 ADT 中,为这个问题准备了两个非常重要的分析工具,Active Annotations和Annotation Propagation。这两个工具表面上都在查看 Annotation,解决的问题却并不相同。Active Annotations更像最终结果检查