用 CDS 注解为 SAP Fiori Elements 构建面向字段的精准筛选栏
销售订单列表刚打开时,页面上可能有几千条甚至几十万条业务记录。业务人员真正关心的内容,却往往只是某一个订单编号,或者某一家客户公司的订单。单纯依赖表格翻页显然不现实。即使页面已经提供标准搜索框,输入一个关键词之后,搜索范围仍然可能覆盖多个字段,返回结果也未必足够精确。此时更合适的设计,是在列表上方提供一个 Filter Bar,让订单编号、客户公司、订单日期、订单状态等字段拥有各自独立的筛选入口。在 SAP Fiori Elements 应用里,这类筛选栏通常不需要手工编写大量 SAPUI5 控件。我们可以直接在 ABAP CDS 消费视图中使用@UI.selectionField注解,把某个字段声明为筛选字段。Fiori Elements 读取 OData 元数据后,会按照注解生成对应的筛选控件,并把用户输入转换成后端能够理解的查询条件。这套机制看起来只是给字段加上两行注解,可是它牵涉了三种容易混淆的能力,面向具体字段的筛选、标准搜索框中的全文搜索,以及筛选字段上的 Value Help。理解这三者之间的边界,才能避免页面看起来有搜索功能,实际查询行为却与业务预期相差很远。从销售订单列表里的真实需求说起我们正在开发一张销售订单明细列表。列表中的每一行代表一个销售订单项目,页面可能展示销售订单编号、项目编号、客户名称、产品、数量、净金额和订单状态。业务人员通常会采用两种寻找数据