最近在做 SAP Fiori elements 页面时,一个很常见的画面会反复出现。后端的 CDS 投影视图已经能够通过 OData 服务返回销售订单,字段也一个不少,可应用预览打开以后,页面却没有按照业务习惯组织起来。订单号没有处在醒目的位置,公司名称和金额的顺序不对,筛选栏缺少关键条件,表格标题也只是一个技术意味很重的实体名称。此时继续在前端模板里堆控件,当然也能把页面拼出来,可一旦字段、服务版本或业务角色发生变化,前后端之间就会重新陷入一轮手工同步。SAP Fiori elements 采用的另一条路线,是把页面结构中稳定、可复用的部分放进元数据。CDS 不只描述数据从哪里来,也通过 UI 注解告诉消费端,哪些字段应该成为列,哪些字段进入筛选栏,哪些文本用作标题,同一组数据是否还要提供一套值帮助专用布局。SAP 官方把这类工作归入面向元数据驱动 UI 的 CDS 注解设计,并建议尽量把 UI 注解放在 Metadata Extension 中,以便让数据定义保持清晰,同时利用元数据分层满足客户、合作伙伴与行业扩展等不同定制需求。这里的关键并不是少写几行 XML,也不是把前端代码搬到 ABAP 里。更准确地说,CDS 注解在定义一份界面契约。后端声明业务语义和展示意图,OData 元数据承载这些信息,SAP Fiori elements 再依据模板规则生成筛选区、表格、对象页区块以及导航入口。页面仍然由 SAPUI5 控件渲染,布局能力也仍然受到模板、OData 版本和具体控件类型的约束,只是大量重复的页面装配工作不再散落在控制器和视图文件中。SAP 官方文档也明确说明,UI.LineItem用于配置表格,表格动作、列以及相关数据字段记录都围绕这项词汇术语展开。