Le choix entre SAP Cloud Application Programming Model (CAP) et ABAP Cloud est l’une des decisions architecturales les plus importantes pour les projets de developpement SAP. Les deux technologies sont strategiques pour SAP, mais elles repondent a des exigences et scenarios differents.
Qu’est-ce que SAP CAP ?
SAP CAP (Cloud Application Programming Model) est le framework open-source de SAP pour le developpement d’applications cloud-natives sur la SAP Business Technology Platform (BTP). Il est base sur Node.js ou Java et utilise CDS (Core Data Services) comme langage de modelisation universel.
Caracteristiques cles de CAP :
- Runtime Node.js ou Java
- Modelisation des donnees basee sur CDS
- Multi-tenancy pret a l’emploi
- Conception cloud-native (12-Factor-App)
- S’execute sur Cloud Foundry ou Kyma
Qu’est-ce qu’ABAP Cloud ?
ABAP Cloud est le modele de developpement moderne de SAP pour les applications ABAP. Il est base sur le ABAP RESTful Application Programming Model (RAP) et utilise des APIs publiees selon le principe Clean Core.
Caracteristiques cles d’ABAP Cloud :
- Runtime ABAP (Steampunk sur BTP ou S/4HANA)
- CDS ABAP pour la modelisation des donnees
- RAP pour la logique metier et les services
- Integration profonde avec les processus standard SAP
- Acces aux donnees standard SAP
Tableau comparatif : CAP vs ABAP Cloud
| Aspect | SAP CAP | ABAP Cloud |
|---|---|---|
| Langage de programmation | JavaScript/TypeScript ou Java | ABAP |
| Runtime | Node.js / Java sur Cloud Foundry/Kyma | ABAP Environment (BTP) ou S/4HANA |
| Dialecte CDS | CDS (dialecte CAP) | CDS ABAP |
| Base de donnees | SAP HANA Cloud, PostgreSQL | SAP HANA (integre) |
| Multi-Tenancy | Support natif | Via Subaccounts |
| Integration SAP | Via APIs/Events | Direct (meme base de donnees) |
| Competences equipe | Developpeurs web, Full-Stack | Developpeurs ABAP |
| Deploiement | Containerise (MTA) | Transports ABAP/gCTS |
| Open Source | Oui (partiellement) | Non |
| Modele de licence | Credits BTP | Licence BTP/S/4HANA |
Comparaison de code : Definition d’entite
CDS dans SAP CAP
// schema.cds (CAP)namespace my.bookshop;
entity Books { key ID : Integer; title : String(100); author : Association to Authors; price : Decimal(10,2); stock : Integer;}
entity Authors { key ID : Integer; name : String(100); books : Association to many Books on books.author = $self;}CDS ABAP pour ABAP Cloud
// Z_I_Book (CDS View Entity dans ABAP Cloud)@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Livre"define view entity Z_I_Book as select from zbook association [1..1] to Z_I_Author as _Author on $projection.AuthorId = _Author.AuthorId{ key book_id as BookId, title as Title, author_id as AuthorId, price as Price, stock as Stock,
_Author}Comparaison de code : Definition de service
Service dans CAP
using my.bookshop from '../db/schema';
service CatalogService { entity Books as projection on bookshop.Books; entity Authors as projection on bookshop.Authors;
// Action personnalisee action submitOrder(book: Books:ID, quantity: Integer) returns String;}Service dans ABAP Cloud (RAP)
// Service Definition (SRVD)@EndUserText.label: 'Book Service"define service Z_SD_Book { expose Z_C_Book as Book; expose Z_C_Author as Author;}// Behavior Definition (BDEF)managed implementation in class zbp_i_book unique;strict ( 2 );
define behavior for Z_I_Book alias Bookpersistent table zbooklock masterauthorization master ( instance ){ create; update; delete;
action submitOrder parameter Z_A_OrderParams result [1] $self;
mapping for zbook { BookId = book_id; Title = title; AuthorId = author_id; Price = price; Stock = stock; }}Matrice de decision : Quand quelle technologie ?
Choisissez SAP CAP si :
| Critere | Justification |
|---|---|
| Projet Greenfield sans backend SAP | CAP est ideal pour les nouvelles apps sans connexion directe au systeme SAP |
| Exigence de multi-tenancy | Support SaaS natif pour les partenaires ISV |
| Equipes polyglottes | Les developpeurs web peuvent devenir rapidement productifs |
| Architecture microservices | Deploiement containerise sur Kyma/K8s |
| Sources de donnees externes | Connexion flexible a n’importe quelle API REST |
| Portabilite | Moins de lock-in SAP grace a la base open-source |
Choisissez ABAP Cloud si :
| Critere | Justification |
|---|---|
| Extension S/4HANA (On-Stack) | Acces direct aux processus et donnees standard |
| Migration Brownfield | Le code ABAP existant peut etre modernise |
| Equipe ABAP existante | Exploiter le savoir-faire existant |
| Logique transactionnelle | RAP offre un CRUD natif avec gestion des verrous |
| Integration SAP profonde | Acces aux APIs SAP publiees |
| Exigences reglementaires | Audit, conformite dans le standard SAP |
Cas d’utilisation avec exemples concrets
Cas d’utilisation 1 : Produit SaaS Greenfield
Scenario : Un ISV souhaite proposer une solution sectorielle en SaaS sur la SAP BTP.
Recommandation : SAP CAP
// Service CAP Multi-Tenantconst cds = require('@sap/cds');
module.exports = cds.service.impl(async function() { this.on('READ', 'Tenants', async (req) => { // Acces aux donnees conscient du tenant const tenant = req.user.tenant; return SELECT.from('Tenants').where({ tenant_id: tenant }); });});Raisons :
- Multi-tenancy natif
- Mise a l’echelle flexible
- Base de donnees propre par tenant possible
Cas d’utilisation 2 : Extension S/4HANA (Brownfield)
Scenario : Une entreprise souhaite etendre le processus de vente dans S/4HANA avec une logique d’approbation specifique au client.
Recommandation : ABAP Cloud
CLASS zbp_i_salesorder IMPLEMENTATION. METHOD approval_check. " Acces direct aux donnees standard S/4HANA READ ENTITIES OF z_i_salesorder IN LOCAL MODE ENTITY SalesOrder FIELDS ( TotalAmount CustomerGroup ) WITH CORRESPONDING #( keys ) RESULT DATA(lt_orders).
LOOP AT lt_orders INTO DATA(ls_order). IF ls_order-TotalAmount > 10000 AND ls_order-CustomerGroup = 'NEW'. " Approbation requise MODIFY ENTITIES OF z_i_salesorder IN LOCAL MODE ENTITY SalesOrder UPDATE SET FIELDS WITH VALUE #( ( %tky = ls_order-%tky ApprovalStatus = 'PENDING' ) ). ENDIF. ENDLOOP. ENDMETHOD.ENDCLASS.Raisons :
- Acces direct aux documents de vente
- Coherence transactionnelle avec le standard SAP
- Pas de latence API
Cas d’utilisation 3 : Extension Side-by-Side
Scenario : Une app logistique doit combiner des donnees S/4HANA avec des donnees IoT externes.
Recommandation : CAP + ABAP Cloud (Hybride)
┌─────────────────────────────────────────────────────────┐│ SAP BTP ││ ┌──────────────┐ ┌──────────────┐ ││ │ App CAP │◄──►│ ABAP Cloud │ ││ │ (IoT + UI) │ │ (S/4 Proxy) │ ││ └──────┬───────┘ └──────┬───────┘ ││ │ │ ││ ▼ ▼ ││ ┌──────────────┐ ┌──────────────┐ ││ │ Service IoT │ │ S/4HANA │ ││ │ (externe) │ │ (Backend) │ ││ └──────────────┘ └──────────────┘ │└─────────────────────────────────────────────────────────┘CAP pour le frontend et l’integration IoT :
module.exports = async (srv) => { const s4 = await cds.connect.to('S4_DELIVERY_API'); const iot = await cds.connect.to('IOT_SERVICE');
srv.on('READ', 'Deliveries', async (req) => { const deliveries = await s4.run(req.query); // Enrichir avec les donnees de tracking IoT for (let d of deliveries) { d.tracking = await iot.get(`/shipments/${d.TrackingId}`); } return deliveries; });};ABAP Cloud comme proxy API vers S/4HANA :
" Exposer une API publiee pour CAPCLASS zcl_delivery_api IMPLEMENTATION. METHOD get_deliveries. SELECT * FROM i_deliverydocument WHERE deliverydocument IN @it_filter INTO TABLE @rt_deliveries. ENDMETHOD.ENDCLASS.Architecture hybride : Le meilleur des deux mondes
Dans les scenarios enterprise complexes, une architecture hybride est souvent la meilleure solution :
| Couche | Technologie | Responsabilite |
|---|---|---|
| Frontend | CAP + Fiori Elements | UI, Experience utilisateur |
| Integration | CAP | Orchestration, APIs externes |
| Logique metier | ABAP Cloud | Processus principaux, integration S/4 |
| Donnees | S/4HANA | Donnees de base, transactions |
Migration et coexistence
De l’ABAP classique vers ABAP Cloud
Le code ABAP existant peut etre migre progressivement vers ABAP Cloud :
- Identifier les APIs non publiees
- Les remplacer par des alternatives Clean Core
- Introduire CDS Views et RAP
- Tests avec ABAP Unit
Exploiter CAP et ABAP Cloud en parallele
Les deux technologies peuvent communiquer via des events :
// CAP : Recevoir un eventsrv.on('SalesOrderCreated', async (msg) => { // Reagir a l'event S/4HANA await notifyLogistics(msg.data);});" ABAP Cloud : Envoyer un eventRAISE ENTITY EVENT z_i_salesorder~created FROM VALUE #( ( %key = ls_order-%key ) ).Performance et comportement de mise a l’echelle
Un aspect important du choix technologique est le comportement en termes de performance et de mise a l’echelle.
Caracteristiques de performance SAP CAP
Les applications CAP sont basees sur des conteneurs et s’etendent horizontalement. Cela signifie :
| Aspect | Comportement |
|---|---|
| Cold Start | 2-5 secondes (demarrage du conteneur) |
| Mise a l’echelle horizontale | Automatique via Cloud Foundry |
| Acces base de donnees | Via couche de service (reseau) |
| Gestion memoire | Limites conteneur, Garbage Collection |
| Utilisateurs concurrents | Par replication d’instances |
// CAP : Mise en cache pour la performancesrv.before('READ', 'Products', async (req) => { const cached = await redis.get(`products_${req.query.SELECT.where}`); if (cached) { req.reply(JSON.parse(cached)); }});Caracteristiques de performance ABAP Cloud
ABAP Cloud utilise l’environnement d’execution ABAP eprouve avec acces direct a HANA :
| Aspect | Comportement |
|---|---|
| Cold Start | Minimal (session ABAP) |
| Mise a l’echelle verticale | Work Processes, instances de dialogue |
| Acces base de donnees | Direct (Code-to-Data) |
| Gestion memoire | Memoire ABAP, buffer partage |
| Utilisateurs concurrents | Via pool de Work Process |
" ABAP Cloud : Buffer d'entite CDS pour la performance@AbapCatalog.entityBuffer.definitionAllowed: truedefine view entity Z_I_Product with parameters p_date : abap.dats as select from zproduct{ key product_id as ProductId, description as Description}Recommandation performance : Pour les scenarios transactionnels haute frequence avec des donnees SAP, ABAP Cloud offre des avantages grace a l’acces direct a HANA et la gestion optimisee des buffers. CAP est mieux adapte aux scenarios avec beaucoup de petites requetes independantes.
Outils de developpement et debogage
Developpement CAP avec VS Code
Le developpement CAP s’effectue principalement dans VS Code avec l’extension SAP CDS :
- Coloration syntaxique pour les fichiers CDS
- Completion de code pour les entites et services
- Terminal integre pour
cds watch - Debogueur Node.js pour la logique backend
- REST Client pour les tests API
# Demarrer le projet CAPnpm installcds watch
# Logs et debogageDEBUG=cds cds watchDeveloppement ABAP Cloud avec ADT
ABAP Cloud necessite les ABAP Development Tools (ADT) dans Eclipse :
- Debogueur ABAP avec points d’arret
- Analyseur CDS View pour la performance
- Integration SQL Trace
- Gestion des transports
- Integration ABAP Unit
" Debogage avec Checkpoint GroupsBREAK-POINT ID zmy_debug.
" Points d'arret conditionnels dans ADTIF lv_customer = 'TEST'. " Placer le point d'arret iciENDIF.Strategie d’equipe et developpement des competences
Quand investir dans les competences CAP ?
Investissez dans CAP si :
- De nouveaux developpeurs sans background ABAP sont recrutes
- Une expertise JavaScript/TypeScript existe dans l’equipe
- Des projets microservices sont prevus
- Une strategie multi-cloud est poursuivie
Quand investir dans les competences ABAP Cloud ?
Investissez dans ABAP Cloud si :
- Les developpeurs ABAP existants doivent etre formes
- Une transformation S/4HANA est prevue
- Une integration SAP profonde est requise
- Un partenariat SAP a long terme existe
Constitution d’equipe hybride
Pour une flexibilite maximale, une equipe avec les deux competences est recommandee :
| Role | Competence principale | Competence secondaire |
|---|---|---|
| Developpeur Frontend | CAP + SAPUI5 | Consommation RAP |
| Developpeur Backend (SAP) | ABAP Cloud | Integration CAP |
| Specialiste Integration | CAP | APIs ABAP Cloud |
| Architecte | Les deux | Services BTP |
Licences et couts
Modele de couts SAP CAP
Les applications CAP consomment des credits BTP :
- Cloud Foundry Runtime (memoire/heure)
- HANA Cloud (stockage/compute)
- Connectivity (appels API)
- Destination Service (connexions)
Modele de couts ABAP Cloud
ABAP Cloud s’execute sur :
- SAP BTP ABAP Environment (abonnement)
- S/4HANA Cloud (inclus)
- S/4HANA On-Premise (depuis 2022)
Comparaison des couts : Pour les petites applications, CAP peut etre moins cher (pay-as-you-go). Pour les applications enterprise etendues avec de nombreux utilisateurs, ABAP Cloud est souvent plus rentable, surtout si des licences S/4HANA existent deja.
Perspective future : Strategie SAP
SAP continue d’investir dans les deux technologies :
Roadmap SAP CAP :
- Support TypeScript ameliore
- Integration Kyma/Kubernetes native
- Integration Event Mesh
- Services AI (SDK Joule)
Roadmap ABAP Cloud :
- Plus d’APIs publiees
- Extensions des fonctionnalites RAP
- Integration Joule pour ABAP
- Developer Extensibility
Les deux technologies sont strategiques pour SAP. Le choix n’est pas une decision soit-l’un-soit-l’autre, mais une question du bon outil pour le cas d’utilisation respectif.
Conclusion et recommandation
Il n’y a pas de “meilleur” - seulement de “plus adapte” :
- SAP CAP excelle pour les projets Greenfield, les solutions SaaS et les scenarios avec un fort focus web
- ABAP Cloud est imbattable pour les extensions S/4HANA et la modernisation Brownfield
La plupart des projets enterprise beneficient d’une strategie hybride : CAP pour les nouveaux microservices independants - ABAP Cloud pour tout ce qui est profondement lie aux processus standard SAP.
Questions cles pour votre decision :
- Ou sont les donnees ? Donnees principales S/4HANA -> ABAP Cloud
- Qui developpe ? Developpeurs web -> CAP, developpeurs ABAP -> ABAP Cloud
- Quelle architecture ? Microservices -> CAP, extension monolithique -> ABAP Cloud
- Quelle mise a l’echelle ? SaaS multi-tenant -> CAP, enterprise single-tenant -> les deux
Articles connexes :
- RAP Fondamentaux : Le ABAP RESTful Application Programming Model
- Strategie Clean Core pour S/4HANA
- CDS Views : Comprendre les Core Data Services
- Guide de migration ABAP Cloud
- Trucs et astuces ADT