SAP CAP vs ABAP Cloud : Quand choisir quelle technologie ?

Catégorie
ABAP Cloud
Publié
Auteur
Johannes

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

AspectSAP CAPABAP Cloud
Langage de programmationJavaScript/TypeScript ou JavaABAP
RuntimeNode.js / Java sur Cloud Foundry/KymaABAP Environment (BTP) ou S/4HANA
Dialecte CDSCDS (dialecte CAP)CDS ABAP
Base de donneesSAP HANA Cloud, PostgreSQLSAP HANA (integre)
Multi-TenancySupport natifVia Subaccounts
Integration SAPVia APIs/EventsDirect (meme base de donnees)
Competences equipeDeveloppeurs web, Full-StackDeveloppeurs ABAP
DeploiementContainerise (MTA)Transports ABAP/gCTS
Open SourceOui (partiellement)Non
Modele de licenceCredits BTPLicence 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

srv/cat-service.cds
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 Book
persistent table zbook
lock master
authorization 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 :

CritereJustification
Projet Greenfield sans backend SAPCAP est ideal pour les nouvelles apps sans connexion directe au systeme SAP
Exigence de multi-tenancySupport SaaS natif pour les partenaires ISV
Equipes polyglottesLes developpeurs web peuvent devenir rapidement productifs
Architecture microservicesDeploiement containerise sur Kyma/K8s
Sources de donnees externesConnexion flexible a n’importe quelle API REST
PortabiliteMoins de lock-in SAP grace a la base open-source

Choisissez ABAP Cloud si :

CritereJustification
Extension S/4HANA (On-Stack)Acces direct aux processus et donnees standard
Migration BrownfieldLe code ABAP existant peut etre modernise
Equipe ABAP existanteExploiter le savoir-faire existant
Logique transactionnelleRAP offre un CRUD natif avec gestion des verrous
Integration SAP profondeAcces aux APIs SAP publiees
Exigences reglementairesAudit, 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-Tenant
const 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 :

srv/logistics-service.js
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 CAP
CLASS 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 :

CoucheTechnologieResponsabilite
FrontendCAP + Fiori ElementsUI, Experience utilisateur
IntegrationCAPOrchestration, APIs externes
Logique metierABAP CloudProcessus principaux, integration S/4
DonneesS/4HANADonnees de base, transactions

Migration et coexistence

De l’ABAP classique vers ABAP Cloud

Le code ABAP existant peut etre migre progressivement vers ABAP Cloud :

  1. Identifier les APIs non publiees
  2. Les remplacer par des alternatives Clean Core
  3. Introduire CDS Views et RAP
  4. Tests avec ABAP Unit

Exploiter CAP et ABAP Cloud en parallele

Les deux technologies peuvent communiquer via des events :

// CAP : Recevoir un event
srv.on('SalesOrderCreated', async (msg) => {
// Reagir a l'event S/4HANA
await notifyLogistics(msg.data);
});
" ABAP Cloud : Envoyer un event
RAISE 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 :

AspectComportement
Cold Start2-5 secondes (demarrage du conteneur)
Mise a l’echelle horizontaleAutomatique via Cloud Foundry
Acces base de donneesVia couche de service (reseau)
Gestion memoireLimites conteneur, Garbage Collection
Utilisateurs concurrentsPar replication d’instances
// CAP : Mise en cache pour la performance
srv.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 :

AspectComportement
Cold StartMinimal (session ABAP)
Mise a l’echelle verticaleWork Processes, instances de dialogue
Acces base de donneesDirect (Code-to-Data)
Gestion memoireMemoire ABAP, buffer partage
Utilisateurs concurrentsVia pool de Work Process
" ABAP Cloud : Buffer d'entite CDS pour la performance
@AbapCatalog.entityBuffer.definitionAllowed: true
define 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
Terminal window
# Demarrer le projet CAP
npm install
cds watch
# Logs et debogage
DEBUG=cds cds watch

Developpement 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 Groups
BREAK-POINT ID zmy_debug.
" Points d'arret conditionnels dans ADT
IF lv_customer = 'TEST'.
" Placer le point d'arret ici
ENDIF.

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 :

RoleCompetence principaleCompetence secondaire
Developpeur FrontendCAP + SAPUI5Consommation RAP
Developpeur Backend (SAP)ABAP CloudIntegration CAP
Specialiste IntegrationCAPAPIs ABAP Cloud
ArchitecteLes deuxServices 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 :

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 :

  1. Ou sont les donnees ? Donnees principales S/4HANA -> ABAP Cloud
  2. Qui developpe ? Developpeurs web -> CAP, developpeurs ABAP -> ABAP Cloud
  3. Quelle architecture ? Microservices -> CAP, extension monolithique -> ABAP Cloud
  4. Quelle mise a l’echelle ? SaaS multi-tenant -> CAP, enterprise single-tenant -> les deux

Articles connexes :