Annotations d'interface
Les annotations d'interface sont des termes de métadonnées du vocabulaire UI OData de SAP, comme UI.LineItem, UI.SelectionFields et UI.HeaderInfo, qui décrivent la présentation des données : quelles colonnes affiche un tableau, quels champs figurent dans la barre de filtres et ce qu'affiche l'en-tête d'une object page. SAP Fiori elements les lit à l'exécution et construit la page en conséquence.
L'essentiel
- Type
- Annotations de vocabulaire OData (vocabulaire UI de SAP)
- Couche
- Services et API, rédigées dans le modèle de données, consommées par l'interface
- Lieu de définition
- ABAP CDS (de préférence des metadata extensions), fichiers CDS CAP ou fichiers d'annotations XML locaux dans l'application
- Consommées par
- SAP Fiori elements for OData V2 et V4
- Outillage
- ABAP Development Tools ; SAP Fiori tools dans VS Code ou SAP Business Application Studio
- Qui l'utilise
- Développeurs ABAP et CAP, développeurs SAP Fiori
- S'applique à
- SAP S/4HANA (toutes les options de déploiement), SAP BTP
Couche : Services et APIOù se situe-t-il ? ▾
Couche : Services et API
Concerne aussi : Logique métier et modèle de données, Applications d'interface
Ouvrir la carte d'architecture →Comment fonctionnent les annotations d'interface ?
Les annotations d'interface passent du modèle de données à l'écran en quatre étapes :
- Un développeur annote les entités et les champs dans le modèle back-end : ABAP CDS dans SAP S/4HANA ou dans l'environnement ABAP de SAP BTP, ou fichiers CDS dans un projet CAP.
- Lorsque le modèle est exposé comme service OData, le back-end traduit ces annotations en termes de vocabulaire OData au format XML, livrés avec les métadonnées du service ou sous forme de document d'annotations distinct.
- L'application SAP Fiori elements charge les métadonnées du service ainsi que les éventuelles sources d'annotations supplémentaires déclarées dans son app descriptor (manifest.json).
- Les templates de floorplan, comme le list report et l'object page, lisent les termes et construisent la page : les colonnes du tableau à partir d'UI.LineItem, les champs de filtre à partir d'UI.SelectionFields, le titre de l'object page à partir d'UI.HeaderInfo.
SAP décrit le vocabulaire UI comme portant sur l'usage des données dans une interface utilisateur, et non sur des contrôles d'interface précis ; c'est pourquoi une même annotation peut piloter un tableau sur poste de travail et une liste sur téléphone. Les annotations d'interface sont donc un contrat entre le service et le template, et non du code que l'application exécute.
Quelles annotations d'interface comptent le plus ?
| Terme OData | Ce qu'il contrôle | Notation ABAP CDS |
|---|---|---|
| UI.LineItem | Colonnes d'un tableau ou d'une liste | @UI.lineItem sur chaque élément, avec une position |
| UI.SelectionFields | Champs affichés par défaut dans la barre de filtres | @UI.selectionField sur chaque élément |
| UI.HeaderInfo | Nom du type d'objet et titre dans l'en-tête de l'object page | @UI.headerInfo sur l'entité |
| UI.Facets | Sections de l'object page | @UI.facet |
| UI.Identification, UI.FieldGroup | Groupes de champs affichés dans les sections de l'object page | @UI.identification, @UI.fieldGroup |
| Common.Label, Common.Text | Libellés de champs et textes descriptifs | @EndUserText.label, @ObjectModel.text.element |
Deux détails font gagner du temps. ABAP CDS utilise une notation au niveau de l'élément que l'exposition du service transforme en terme OData au niveau de l'entité. Et un même terme peut exister plusieurs fois avec des qualifiers différents, par exemple deux line items pour deux tableaux. Maîtriser ces six familles couvre l'essentiel de ce dont un list report et une object page ont besoin en matière d'annotations d'interface.
Où les annotations d'interface sont-elles définies ?
- ABAP CDS (RAP et son modèle prédécesseur) : les annotations d'interface peuvent figurer dans la data definition ou dans une metadata extension. SAP recommande les metadata extensions, qui gardent le modèle de données lisible et permettent aux métadonnées d'interface d'évoluer séparément.
- CAP : les annotations s'écrivent en CDS avec
annotate ... with @(...), en utilisant directement les noms des termes OData ; CAP recommande des fichiers .cds distincts dans les dossiers de l'application, séparés de la définition du service. - Fichier d'annotations local : un fichier XML dans l'application SAP Fiori, déclaré comme source d'annotations supplémentaire dans manifest.json.
- Services SAP Gateway plus anciens (OData V2) : annotations modélisées dans le référentiel de vocabulaires du Service Builder (SEGW), ou fournies par une classe annotation provider enregistrée avec /IWBEP/REG_VOCAN.
Lorsque le même terme existe dans un fichier local et dans le back-end, la définition locale remplace celle du back-end, terme par terme. SAP recommande de conserver les annotations d'interface dans le back-end, à côté du modèle de données et avec son cycle de vie, et d'utiliser des fichiers locaux lorsqu'il n'y a pas d'accès au back-end ou qu'une seule application a besoin d'une surcharge.
Pourquoi mes annotations d'interface n'apparaissent-elles pas dans l'application ?
Partez du service vers l'extérieur avant de toucher à l'interface :
- Vérifiez les métadonnées du service. Ouvrez le document de métadonnées ou d'annotations du service et recherchez le terme. S'il n'y figure pas, le problème se situe dans le back-end.
- Vérifiez le type de service binding (RAP). Un binding de catégorie Web API ne transporte aucune métadonnée propre à l'interface. Une application Fiori elements a besoin d'un binding UI.
- Vérifiez la metadata extension. L'entité doit autoriser les extensions avec
@Metadata.allowExtensions: true, et l'extension doit être active. - Recherchez une surcharge locale. Un UI.LineItem dans un fichier d'annotations local remplace l'intégralité de l'UI.LineItem du back-end ; une colonne ajoutée en CDS n'apparaît alors jamais.
- Vérifiez les qualifiers. Une annotation qualifiée n'est utilisée que là où son qualifier est référencé.
- Videz les caches. Les caches de métadonnées de Gateway et le navigateur peuvent servir d'anciennes métadonnées. Exécutez /IWFND/CACHE_CLEANUP sur le hub SAP Gateway et /IWBEP/CACHE_CLEANUP dans le back-end (les deux dans un système embedded), puis rechargez l'application.
La plupart des annotations d'interface manquantes relèvent de problèmes d'exposition ou de priorité, pas d'erreurs de syntaxe.
Où s'arrêtent les annotations d'interface ?
Les annotations d'interface expliquent pourquoi les applications SAP Fiori elements se construisent rapidement et présentent un aspect cohérent : la mise en page suit les SAP Fiori design guidelines, l'accessibilité et le responsive sont fournis par le template, et l'application reste stable lors des mises à niveau SAPUI5 parce qu'elle contient peu de code.
Cette même conception en fixe les limites :
- Uniquement ce que le template prend en charge. Les annotations sélectionnent et agencent ; elles ne peuvent pas inventer une mise en page que le floorplan ne propose pas. Tout ce qui va au-delà nécessite des points d'extension ou du SAPUI5 freestyle.
- La présentation, pas le comportement. Les validations, les actions et la logique d'autorisation se trouvent dans RAP ou CAP ; une annotation peut afficher un bouton, pas l'implémenter.
- Une dispersion entre couches. Les fichiers back-end, les metadata extensions et les fichiers locaux se combinent à l'exécution, ce qui complique la revue du résultat final.
- Un risque de dérive. Les annotations locales cessent de fonctionner sans signal lorsqu'une propriété est renommée dans le back-end.
Les annotations d'interface fonctionnent le mieux lorsque l'équipe les traite comme une partie du modèle de données et les revoit avec lui.
Annotations d'interface en ABAP CDS, en CAP CDS ou dans un fichier local : quelle différence ?
| ABAP CDS (RAP) | CAP CDS | Fichier d'annotations local | |
|---|---|---|---|
| Lieu de rédaction | Data definition ou metadata extension dans le système ABAP | Fichiers CDS du projet CAP | Fichier XML dans l'application SAP Fiori |
| Notation | Annotations @UI, en partie au niveau de l'élément (p. ex. @UI.lineItem) | Noms des termes OData (p. ex. UI.LineItem) | XML OData (Annotation Term="UI.LineItem") |
| Cycle de vie | Transportées avec le modèle de données | Déployées avec le service CAP | Déployé avec l'application d'interface |
| Priorité | Remplacées terme par terme par les fichiers locaux | Remplacées terme par terme par les fichiers locaux | L'emporte pour les termes qu'il définit |
| Idéal pour | Métadonnées d'interface réutilisables pour SAP S/4HANA et les services ABAP | Services et applications construits sur SAP BTP | Surcharges propres à une application ou absence d'accès au back-end |
Les trois produisent les mêmes termes OData ; le choix détermine qui possède les métadonnées d'interface et dans quelle mesure elles sont réutilisées.
Questions fréquentes
Les annotations d'interface sont-elles la même chose que les annotations CDS ?
Non. Les annotations CDS forment une vaste famille qui couvre aussi les paramètres du catalogue ABAP, le contrôle d'accès, l'analytique et l'exposition OData. Les annotations d'interface en sont le sous-ensemble qui décrit la présentation pour SAP Fiori elements, écrites sous forme d'annotations @UI en ABAP CDS ou de termes du vocabulaire UI en CAP et en XML.
Les annotations locales remplacent-elles les annotations du back-end ?
Oui, terme par terme. Si un fichier d'annotations local définit UI.LineItem pour une entité, cette définition remplace entièrement l'UI.LineItem du back-end, tandis que les termes du back-end que le fichier local ne définit pas restent en vigueur.
Quels outils aident à écrire les annotations d'interface ?
SAP Fiori tools, dans Visual Studio Code et SAP Business Application Studio, propose la Page Map, le Guided Development et des éditeurs d'annotations pour les fichiers CAP CDS et XML. Pour ABAP CDS, le Guided Development aide à générer les annotations, et ABAP Development Tools les valide.
Peut-on ajouter des annotations d'interface à une application SAP Fiori elements livrée par SAP ?
Oui, au moyen d'un adaptation project lorsque l'application le permet. L'adaptation project peut ajouter des fichiers d'annotations locaux sans modifier l'application livrée par SAP ni son service back-end.
Les annotations d'interface fonctionnent-elles avec OData V2 et OData V4 ?
Oui. SAP Fiori elements existe pour OData V2 et OData V4, et les deux lisent les annotations d'interface, mais les termes et fonctions pris en charge diffèrent entre les deux piles ; consultez donc la documentation de la version OData utilisée par l'application.
Sources
- SAPUI5 SDK: Working With OData Annotations (SAP Fiori elements for OData V4)
- SAPUI5 SDK: Working With OData Annotations (SAP Fiori elements for OData V2)
- SAP Help Portal: Defining CDS Annotations for Metadata-Driven UIs (ABAP RESTful Application Programming Model)
- SAP Help Portal: Service Binding (binding types and UI vs. Web API)
- SAP Help Portal: Metadata Cache (SAP Gateway Foundation, hub and backend caching)
- S'applique à
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Dernière relecture