把 UI 注解从 CDS 数据模型中拆出去,深入理解 ABAP Metadata Extensions 在 ADT 里打开一个面向 SAP Fiori elements 的 RAP 投影视图,经常会看到这样的画面,真正负责取数和定义字段的 CDS 代码只有几十行,前后却堆满了@UI.lineItem、@UI.identification、@UI.selectionField、@UI.facet和@EndUserText.label。业务字段稍微多一些,整份数据定义很快就会被界面注解淹没。数据模型、业务语义和界面布局被写在同一个文件中,代码虽然能够正常运行,维护体验却越来越差。负责数据模型的开发人员只想确认关联、金额、币种和字段类型,却不得不穿过大量页面布局配置。负责 Fiori 页面的人只想调整列表列顺序,又要修改承载核心数据模型的 CDS 对象。ABAP CDS 提供的 Metadata Extensions,通常简称为 MDE,正是为了解决这类问题。它允许我们在独立的开发对象中,为已有 CDS 实体增加或覆盖注解,不需要修改原始 CDS 实体本身。SAP 官方文档将它定义为一种提供 CDS annotations 的开发对象,同时支持传输、语法检查、激活等标准 ABAP Workbench 生命周期能力。该能力从 SAP NetWeaver AS for ABAP 7.51 innovation package SP00 开始提供,在当前 ABAP Platform 和 SAP BTP ABAP environment 中仍然是 CDS 元数据建模的重要组成部分。Metadata Extensions 处理的