sap-fiori-add-visual-filter · cline — скилл для Claude Code
Скилл добавляет в SAP Fiori Elements визуальные фильтры с диаграммами Bar или Line. Он пригодится при настройке панели фильтров или окна выбора значений для OData V4.
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a claude-codeЧто делает 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-code2Вручную: положить файлы
~/.claude/skills/sap-fiori-add-visual-filter/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/sap-fiori-add-visual-filter/
1Через Skills CLI (Vercel)
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a codex2Вручную: положить файлы
.agents/skills/sap-fiori-add-visual-filter/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a cursor2Вручную: положить файлы
.cursor/skills/sap-fiori-add-visual-filter/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install cline/skills sap-fiori-add-visual-filter2Вручную: положить файлы
.github/skills/sap-fiori-add-visual-filter/SKILL.md1Через Skills CLI (Vercel)
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a gemini-cli2Командой платформы
gemini skills install https://github.com/cline/skills --path skills/sap-fiori-add-visual-filterВручную: положить файлы
.devin/skills/sap-fiori-add-visual-filter/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add cline/skills --skill sap-fiori-add-visual-filter -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в 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 от других авторов.