К основному содержанию
скилл CX Codex

sap-fiori-add-visual-filter · cline — скилл для Claude Code

Скилл добавляет в SAP Fiori Elements визуальные фильтры с диаграммами Bar или Line. Он пригодится при настройке панели фильтров или окна выбора значений для OData V4.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a claude-code
Открыть на GitHub

Что делает sap-fiori-add-visual-filter

Скилл подготавливает аннотации и конфигурацию для визуального фильтра на основе диаграммы. В CAP он настраивает агрегацию и использует DynamicMeasures; в ABAP RAP — Measures и агрегацию в backend CDS. Для обоих вариантов нужны Chart, PresentationVariant, ValueList и связь поля с фильтром в manifest.

До реализации агент должен получить пять параметров: сущность, поле измерения, числовое поле для агрегации, метод агрегации (sum, avg, min или max) и тип диаграммы (Bar или Line). Без всех пяти он должен сначала задать вопросы. В RAP метаданные доступны только для чтения, поэтому настройка backend CDS обязательна; у CAP и RAP также различается способ задания мер.

Какие задачи решает

  • добавить диаграмму-фильтр в панель фильтров SAP Fiori Elements
  • настроить визуальный фильтр в окне выбора значений
  • описать агрегацию поля в CAP CDS
  • связать фильтр с диаграммой через manifest

Примеры запросов агенту

  • Добавь визуальный фильтр для Category в сущность Products: агрегируй Amount суммой и используй диаграмму Bar.
  • Настрой для сущности Orders фильтр по Status: агрегируй TotalPrice методом avg, диаграмма Line.
  • Для ABAP RAP добавь визуальный фильтр по Category с мерой Amount и настрой его в manifest.

Как установить sap-fiori-add-visual-filter

1Через Skills CLI (Vercel)

npx skills add cline/skills --skill sap-fiori-add-visual-filter -a claude-code

2Вручную: положить файлы

~/.claude/skills/sap-fiori-add-visual-filter/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/sap-fiori-add-visual-filter/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о sap-fiori-add-visual-filter

Как установить sap-fiori-add-visual-filter в Claude Code?

Выполни npx skills add cline/skills --skill sap-fiori-add-visual-filter -a claude-code. Файл скилла находится в ~/.claude/skills/sap-fiori-add-visual-filter/SKILL.md.

Что делает sap-fiori-add-visual-filter?

Скилл помогает настроить визуальные фильтры с диаграммами Bar или Line для SAP Fiori Elements. Он учитывает различия между CAP и ABAP RAP.

Что нужно сообщить перед настройкой фильтра?

Укажи сущность, поле измерения, числовое поле для агрегации, метод агрегации и тип диаграммы. В RAP агрегацию нужно настроить в backend CDS, поскольку метаданные доступны только для чтения.

Исходный текст

SKILL.md · Apache-2.0
---
name: sap-fiori-add-visual-filter
description: Add visual filters (chart-based) to SAP Fiori Elements filter bar/value help using CAP or ABAP RAP.
argument-hint: field name (e.g., Category, Status)
metadata:
  author: sap-fiori-tools
  version: "0.0.4"
---

# 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: #FULL
define 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 available
cds 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

© sap-fiori-tools · Apache-2.0 · cline/skills

Похожие скиллы

Все скиллы по теме «Фронтенд и UI» →

Сначала — sap-fiori-add-visual-filter от других авторов.

sap-fiori-add-visual-filter sap-fiori-tools Добавляет визуальные фильтры с графиками в панели фильтрации Fiori Elements на базе CAP или ABAP RAP. Помогает прописать агрегацию и аннотации CDS без ручных ошибок в синтаксисе. CX Codex +1 603установок sap-fiori-eslint-plugin sap-fiori-tools Скилл настраивает, переносит и запускает ESLint с плагином @sap-ux/eslint-plugin-fiori-tools в проектах SAP Fiori. Пригодится, когда линтера в проекте нет или он сломан. CX Codex +1 584установок sap-fiori-app-development sap-fiori-tools Скилл задаёт агенту правила сборки SAP Fiori Elements: List Report, Object Page, Worklist, подключение к CAP или внешнему OData. CX Codex +1 595установок sap-btp-developer-guide secondsky Помогает проектировать и развёртывать приложения на SAP BTP. Подходит для работы с моделями CAP или ABAP Cloud, средами Cloud Foundry и Kyma. CX Codex +1 1 100установок sap-cap-capire secondsky Скилл помогает создавать приложения на SAP CAP: моделировать CDS, писать сервисы и разбираться с базами данных. Пригодится при разработке и развёртывании CAP-проектов. CX Codex +1 1 100установок add-app-to-server modelcontextprotocol Скилл добавляет интерактивный HTML-интерфейс к инструментам уже работающего MCP-сервера. Пригодится, когда инструмент возвращает таблицу, график или PDF и текстом это читать неудобно. CX Codex +1 1 200установок add-read-aloud cursor Добавляет в существующее приложение озвучку ответов и других текстов через Grok Text to Speech. Сгодится для кнопки чтения вслух, автозапуска речи или озвучивания страницы. CX Codex +1 320установок

Из того же набора29

cosmosdb-best-practices Скилл по оптимизации Azure Cosmos DB с набором из 73 правил по партиционированию, индексам, запросам и SDK. Помогает ревьюить и рефакторить код работы с базой. CX Codex +1 859установок windsor-ai-business-data Помогает агенту запрашивать бизнес-данные из маркетинговых сервисов, CRM и e-commerce через Windsor.ai. Пригодится при сборке дашбордов и отчётов. CX Codex +1 845установок teamcity-cli Скилл учит агента гонять сборки TeamCity через CLI: смотреть логи упавших билдов, разбирать цепочки зависимостей, править пайплайны. CX Codex +1 741установок dsql Скилл для работы с Amazon Aurora DSQL: схемы, запросы, миграции, планы запросов и массовая загрузка данных прямо из агента. CX Codex +1 735установок dr-bedrock Разбирает ошибки авторизации и региона AWS Bedrock в Cline CLI: находит причину и подсказывает, что поправить. CX Codex +1 692установок spanner-data Скилл для изучения структуры Google Cloud Spanner и запуска SQL-запросов. Помогает просматривать таблицы, графы и выполнять выборки данных. CX Codex +1 666установок gcp-to-aws Проводит миграцию рабочих нагрузок с Google Cloud на AWS в шесть фаз: от инвентаризации ресурсов до генерации артефактов и оценки затрат. CX Codex +1 647установок cline-session-history Ищет и просматривает историю сессий Cline на локальной машине. Нужен, когда надо найти старый диалог, прочитать транскрипт или экспортировать сессии. CX Codex +1 323установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой