16. Локальные xml аннотации
16. Локальные XML аннотации для Fiori Elements и SmartFields
В этом разделе собраны основные XML аннотации, которые чаще всего используются при разработке Fiori Elements и SmartFields-приложений. Аннотации позволяют управлять отображением фильтров, колонок таблиц, фасетов, экшн-кнопок, value helps и других элементов UI без необходимости писать много кода на JavaScript.
Основные пространства имён аннотаций
- com.sap.vocabularies.UI.v1 — UI-аннотации (LineItem, FieldGroup, Facet, Action и др.)
- com.sap.vocabularies.Common.v1 — Общие аннотации (ValueList, Text, SemanticKey и др.)
- com.sap.vocabularies.SelectionPresentationVariant.v1 — Варианты представления и фильтрации
1. Фильтры (SelectionFields)
Определяют поля, которые будут отображаться в фильтре (SmartFilterBar).
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.SelectionFields">
<Collection>
<PropertyPath>Field1</PropertyPath>
<PropertyPath>Field2</PropertyPath>
</Collection>
</Annotation>
</Annotations>
2. Поля таблицы (LineItem)
Определяют колонки для SmartTable/ListReport.
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.LineItem">
<Collection>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="Field1"/>
</Record>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="Field2"/>
</Record>
</Collection>
</Annotation>
</Annotations>
3. Фасеты (Facets)
Группируют поля на Object Page (например, секции, вкладки, группы).
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.Facets">
<Collection>
<Record Type="com.sap.vocabularies.UI.v1.CollectionFacet">
<PropertyValue Property="Label" String="Общие данные"/>
<PropertyValue Property="Facets">
<Collection>
<Record Type="com.sap.vocabularies.UI.v1.ReferenceFacet">
<PropertyValue Property="Target" AnnotationPath="@com.sap.vocabularies.UI.v1.FieldGroup#General"/>
<PropertyValue Property="Label" String="Основная информация"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Collection>
</Annotation>
</Annotations>
<!-- Пример FieldGroup -->
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.FieldGroup" Qualifier="General">
<Record>
<PropertyValue Property="Label" String="Основная информация"/>
<PropertyValue Property="Data">
<Collection>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="Field1"/>
</Record>
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="Field2"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
</Annotations>
4. Экшн-кнопки (Actions)
Добавляют кнопки для действий (например, Approve, Reject) в таблице или на Object Page.
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.LineItem">
<Collection>
<!-- ... другие поля ... -->
<Record Type="com.sap.vocabularies.UI.v1.DataFieldForAction">
<PropertyValue Property="Label" String="Approve"/>
<PropertyValue Property="Action" String="MyService.EntityType_Approve"/>
</Record>
</Collection>
</Annotation>
</Annotations>
5. ValueHelp (ValueList)
Определяет справочник значений для поля (value help/F4).
<Annotations Target="MyService.EntityType/Field1">
<Annotation Term="com.sap.vocabularies.Common.v1.ValueList">
<Record Type="com.sap.vocabularies.Common.v1.ValueListType">
<PropertyValue Property="CollectionPath" String="ValueHelpEntitySet"/>
<PropertyValue Property="Parameters">
<Collection>
<Record Type="com.sap.vocabularies.Common.v1.ValueListParameterOut">
<PropertyValue Property="LocalDataProperty" PropertyPath="Field1"/>
<PropertyValue Property="ValueListProperty" String="ID"/>
</Record>
<Record Type="com.sap.vocabularies.Common.v1.ValueListParameterDisplayOnly">
<PropertyValue Property="ValueListProperty" String="Description"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
</Annotations>
6. Отображение текста вместо ID (Text)
Позволяет показывать текст вместо технического ключа.
<Annotations Target="MyService.EntityType/Field1">
<Annotation Term="com.sap.vocabularies.Common.v1.Text" Path="DescriptionField"/>
</Annotations>
7. Критичность (Criticality)
Используется для отображения статусов (цвета, иконки) в таблицах и объектах.
<Annotations Target="MyService.EntityType/StatusField">
<Annotation Term="com.sap.vocabularies.UI.v1.Criticality" EnumMember="com.sap.vocabularies.UI.v1.CriticalityType/Negative"/>
</Annotations>
8. Заголовок и описание объекта (HeaderInfo)
Определяет, какие поля используются как заголовок и описание на Object Page.
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.UI.v1.HeaderInfo">
<Record>
<PropertyValue Property="TypeName" String="Документ"/>
<PropertyValue Property="TypeNamePlural" String="Документы"/>
<PropertyValue Property="Title">
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="ID"/>
</Record>
</PropertyValue>
<PropertyValue Property="Description">
<Record Type="com.sap.vocabularies.UI.v1.DataField">
<PropertyValue Property="Value" Path="Description"/>
</Record>
</PropertyValue>
</Record>
</Annotation>
</Annotations>
9. SemanticKey
Определяет ключевые поля для навигации и уникальности объекта.
<Annotations Target="MyService.EntityType">
<Annotation Term="com.sap.vocabularies.Common.v1.SemanticKey">
<Collection>
<PropertyPath>ID</PropertyPath>
</Collection>
</Annotation>
</Annotations>
10. Дополнительные полезные аннотации
- UI.Hidden — скрыть поле на UI
- UI.Importance — важность поля (High, Medium, Low)
- UI.DataPoint — визуализация числовых значений (например, прогресс-бар)
- UI.Chart — определение графиков
- UI.PresentationVariant — сортировка, группировка, топ-N
- UI.SelectionPresentationVariant — комбинация фильтров и представления
Полезные ссылки
Примечание:
Аннотации можно добавлять как в backend (CDS, MPC_EXT), так и в локальных XML-файлах (например, annotation.xml), которые подключаются через manifest.json.