SAP Cloud Application Programming Model (CAP)
Le SAP Cloud Application Programming Model (CAP) est le framework de SAP pour construire des services et des applications d'entreprise, principalement sur SAP BTP. Les développeurs déclarent les modèles de données et les services dans le langage Core Data Services (CDS) propre à CAP, et un runtime Node.js ou Java les expose comme endpoints OData, REST ou GraphQL, avec des handlers génériques pour les opérations standard.
L'essentiel
- Type
- Framework applicatif (langages, bibliothèques, outils)
- Couche
- Logique métier et modèle de données, dans le couloir de la plateforme SAP BTP
- Runtimes
- Node.js et Java
- Bases de données
- SQLite ou H2 pour le développement ; SAP HANA Cloud ou PostgreSQL pour la production
- Déployé sur
- SAP BTP, runtime Cloud Foundry ou Kyma
- Outils
- Ligne de commande CDS, Visual Studio Code, SAP Business Application Studio
- S'applique à
- SAP BTP (side-by-side avec SAP S/4HANA, toutes éditions)
Couche : Logique métier et modèle de donnéesOù se situe-t-il ? ▾
Couche : Logique métier et modèle de données
Concerne aussi : SAP BTP, Services et API
Ouvrir la carte d'architecture →Comment fonctionne une application CAP ?
Une application CAP part de déclarations et n'ajoute du code que là où les comportements par défaut du framework ne suffisent pas :
- Modèle de domaine : les entités, les types et les associations sont écrits dans des fichiers CDS, par exemple les fournisseurs et les créneaux de livraison d'une application logistique d'Alder Manufacturing.
- Services : les définitions de services exposent des projections de ces entités, conçues pour une interface ou une API.
- Runtime : le runtime Node.js ou le CAP Java SDK sert les services et traite de manière générique les opérations standard : lecture, écriture, pagination, tri et draft SAP Fiori.
- Logique spécifique : des event handlers en JavaScript, TypeScript ou Java, enregistrés pour les phases before, on et after d'une requête, ajoutent des validations, des calculs et des appels à d'autres systèmes.
- Persistance : le même modèle s'exécute sur SQLite ou H2 pendant le développement et sur SAP HANA Cloud ou PostgreSQL en production.
- Déploiement : l'application est déployée sur SAP BTP, sur le runtime Cloud Foundry ou Kyma.
Les applications SAP Fiori elements consomment les services CAP au moyen d'annotations d'interface écrites dans les mêmes fichiers CDS. Une application CAP est donc avant tout un modèle, le code étant concentré là où la logique métier est spécifique.
CAP CDS est-il identique à ABAP CDS ?
Non. Tous deux sont issus du concept Core Data Services de SAP, utilisent une syntaxe déclarative similaire et portent des annotations, mais ce sont des implémentations distinctes :
- ABAP CDS fait partie de la plateforme ABAP. Ses vues sont des objets du référentiel activés comme vues de base de données au sein d'un système ABAP et transportés avec les transports ABAP.
- CAP CDS est le langage de modélisation de CAP. Son compilateur transforme les modèles en une représentation au format JSON appelée Core Schema Notation (CSN), à partir de laquelle CAP génère les artefacts de base de données et les métadonnées de service.
Les annotations illustrent la différence en pratique. Dans CAP, les annotations d'interface utilisent directement les noms de termes OData, tels que UI.LineItem ; dans ABAP CDS, des notations au niveau des éléments comme @UI.lineItem sont traduites dans ces termes lorsque le service est exposé. Un modèle ne peut pas passer de l'un à l'autre sans modification. CAP CDS et ABAP CDS partagent un nom et une philosophie, pas un environnement d'exécution.
Quand CAP est-il le bon choix ?
Choisissez CAP lorsque :
- l'application a sa place à côté de SAP S/4HANA, et non à l'intérieur, comme extension side-by-side sur SAP BTP ;
- l'application possède ses propres données ou combine des données de plusieurs systèmes, SAP et non SAP ;
- l'équipe travaille en JavaScript, TypeScript ou Java plutôt qu'en ABAP ;
- l'application doit servir plusieurs clients sous forme d'offre SaaS multitenant, ce que CAP prend en charge grâce à l'isolation des tenants et à ses services MTX.
Préférez RAP lorsque la logique doit s'exécuter dans la même transaction que les données SAP S/4HANA, lorsque l'extension modifie un business object standard, ou lorsque l'équipe et le modèle d'exploitation reposent sur ABAP.
De nombreux environnements utilisent les deux : RAP pour la logique proche du cœur, CAP pour les applications qui l'entourent. La question décisive pour CAP est de savoir où se situent les données et la transaction.
Comment CAP se connecte-t-il à SAP S/4HANA ?
Une application CAP ne s'exécute pas dans SAP S/4HANA ; elle accède donc aux données SAP via des API :
- La définition d'API d'un service OData SAP S/4HANA, par exemple issue du SAP Business Accelerator Hub, est importée dans le projet CAP avec cds import, qui lit les fichiers OData EDMX, OpenAPI et AsyncAPI.
- Pendant le développement, CAP peut simuler (mock) le service importé en local, ce qui permet aux équipes de travailler avant que la connexion n'existe.
- En production, les appels passent par la connectivité SAP BTP : des destinations pour le système cible et, pour les systèmes on-premise, le Cloud Connector.
- Les événements de SAP S/4HANA peuvent déclencher de la logique CAP de manière asynchrone lorsque le scénario le permet, en général via un service SAP de type event broker.
C'est l'API libérée, et non la table de la base de données, qui constitue le contrat entre CAP et SAP S/4HANA. L'extension reste ainsi découplée du cœur, ce qui est l'objectif de l'approche side-by-side que suit CAP.
Où s'arrête CAP ?
Les points forts de CAP sont la rapidité et la cohérence. Les handlers génériques suppriment le code répétitif, le développement local fonctionne sans connexion cloud grâce aux mocks et à SQLite, la prise en charge de SAP Fiori et de SAP HANA est intégrée, et le multitenancy fait partie du framework au lieu de constituer un projet à part entière.
Les limites découlent de l'exécution en dehors du système de référence :
- Pas d'accès direct aux mécanismes internes de SAP S/4HANA. Tout passe par des API libérées ; les API manquantes deviennent des points de blocage ou nécessitent un complément côté ABAP.
- Pas de transaction partagée. Une mise à jour CAP et une comptabilisation SAP S/4HANA sont des transactions distinctes ; la gestion des échecs doit être conçue explicitement.
- Davantage à exploiter. Une application CAP ajoute à l'environnement un runtime SAP BTP, une base de données et de la connectivité, chacun avec sa supervision, ses mises à niveau et ses coûts.
- Framework prescriptif. Aller à l'encontre des conventions de CAP coûte plus cher que de les suivre.
CAP est le choix le plus solide pour les applications à côté du cœur ; il ne remplace pas la logique qui doit résider à l'intérieur.
CAP, RAP ou ABAP CDS : quelle différence ?
| CAP | RAP | ABAP CDS | |
|---|---|---|---|
| De quoi s'agit-il | Framework pour services et applications | Modèle de programmation ABAP pour applications et services transactionnels | Langage de modélisation des données de la plateforme ABAP |
| S'exécute sur | Principalement SAP BTP (Node.js ou Java) | Systèmes ABAP : SAP S/4HANA, environnement ABAP de SAP BTP | Systèmes ABAP |
| Modèle de données | CAP CDS | CDS view entities ABAP | Constitue le modèle de données |
| Comportement transactionnel | Handlers génériques plus handlers spécifiques | Behavior definitions et behavior pools | Aucun (modèle de lecture) |
| Usage type | Extensions side-by-side et SaaS sur SAP BTP | Applications et API au plus près des données SAP S/4HANA | Modèles de données, analytique, socles d'API |
CAP et RAP sont des alternatives pour construire des services à des endroits différents ; ABAP CDS est une brique de RAP, et non une alternative à CAP.
Questions fréquentes
CAP est-il réservé à SAP BTP ?
CAP est conçu pour SAP BTP, et SAP documente le déploiement sur les runtimes Cloud Foundry et Kyma. Le développement s'exécute aussi en local sur un poste, avec SQLite et des services simulés. L'exploitation d'applications CAP en dehors de SAP BTP n'est pas couverte par ce guide.
CAP prend-il en charge OData V2 en plus d'OData V4 ?
CAP utilise OData V4 par défaut. OData V2 est déprécié dans CAP et servi via l'adaptateur OData V2, un plugin en Node.js et un adaptateur intégré dans CAP Java, pour les interfaces existantes basées sur V2. OData V4 est le choix à retenir pour les nouvelles applications SAP Fiori elements.
Peut-on construire des applications SAP Fiori elements avec CAP ?
Oui. Les annotations d'interface sont écrites dans les fichiers CAP CDS, CAP sert le service OData et gère le draft SAP Fiori de manière générique, et SAP Fiori tools génère des applications list report et object page sur le service CAP.
Quelles bases de données CAP prend-il en charge ?
SAP documente SQLite et H2 pour le développement, et SAP HANA Cloud ou PostgreSQL pour la production. Passer de l'une à l'autre se résume pour l'essentiel à changer de profil de configuration, car le modèle de données est écrit en CDS et non dans un SQL propre à une base de données.
CAP peut-il lire directement les tables SAP S/4HANA ?
Non. Une application CAP consomme SAP S/4HANA via des API libérées, telles que des services OData, appelées au travers de la connectivité SAP BTP. Un accès direct aux tables contournerait le contrat de stabilité qui protège une extension side-by-side lors des mises à niveau.
Sources
- SAP Help Portal: Developing with the SAP Cloud Application Programming Model (SAP BTP)
- SAP Help Portal: Programming Models on SAP BTP (CAP and ABAP Cloud)
- SAP Help Portal: SAP BTP, Cloud Foundry and Kyma runtimes with CAP
- CAP documentation (capire): Features Overview
- CAP documentation (capire): Serving OData APIs (V4 default, V2 support)
- S'applique à
- SAP BTP
- Dernière relecture