Sap Fiori Add Visual Filter

作者 cline26378461e978无许可证34 个星标收录于 2026年10月8日更新于 2026年10月8日仓库2个月前更新

Add visual filters (chart-based) to SAP Fiori Elements filter bar/value help using CAP or ABAP RAP.

AI 生成的概览

使用 CAP 或 ABAP RAP 为 SAP Fiori Elements 筛选栏和值帮助添加基于图表的可视化筛选器。

功能
指导代理在 OData V4 的 SAP Fiori Elements 筛选栏或值帮助对话框中添加基于图表(柱状图或折线图)的可视化筛选器。内容涵盖 CAP 的 CDS 注解与 ABAP RAP 的注解 XML,包括聚合配置、图表、呈现变式、值列表和选择字段注解,以及必需的 manifest 配置。还列出了测试命令和常见错误。
适用场景
当 Fiori Elements 应用需要按数值度量聚合的维度字段添加基于图表的筛选器时使用。适用于使用 OData V4 的 CAP 或 ABAP RAP 项目。使用前需先确定实体、维度字段、度量字段、聚合方式和图表类型。
运行要求
该技能不附带脚本,仅为说明文档。它假定存在基于 OData V4 的 SAP Fiori Elements 项目,使用 CAP(CDS 注解、cds/npm watch)或 ABAP RAP(后端 CDS 与 metadata.xml),并需要 npm 来执行所列运行命令。文中提到 Fiori MCP 服务器为可选,用于刷新 RAP 元数据。

SAP Fiori Visual Filter

Purpose

Add chart-based filters (Bar/Line) to filter bar or value help dialog (OData V4).


MANDATORY: Gather Required Inputs First

STOP and ASK the user for ALL of these inputs if ANY are missing from the prompt:

  1. Entity - Which entity to add the visual filter to
  2. Dimension field - The field to filter by (e.g., Category, Status, Destination)
  3. Measure field - The numeric field to aggregate (e.g., Amount, TotalPrice, ReservationPrice)
  4. Aggregation method - How to aggregate: sum, avg, min, or max
  5. Chart type - Bar or Line (recommend Bar as default)

DO NOT proceed with implementation until all inputs are confirmed.


CAP Implementation

Enable Aggregation (MANDATORY)

cds
@Aggregation.ApplySupported: {  Transformations: ['aggregate','groupby'],  AggregatableProperties: [{ Property: Amount }],  GroupableProperties: [Category]}

Aggregated Property (Measure)

cds
Analytics.AggregatedProperty #Amount_sum : {  $Type: 'Analytics.AggregatedPropertyType',  Name: 'Amount_sum',  AggregatableProperty: Amount,  AggregationMethod: 'sum'}

Chart Annotation

cds
UI.Chart #visualFilter : {  ChartType: #Bar,  Dimensions: [Category],  DynamicMeasures: ['@Analytics.AggregatedProperty#Amount_sum']}

✅ Uses DynamicMeasures

PresentationVariant

cds
UI.PresentationVariant #visualFilter: {  Visualizations: ['@UI.Chart#visualFilter']}

ValueList (on Dimension Field)

cds
Category @Common.ValueList #visualFilter: {  $Type: 'Common.ValueListType',  CollectionPath: 'EntityName',  Parameters: [    { $Type: 'Common.ValueListParameterInOut', LocalDataProperty: Category, ValueListProperty: 'Category' }  ],  PresentationVariantQualifier: 'visualFilter'}

SelectionFields

cds
UI.SelectionFields: [Category]

ABAP RAP Implementation

  • Aggregation.ApplySupported and Aggregation.CustomAggregate annotations must be available in metadata.xml (RAP). If not, below backend configuration is required.

Backend CDS (MANDATORY)

abap
@OData.applySupportedForAggregation: #FULLdefine root view entity ZC_ENTITY  provider contract analytical_query  as projection on ZI_ENTITY{  key EntityID,
  @Aggregation.default: #SUM  Amount,
  Category}

Chart Annotation

xml
<Annotation Term="UI.Chart" Qualifier="visualFilter">  <Record Type="UI.ChartDefinitionType">    <PropertyValue Property="ChartType" EnumMember="UI.ChartType/Bar"/>    <PropertyValue Property="Dimensions">      <Collection>        <PropertyPath>Category</PropertyPath>      </Collection>    </PropertyValue>    <PropertyValue Property="Measures">      <Collection>        <PropertyPath>Amount</PropertyPath>      </Collection>    </PropertyValue>  </Record></Annotation>

✅ Uses Measures (not DynamicMeasures)
❌ Metadata is read-only

PresentationVariant Annotation

xml
<Annotation Term="UI.PresentationVariant" Qualifier="visualFilter">  <Record Type="UI.PresentationVariantType">    <PropertyValue Property="Visualizations">      <Collection>        <AnnotationPath>@UI.Chart#visualFilter</AnnotationPath>      </Collection>    </PropertyValue>  </Record></Annotation>

ValueList Annotation

xml
<Annotation Term="Common.ValueList" Qualifier="visualFilter">  <Record Type="Common.ValueListType">    <PropertyValue Property="CollectionPath" String="EntityName"/>    <PropertyValue Property="PresentationVariantQualifier" String="visualFilter"/>    <PropertyValue Property="Parameters">      <Collection>        <Record Type="Common.ValueListParameterInOut">          <PropertyValue Property="LocalDataProperty" PropertyPath="Category"/>          <PropertyValue Property="ValueListProperty" String="Category"/>        </Record>      </Collection>    </PropertyValue>  </Record></Annotation>

SelectionFields Annotation

xml
<Annotation Term="UI.SelectionFields">  <Collection>    <PropertyPath>Category</PropertyPath>  </Collection></Annotation>

Manifest Configuration (REQUIRED)

json
"@com.sap.vocabularies.UI.v1.SelectionFields": {  "layout": "CompactVisual",  "initialLayout": "Visual",  "filterFields": {    "Category": {      "visualFilter": {        "valueList": "com.sap.vocabularies.Common.v1.ValueList#visualFilter"      }    }  }}

✅ Connects filter field to visual filter chart
✅ Sets initial layout to visual mode


Testing

CAP Projects

bash
npm run watch-<app-name>  # e.g., npm run watch-manage-travel# or use generic watch script if availablecds watch

RAP Projects

bash
npm run start-mock # Needs metadata refresh
npm start          # No refresh needed - fetches metadata from live backend at runtime
  • Consult fiori mcp server if available on how to refresh metadata for sap/cloud systems in case of RAP

Key Differences

  • CAP: DynamicMeasures + AggregatedProperty defined in CDS
  • RAP: Measures + @Aggregation.default in backend CDS only
  • CAP: Aggregation and chart defined in same place
  • RAP: Metadata is read-only, must be configured in backend CDS.
  • Qualifier: Must use same qualifier (#visualFilter) across Chart, ValueList, and manifest

Common Mistakes

  • Missing backend aggregation setup
  • Qualifier mismatch between Chart, ValueList, PresentationVariant, and manifest
  • Wrong path in manifest (use full vocabulary path)
  • RAP projects using DynamicMeasures instead of Measures
  • Forgetting PresentationVariantQualifier in ValueList
  • Missing SelectionFields annotation

Best Practices

  • Use Bar chart (most common and recommended)
  • Limit to 3–5 visual filters per filter bar
  • Always configure backend aggregation first
  • Use consistent qualifiers throughout
  • Test with real data to verify aggregation works correctly

来源与署名

来源:cline/skills位于skills/sap-fiori-add-visual-filter提交2637846

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架