OData
OData (Open Data Protocol) est un protocole ouvert, fondé sur REST, qui permet d'interroger et de modifier des données via HTTP. C'est le canal standard par lequel les applications SAP Fiori lisent et écrivent les données métier dans SAP S/4HANA et sur SAP BTP. SAP utilise deux versions, OData V2 et OData V4, qui diffèrent par leurs fonctionnalités, leur outillage et la prise en charge par les applications.
L'essentiel
- Type
- Protocole d'accès aux données (REST sur HTTP, JSON ou XML)
- Couche
- Services et API
- Versions chez SAP
- OData V2 et OData V4
- Construit avec
- Service bindings RAP, projets SEGW, services générés depuis CDS (ABAP) ; CAP (SAP BTP)
- Administré avec
- /IWFND/MAINT_SERVICE (V2), /IWFND/V4_ADMIN (V4) en on-premise
- Qui l'utilise
- Développeurs SAP Fiori et ABAP, équipes Basis, architectes d'intégration
- S'applique à
- SAP S/4HANA (toutes options de déploiement), SAP BTP
Couche : Services et APIOù se situe-t-il ? ▾
Couche : Services et API
Ouvrir la carte d'architecture →Le target mapping correspondant lance la cible : une application SAPUI5 ou SAP Fiori elements, une transaction SAP GUI for HTML, une application Web Dynpro ABAP ou une URL.
Associés :Target Mapping · SAP Fiori Elements · SAP GUI for HTML (Web GUI)
Une application SAPUI5 ou SAP Fiori elements demande des données à un service OData. SAP Gateway vérifie que l'utilisateur est autorisé à démarrer le service (objet d'autorisation S_SERVICE) et achemine la requête vers le back-end.
Associés :OData · SAP Gateway · PFCG et rôles SAP Fiori
Le service est implémenté par des vues CDS et, pour les applications transactionnelles, par le comportement des business objects RAP ou par d'anciens projets Gateway basés sur SEGW. Les contrôles d'autorisation sur les données métier s'exécutent ici.
Associés :Vues ABAP CDS · ABAP RESTful Application Programming Model (RAP)
Les données sont lues dans le document métier de SAP S/4HANA ou écrites dans celui-ci. Si la modification nécessite une approbation, un workflow démarre à l'un des emplacements indiqués dans la vue superposée Processus et workflow, et une tâche apparaît dans My Inbox.
Associés :Flexible Workflow · My Inbox · SAP Business Workflow
Comment fonctionne OData ?
OData décrit les données métier sous forme d'entity sets que les clients adressent par des URL, avec des verbes HTTP standard pour chaque opération :
- GET lit un entity set ou une entité unique, par exemple les commandes d'achat de Cedar Office Supply.
- POST, PATCH/PUT et DELETE créent, modifient et suppriment des entités.
- Les options de requête système telles que
$filter,$select,$expand,$orderby,$topet$skippermettent au client de demander au serveur de filtrer, trier et paginer les données. - `$metadata` renvoie le modèle de données du service : types d'entités, propriétés, clés, associations et annotations.
- `$batch` regroupe plusieurs requêtes en un seul appel HTTP.
Comme le modèle et les opérations sont standardisés, un client générique tel que le modèle OData de SAPUI5 peut lier des contrôles à n'importe quel service conforme sans code de requête spécifique. OData est donc un contrat sur la manière d'exposer les données, et non un élément de logique métier.
Que se passe-t-il lorsqu'une application SAP Fiori appelle un service OData ?
Une fois que le SAP Fiori Launchpad a résolu une tile et démarré l'application, l'accès aux données suit le même chemin pour toute application SAPUI5 ou SAP Fiori elements :
- L'application démarre. L'app descriptor désigne le service OData que l'application utilise comme source de données.
- L'application appelle le service. Le modèle OData de SAPUI5 envoie des requêtes, souvent regroupées dans un
$batch, à l'URL du service. Sur SAP S/4HANA, SAP Gateway vérifie que l'utilisateur a le droit de démarrer le service (objet d'autorisation S_SERVICE) et achemine la requête. - La logique métier s'exécute. L'implémentation du service — vues CDS, comportement RAP ou code basé sur SEGW — applique les validations et les autorisations sur les données.
- L'enregistrement est lu ou écrit. La réponse renvoie les données, ou la modification est enregistrée dans le document métier, ce qui peut déclencher un traitement en aval tel qu'un workflow.
Une étape défaillante se manifeste différemment selon le cas : une autorisation de démarrage manquante apparaît dans SU53, tandis qu'une erreur côté service apparaît dans /IWFND/ERROR_LOG ou /IWBEP/ERROR_LOG en on-premise. Tout écran SAP Fiori alimenté par des données est, en dessous, une suite de requêtes OData.
Quelle est la différence entre OData V2 et OData V4 ?
Les deux versions coexistent dans les environnements SAP, et la version détermine les outils et les modèles applicables :
| OData V2 | OData V4 | |
|---|---|---|
| Statut | Version plus ancienne, encore très répandue dans les applications SAP Fiori livrées | Version plus récente du protocole |
| Modèle SAPUI5 | sap.ui.model.odata.v2.ODataModel | sap.ui.model.odata.v4.ODataModel |
| Opérations | Function imports | Actions et functions |
| SAP Fiori elements | Pris en charge, avec les smart controls | Pris en charge, avec les building blocks |
| Publication ABAP (on-premise) | Par service, /IWFND/MAINT_SERVICE | Par groupe de services, /IWFND/V4_ADMIN |
RAP peut exposer le même business object en OData V2 ou V4, et certaines fonctionnalités récentes de SAP Fiori elements ne sont évaluées qu'avec OData V4, alors que de nombreuses applications livrées continuent de fonctionner en V2. Choisir une version d'OData est une décision d'outillage et de prise en charge par les applications, et pas seulement de fonctionnalités du protocole.
Comment les services OData sont-ils construits chez SAP ?
SAP propose plusieurs façons de créer un service OData, selon la plateforme et l'âge du code :
- RAP (ABAP RESTful Application Programming Model) : une service definition sélectionne des entités CDS, et un service binding les publie en OData V2 ou V4, avec la catégorie UI (porte les annotations d'interface pour SAP Fiori elements) ou Web API (sans métadonnées propres à l'interface).
- Projets SEGW : le SAP Gateway Service Builder modélise les entités et génère des classes d'exécution pour du code ABAP écrit à la main ; courant dans les applications spécifiques plus anciennes.
- CDS avec `@OData.publish: true` : génère un service OData V2 à partir d'une vue CDS ; toujours documenté pour l'on-premise et la Private Edition, alors que les service bindings RAP constituent l'approche plus récente.
- CAP sur SAP BTP : des définitions de services en CDS servies en OData, avec V4 par défaut et V2 disponible via un adaptateur.
Le protocole sur le réseau est le même ; c'est le modèle de programmation qui se trouve derrière qui détermine le traitement de la logique, des drafts et des extensions. Il est préférable de démarrer un nouveau service OData dans le modèle de programmation que la plateforme cible recommande actuellement.
Qu'est-ce qui change entre SAP S/4HANA Cloud, on-premise et SAP BTP ?
- On-premise et Private Edition : les administrateurs enregistrent et activent les services OData sur SAP Gateway, attribuent les system aliases et gèrent les nœuds ICF. L'ensemble des transactions et des journaux de Gateway est disponible.
- Public Edition : SAP exploite les services qui se trouvent derrière les applications SAP Fiori livrées. L'accès aux outils d'administration et de supervision est encadré plutôt qu'ouvert comme en on-premise ; les consommateurs externes appellent des API libérées via des communication arrangements, et les services spécifiques proviennent de l'extensibilité développeur ou de l'extensibilité key user.
- SAP BTP : les applications appellent directement des services OData sur SAP BTP ou atteignent des services on-premise via des destinations et le SAP Cloud Connector.
Le protocole OData se comporte de la même façon partout ; ce qui change, c'est qui active le service et comment un appelant l'atteint.
Quelles sont les erreurs fréquentes avec OData dans les projets SAP Fiori ?
- Traiter un service d'interface comme une API d'intégration. Un service conçu pour une application SAP Fiori peut évoluer avec l'application. Les intégrations doivent reposer sur des API libérées ou sur des services conçus comme Web API.
- Récupérer trop de données. Les listes sans
$selectou avec un$expandprofond transfèrent bien plus de données que l'écran n'en affiche ; vérifiez les requêtes dans les outils de développement du navigateur. - Ignorer `$batch` lors du débogage. Le navigateur affiche un seul appel batch ; l'opération en échec se trouve dans le corps de sa réponse.
- Mélanger les versions dans la conception d'une même application. V2 et V4 utilisent des modèles SAPUI5 et des piles SAP Fiori elements différents, si bien que les composants passent rarement de l'une à l'autre sans modification.
- Imputer à l'interface des lacunes d'autorisation. Une liste vide peut provenir d'un filtre d'autorisation sur les données dans le service, et non d'un bug du front-end.
La plupart des problèmes OData dans les projets SAP Fiori sont des problèmes de conception ou d'autorisation qui ne se manifestent que sous forme d'erreurs de protocole.
OData ou API libérées : quelle différence ?
| OData | API libérées | |
|---|---|---|
| De quoi s'agit-il | Un protocole pour exposer et modifier des données via HTTP | Un engagement de stabilité que SAP prend pour des objets ou des services précis |
| Question à laquelle il répond | Comment un client lit-il ou écrit-il les données ? | Puis-je m'appuyer sur cet objet d'une mise à niveau à l'autre ? |
| Périmètre | Tout service OData, y compris les services d'interface internes | Des API sélectionnées (OData, SOAP, vues CDS, classes) dotées d'un statut de libération |
| Consommateur type | Applications SAP Fiori et autres clients HTTP | Intégrations, extensions et code ABAP Cloud |
De nombreuses API libérées utilisent OData, mais un service OData n'est pas automatiquement libéré : c'est le statut de libération, et non le protocole, qui signale la stabilité lors des mises à niveau.
Questions fréquentes
OData, est-ce la même chose que REST ?
OData est un protocole fondé sur REST, mais il ajoute des conventions que REST seul ne définit pas : un document de métadonnées standard, des options de requête standard telles que $filter et $expand, et les requêtes batch. Ces conventions permettent à des clients génériques comme le modèle OData de SAPUI5 de fonctionner avec n'importe quel service conforme.
Une nouvelle application SAP Fiori doit-elle utiliser OData V2 ou V4 ?
Pour les nouvelles applications SAP Fiori elements construites avec RAP sur les releases actuelles de SAP S/4HANA, OData V4 est le meilleur point de départ, car certaines fonctionnalités de SAP Fiori elements ne sont évaluées qu'avec V4. OData V2 reste le bon choix lorsqu'on étend une application V2 existante ou lorsqu'une fonctionnalité requise n'est disponible que dans la pile V2.
Les applications SAP Fiori utilisent-elles toujours OData ?
Les applications SAPUI5 et SAP Fiori elements qui manipulent des données métier SAP utilisent des services OData dans presque tous les cas. Les transactions SAP GUI for HTML et les applications Web Dynpro ABAP lancées depuis le SAP Fiori Launchpad utilisent leurs propres mécanismes au lieu d'OData.
Des systèmes externes peuvent-ils appeler les services OData qui se trouvent derrière les applications SAP Fiori ?
Techniquement, un client HTTP peut les appeler, mais ces services d'interface sont conçus pour leur application et ne constituent pas un contrat d'intégration stable. Les intégrations doivent utiliser des API libérées, que SAP maintient compatibles d'une mise à niveau à l'autre, ou des services Web API construits à cet effet.
Où voir pourquoi une requête OData a échoué ?
Sur SAP S/4HANA on-premise et Private Edition, /IWFND/ERROR_LOG affiche les erreurs côté hub Gateway et /IWBEP/ERROR_LOG les erreurs dans le service back-end. Dans le navigateur, le corps de la réponse de la requête en échec, souvent à l'intérieur d'une réponse $batch, contient le message d'erreur.
Sources
- SAPUI5 SDK: OData V4 Model
- SAPUI5 SDK: OData V2 Model
- SAP Help Portal: Service Binding (ABAP Cloud) — OData V2/V4, UI and Web API
- SAP Help Portal: ICF Services for OData V2 and V4 (SAP Gateway Foundation)
- SAP Help Portal: Working with ABAP for Cloud Development and Released APIs
- S'applique à
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Dernière relecture