Les developpeurs ABAP Cloud sont extremement demandes a partir de 2025 - mais l’ecart de competences entre Classic ABAP et ABAP Cloud est considerable. Ce parcours d’apprentissage vous montre etape par etape comment passer du developpeur ABAP classique a l’expert Cloud recherche en 6-12 mois.
Ou en etes-vous ? (Evaluation du niveau de competences)
Niveau 1 : Debutant ABAP
Situation actuelle :
- Aucune ou tres peu d’experience en programmation
- Pas de connaissances SAP
Ce que vous devez apprendre :
- Bases de la programmation (variables, boucles, fonctions)
- Syntaxe et concepts fondamentaux ABAP
- Bases SAP (Customizing, Transaction, Mandant)
- Principes POO (Classes, Interfaces, Heritage)
Temps necessaire : 12-18 mois jusqu’a ABAP Cloud
Niveau 2 : Developpeur Classic ABAP
Situation actuelle :
- Syntaxe ABAP (SELECT, LOOP, IF/CASE)
- Reports, Dynpro, Module Pool
- Function Modules, Includes
- Peu de connaissances POO
- Pas d’experience Cloud
Ce que vous devez apprendre :
- ABAP Oriente Objet (Classes, Interfaces)
- Vues CDS (Core Data Services)
- RAP (RESTful ABAP Programming)
- Eclipse ADT (ABAP Development Tools)
- Clean Core et APIs Released
Temps necessaire : 6-12 mois jusqu’a ABAP Cloud
Niveau 3 : Developpeur ABAP moderne
Situation actuelle :
- POO ABAP (Classes, Interfaces)
- Bases des vues CDS
- Eclipse ADT
- Optimisation HANA
- Pas de RAP
- Pas de S/4HANA Cloud / BTP
Ce que vous devez apprendre :
- RAP (Behavior Definitions, EML)
- Bases Fiori Elements
- SAP BTP (ABAP Environment)
- Strategie Clean Core
- Services OData
Temps necessaire : 3-6 mois jusqu’a ABAP Cloud
Le parcours d’apprentissage de 6 mois (pour Niveau 2)
┌─────────────────────────────────────────────────────────┐│ Mois 1-2 : Consolider les bases │├─────────────────────────────────────────────────────────┤│ - Approfondir la POO ABAP ││ - Maitriser Eclipse ADT ││ - Vues CDS et Annotations ││ - Tests unitaires ABAP │└────────────┬────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────┐│ Mois 3-4 : RAP Core │├─────────────────────────────────────────────────────────┤│ - Scenario RAP Managed ││ - Behavior Definitions (BDEF) ││ - EML (Entity Manipulation Language) ││ - Determinations et Validations ││ - Actions │└────────────┬────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────┐│ Mois 5 : Integration et UI │├─────────────────────────────────────────────────────────┤│ - Services OData V4 ││ - Bases Fiori Elements ││ - Service Bindings ││ - Annotations UI │└────────────┬────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────┐│ Mois 6 : Pratique et Certification │├─────────────────────────────────────────────────────────┤│ - Projet RAP personnel (voir ci-dessous) ││ - SAP Learning Hub (optionnel) ││ - Contributions communautaires (Blog, GitHub) ││ - Certification SAP (optionnel) │└─────────────────────────────────────────────────────────┘Phase 1 : Consolider les bases (Mois 1-2)
1.1 ABAP Oriente Objet
Pourquoi c’est important ? ABAP Cloud est 100% POO. Pas de POO, pas de RAP.
Ce qu’il faut apprendre :
" Comprendre les classes et interfacesINTERFACE zif_calculator. METHODS add IMPORTING iv_a TYPE i iv_b TYPE i RETURNING VALUE(rv_result) TYPE i.ENDINTERFACE.
CLASS zcl_calculator DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_calculator.ENDCLASS.
CLASS zcl_calculator IMPLEMENTATION. METHOD zif_calculator~add. rv_result = iv_a + iv_b. ENDMETHOD.ENDCLASS.
" HeritageCLASS zcl_base DEFINITION ABSTRACT. PUBLIC SECTION. METHODS process ABSTRACT.ENDCLASS.
CLASS zcl_child DEFINITION INHERITING FROM zcl_base. PUBLIC SECTION. METHODS process REDEFINITION.ENDCLASS.
" PolymorphismeDATA(lo_calc) = CAST zif_calculator( NEW zcl_calculator( ) ).DATA(lv_result) = lo_calc->add( iv_a = 5 iv_b = 3 ).Ressources d’apprentissage :
- Livre : “ABAP Objects” (Horst Keller, SAP Press)
- YouTube : Chaine SAP Developers - “OOP in ABAP”
- Pratique : Cours openSAP “Object-Oriented Programming in ABAP”
Exercices :
- Implementez une strategie basee sur des interfaces (p.ex. differents calculs de remise)
- Creez une classe de base abstraite avec heritage
- Utilisez des Design Patterns (Factory, Singleton)
1.2 Eclipse ADT
Pourquoi c’est important ? ABAP Cloud se developpe UNIQUEMENT dans Eclipse ADT (pas SE80).
Ce qu’il faut apprendre :
- Installation et configuration ADT
- Creer un projet ABAP
- Quick Fixes (Ctrl+1)
- Outils de refactoring
- Raccourcis
Configuration :
# 1. Installer Eclipse# https://tools.hana.ondemand.com/#abap
# 2. Plugin ABAP Development ToolsHelp → Install New Software→ https://tools.hana.ondemand.com/latest
# 3. Creer un projet ABAPFile → New → ABAP Project→ System: [Votre systeme S/4HANA ou BTP]Raccourcis indispensables :
Ctrl+Space Auto-completionCtrl+1 Quick FixF3 Naviguer vers la definitionCtrl+Shift+G Trouver les referencesCtrl+Shift+F Formater le codeCtrl+/ Commenter/DecommenterF8 ActiverCtrl+F11 ExecuterRessources d’apprentissage :
- YouTube SAP Developers : “ABAP Development Tools Tutorial”
- SAP Help : help.sap.com/adt
1.3 Vues CDS
Pourquoi c’est important ? Les vues CDS sont le modele de donnees dans RAP. Pas de CDS, pas de RAP.
Ce qu’il faut apprendre :
-- Interface View (I_*) : Modele de donnees@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Customer - Interface View"
define view entity ZI_Customer as select from kna1 association [0..*] to ZI_SalesOrder as _SalesOrders on $projection.CustomerId = _SalesOrders.SoldToParty{ key kunnr as CustomerId, name1 as CustomerName, ort01 as CityName, land1 as Country,
@Semantics.user.createdBy: true ernam as CreatedBy,
@Semantics.systemDateTime.createdAt: true erdat as CreatedOn,
// Association _SalesOrders}-- Consumption View (C_*) : Specifique a l'UI@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Customer - Consumption View"@Metadata.allowExtensions: true
@UI: { headerInfo: { typeName: 'Client', typeNamePlural: 'Clients', title: { value: 'CustomerName' } }}
define view entity ZC_Customer as projection on ZI_Customer{ @UI.facet: [{ position: 10, type: #IDENTIFICATION_REFERENCE }]
key @UI.lineItem: [{ position: 10 }] @UI.identification: [{ position: 10 }] CustomerId,
@UI.lineItem: [{ position: 20 }] @UI.identification: [{ position: 20 }] CustomerName,
@UI.lineItem: [{ position: 30 }] CityName,
@UI.lineItem: [{ position: 40 }] Country,
_SalesOrders : redirected to composition child ZC_SalesOrder}Ressources d’apprentissage :
- Article : /cds-views/
- openSAP : “Building Apps with the ABAP RESTful Application Programming Model”
- Pratique : developers.sap.com/mission.cp-starter-extensions-abap.html
Exercices :
- Creez des vues CDS pour vos tables preferees (VBAK, EKKO, etc.)
- Implementez des associations (1:n, n:m)
- Utilisez des annotations (@Semantics, @ObjectModel)
1.4 Tests unitaires ABAP
Pourquoi c’est important ? Les tests sont essentiels dans ABAP Cloud. TDD (Test-Driven Development) est la bonne pratique.
Ce qu’il faut apprendre :
CLASS ltc_calculator DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION. DATA mo_cut TYPE REF TO zcl_calculator. " CUT = Class Under Test
METHODS: setup, teardown, test_add_positive FOR TESTING, test_add_negative FOR TESTING, test_add_zero FOR TESTING.ENDCLASS.
CLASS ltc_calculator IMPLEMENTATION.
METHOD setup. CREATE OBJECT mo_cut. ENDMETHOD.
METHOD test_add_positive. " Arrange DATA(lv_a) = 5. DATA(lv_b) = 3.
" Act DATA(lv_result) = mo_cut->add( iv_a = lv_a iv_b = lv_b ).
" Assert cl_abap_unit_assert=>assert_equals( exp = 8 act = lv_result msg = '5 + 3 devrait etre egal a 8" ). ENDMETHOD.
METHOD test_add_negative. DATA(lv_result) = mo_cut->add( iv_a = -5 iv_b = 3 ). cl_abap_unit_assert=>assert_equals( exp = -2 act = lv_result ). ENDMETHOD.
METHOD test_add_zero. DATA(lv_result) = mo_cut->add( iv_a = 0 iv_b = 0 ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_result ). ENDMETHOD.
METHOD teardown. CLEAR mo_cut. ENDMETHOD.
ENDCLASS.Ressources d’apprentissage :
- Article : /abap-unit-testing/
- SAP TechEd : “ABAP Unit Testing Best Practices”
Exercices :
- Ecrivez des tests pour des classes existantes
- Pratiquez le TDD : Test d’abord, puis implementation
- Utilisez des Test Doubles pour les acces BD
Phase 2 : RAP Core (Mois 3-4)
2.1 Concepts de base RAP
Ce qu’il faut apprendre :
┌────────────────────────────────────────┐│ UI Fiori (Navigateur) │└───────────────┬────────────────────────┘ │ ▼ OData V4┌────────────────────────────────────────┐│ Service Binding ││ (ZUI_TRAVEL_O4) │└───────────────┬────────────────────────┘ │ ▼┌────────────────────────────────────────┐│ Service Definition ││ expose ZC_Travel as Travel │└───────────────┬────────────────────────┘ │ ▼┌────────────────────────────────────────┐│ Couche Projection (C_*) ││ ZC_Travel (Consumption View) ││ + Projection Behavior │└───────────────┬────────────────────────┘ │ ▼┌────────────────────────────────────────┐│ Couche Business Object (I_*) ││ ZI_Travel (Interface View) ││ + Behavior Definition (BDEF) ││ + Behavior Implementation (ABAP) │└───────────────┬────────────────────────┘ │ ▼┌────────────────────────────────────────┐│ Base de donnees (ZTRAVEL) │└────────────────────────────────────────┘Ressources d’apprentissage :
- Article : /rap-basics/
- openSAP : “Building Apps with RAP” (gratuit !)
- SAP Press : “ABAP RESTful Application Programming Model”
2.2 Pratique : Application Travel (4-5 jours)
Projet : Application de reservation de voyage
-
Jour 1 : Modele de donnees
- Tables : ZTRAVEL, ZBOOKING
- Vues CDS : ZI_TRAVEL, ZI_BOOKING
-
Jour 2 : Behavior Definition
- Operations CRUD
- Proprietes de champs (readonly, mandatory)
- Associations
-
Jour 3 : Validations et Determinations
- validateDates
- validateCustomer
- setInitialStatus
- calculateTotal
-
Jour 4 : Actions
- acceptTravel
- rejectTravel
-
Jour 5 : UI
- Vues Projection (ZC_*)
- Annotations UI
- Service Definition et Binding
- Apercu Fiori Elements
Tutoriel : developers.sap.com/mission.cp-starter-extensions-abap.html
2.3 EML (Entity Manipulation Language)
Ce qu’il faut apprendre :
" READREAD ENTITIES OF zi_travel ENTITY Travel ALL FIELDS WITH VALUE #( ( TravelId = '00001' ) ) RESULT DATA(lt_travel).
" CREATEMODIFY ENTITIES OF zi_travel ENTITY Travel CREATE FIELDS ( AgencyId CustomerId ) WITH VALUE #( ( %cid = 'CID_1' AgencyId = '001' CustomerId = '042' ) ) MAPPED DATA(mapped).
COMMIT ENTITIES.
" UPDATEMODIFY ENTITIES OF zi_travel ENTITY Travel UPDATE FIELDS ( Status ) WITH VALUE #( ( TravelId = '00001' Status = 'A' ) ).
COMMIT ENTITIES.
" DELETEMODIFY ENTITIES OF zi_travel ENTITY Travel DELETE FROM VALUE #( ( TravelId = '00001' ) ).
COMMIT ENTITIES.Ressources d’apprentissage :
- Article : /eml-entity-manipulation-language/
Exercices :
- Implementez toutes les operations CRUD
- Utilisez EML dans un report
- Pratiquez la gestion des erreurs avec FAILED/REPORTED
Phase 3 : Integration et UI (Mois 5)
3.1 Services OData
Ce qu’il faut apprendre :
-- Service Definition@EndUserText.label: 'Travel Service"define service ZUI_TRAVEL_O4 { expose ZC_Travel as Travel; expose ZC_Booking as Booking;}Service Binding :1. Eclipse ADT → New → Service Binding2. Binding Type : OData V4 - UI3. Service Definition : ZUI_TRAVEL_O44. Publish5. Preview → L'application Fiori Elements s'ouvreRessources d’apprentissage :
- SAP Help : “OData V4 in RAP”
- SAP Developers : “Building OData Services with RAP”
3.2 Bases Fiori Elements
Ce qu’il faut apprendre :
- List Report (Liste de synthese)
- Object Page (Vue detail)
- Annotations UI (@UI.lineItem, @UI.facet)
- Value Helps (@Consumption.valueHelpDefinition)
- Actions dans l’UI
Exemple :
@UI: { headerInfo: { typeName: 'Voyage', typeNamePlural: 'Voyages', title: { value: 'Description' }, description: { value: 'TravelId' } }}define view entity ZC_Travel as projection on ZI_Travel{ // Facets (Onglets sur Object Page) @UI.facet: [ { position: 10, type: #IDENTIFICATION_REFERENCE, label: 'General' }, { position: 20, type: #LINEITEM_REFERENCE, label: 'Reservations', targetElement: '_Bookings' } ]
// Colonnes List Report key @UI.lineItem: [{ position: 10 }] @UI.identification: [{ position: 10 }] @UI.selectionField: [{ position: 10 }] TravelId,
@UI.lineItem: [{ position: 20 }] @UI.identification: [{ position: 20 }] AgencyId,
// Boutons d'action @UI.lineItem: [ { type: #FOR_ACTION, dataAction: 'acceptTravel', label: 'Accepter' }, { type: #FOR_ACTION, dataAction: 'rejectTravel', label: 'Rejeter' } ] Status}Ressources d’apprentissage :
- SAP Fiori Design Guidelines : experience.sap.com/fiori-design
- openSAP : “Developing Web Apps with SAPUI5”
Phase 4 : Pratique et Certification (Mois 6)
4.1 Projet personnel : 3 idees
Projet 1 : Gestion d’equipements (facile)
Modele de donnees :- Equipment (ID, Name, Type, Status, PurchaseDate, Cost)- Maintenance (ID, EquipmentId, MaintenanceDate, Cost, Notes)
Fonctionnalites :- CRUD pour Equipment et Maintenance- Validation : MaintenanceDate pas dans le futur- Determination : Statut auto base sur la derniere maintenance- Actions : markAsDefect, markAsRepaired- UI : Fiori Elements (List Report + Object Page)Projet 2 : Application de demande de conges (moyen)
Modele de donnees :- Employee (ID, Name, Department, VacationDays)- LeaveRequest (ID, EmployeeId, StartDate, EndDate, Type, Status, Approver)
Fonctionnalites :- CRUD pour LeaveRequest- Validations : - EndDate apres StartDate - Assez de jours de conges disponibles - Pas de chevauchements avec d'autres demandes- Determinations : - Calcul auto des LeaveDays - Mise a jour Employee.VacationDays a l'approbation- Actions : - approve, reject, cancel- Active Draft (sauvegarde intermediaire)- Notification email (via hook save_modified)- UI : Fiori Elements avec Actions customProjet 3 : Gestion des notes de frais (difficile)
Modele de donnees :- ExpenseReport (ID, EmployeeId, TripDate, TotalAmount, Status)- ExpenseItem (ID, ReportId, Date, Category, Amount, Receipt)- Approval (ID, ReportId, ApproverLevel, Approver, Status, Comments)
Fonctionnalites :- Composition : Report → Items- Processus d'approbation multi-niveaux- Validations : - Justificatifs pour Items > 100 EUR - Verification budget contre centre de couts- Determinations : - Calcul auto TotalAmount - Definir l'approbateur suivant- Actions : - submit, approve, reject, requestChanges- Business Events : ReportSubmitted, ReportApproved- Integration : Generation PDF (Upload justificatifs)- Custom Entity : Conversion de devises (via API)- Autorisation : Voir uniquement ses propres rapports (DCL)- UI : Fiori Elements custom (Freestyle pour upload justificatifs)Calendrier :
- Projet 1 : 1 semaine
- Projet 2 : 2-3 semaines
- Projet 3 : 4-5 semaines
4.2 Compte SAP BTP Trial (GRATUIT)
# 1. S'inscrire a SAP BTP Trial (gratuit pendant 90 jours)https://cockpit.hanatrial.ondemand.com
# 2. Provisionner ABAP Environment (Steampunk)BTP Cockpit → Services → ABAP Environment → Create Instance
# 3. Connecter Eclipse ADTNew ABAP Project → Entrer l'URL de l'instance de service
# 4. Developper votre propre projet RAP !→ Systeme ABAP Cloud complet, gratuit !Tutoriel : /sap-btp-trial-account-create/
4.3 Certifications
SAP Certified Development Associate - SAP BTP, ABAP Environment
Themes :
- Langage ABAP Cloud
- Vues CDS
- RAP (Managed et Unmanaged)
- Services OData
- Fiori Elements
- Tests unitaires
Preparation :
- SAP Learning Hub (40EUR/mois) : Formations officielles
- Livres SAP Press : “ABAP RESTful Application Programming Model”
- Preparation examen : SAP Learning Room (questions d’entrainement)
Cout : ~500EUR Validite : Illimitee (mais nouvelles versions tous les 2-3 ans)
Valeur : Tres valorisee sur le marche du travail
Ressources gratuites
Cours en ligne
-
openSAP (gratuit !)
- “Building Apps with RAP”
- “ABAP Platform Introduction”
- “ABAP RESTful Application Programming Model”
-
YouTube SAP Developers (gratuit !)
- Tutoriels RAP
- Bases ABAP Cloud
- Videos pratiques
-
Communaute SAP (gratuit !)
- community.sap.com/topics/abap
- Blogs, Tutoriels, Q&A
Livres (Investissement)
-
“ABAP RESTful Application Programming Model” (SAP Press, ~70EUR)
- Indispensable pour RAP
-
“Core Data Services for ABAP” (SAP Press, ~70EUR)
- Approfondissement des vues CDS
-
“ABAP to the Future” (SAP Press, ~50EUR)
- Patterns ABAP modernes
Communautes et Reseau
- LinkedIn : Groupes communaute SAP ABAP
- GitHub : github.com/SAP-samples
- Stack Overflow : Tags
[abap]+[sap-cloud-platform] - Discord/Slack : Groupes developpeurs SAP
Carriere et Salaire
Salaires ABAP Cloud (France, 2025)
| Niveau | Experience | Salaire (Median) |
|---|---|---|
| Junior | 0-2 ans | 38 000 - 48 000 EUR |
| Intermediaire | 2-5 ans | 48 000 - 65 000 EUR |
| Senior | 5-10 ans | 65 000 - 85 000 EUR |
| Lead/Architecte | 10+ ans | 85 000 - 110 000+ EUR |
| Freelance | variable | 500 - 900 EUR/jour |
Prime pour competences ABAP Cloud : +15-25% vs Classic ABAP
Titres de poste
- Developpeur ABAP Cloud
- Developpeur SAP BTP ABAP
- Developpeur RAP
- Developpeur S/4HANA Cloud
- Developpeur Full Stack SAP Fiori / ABAP
Possibilites de teletravail
Tres bonnes (80%+ des postes compatibles teletravail a partir de 2025)
Notes importantes / Bonnes pratiques
- Pas tout a la fois : Focus sur un domaine (p.ex. d’abord RAP, ensuite Fiori)
- Pratique > Theorie : 80% d’exercices pratiques, 20% de lecture/videos
- Utiliser le compte Trial : SAP BTP Trial est gratuit - aucune raison de ne pas s’exercer !
- Utiliser activement la communaute : Poser des questions, lire des blogs, reseauter
- Projet personnel : Repository GitHub avec projet RAP = Portfolio pour les candidatures
- Apprentissage continu : ABAP Cloud evolue rapidement - rester a jour !
- Ne pas oublier Classic ABAP : Beaucoup d’entreprises ont du code legacy a migrer
- Comprendre Clean Core : Pas seulement RAP, mais aussi le “Pourquoi” et le contexte strategique
- Certification optionnelle : Experience pratique > Certificat (mais le certificat aide)
- Patience : 6-12 mois est realiste - ne pas se decourager !
Ressources supplementaires
- Definition ABAP Cloud : /abap-cloud-definition/
- Bases RAP : /rap-basics/
- Strategie Clean Core : /clean-core-strategie/
- Migration Classic vers Cloud : /migration-classic-zu-abap-cloud/
- VS Code pour ABAP Cloud : /vscode-abap-cloud/