Devenir developpeur ABAP Cloud : Le parcours d apprentissage complet 2025

Catégorie
General
Publié
Auteur
Johannes

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 interfaces
INTERFACE 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.
" Heritage
CLASS zcl_base DEFINITION ABSTRACT.
PUBLIC SECTION.
METHODS process ABSTRACT.
ENDCLASS.
CLASS zcl_child DEFINITION INHERITING FROM zcl_base.
PUBLIC SECTION.
METHODS process REDEFINITION.
ENDCLASS.
" Polymorphisme
DATA(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 :

  1. Implementez une strategie basee sur des interfaces (p.ex. differents calculs de remise)
  2. Creez une classe de base abstraite avec heritage
  3. 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 :

Terminal window
# 1. Installer Eclipse
# https://tools.hana.ondemand.com/#abap
# 2. Plugin ABAP Development Tools
Help Install New Software
https://tools.hana.ondemand.com/latest
# 3. Creer un projet ABAP
File New ABAP Project
System: [Votre systeme S/4HANA ou BTP]

Raccourcis indispensables :

Ctrl+Space Auto-completion
Ctrl+1 Quick Fix
F3 Naviguer vers la definition
Ctrl+Shift+G Trouver les references
Ctrl+Shift+F Formater le code
Ctrl+/ Commenter/Decommenter
F8 Activer
Ctrl+F11 Executer

Ressources 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 :

Exercices :

  1. Creez des vues CDS pour vos tables preferees (VBAK, EKKO, etc.)
  2. Implementez des associations (1:n, n:m)
  3. 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 :

Exercices :

  1. Ecrivez des tests pour des classes existantes
  2. Pratiquez le TDD : Test d’abord, puis implementation
  3. 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

  1. Jour 1 : Modele de donnees

    • Tables : ZTRAVEL, ZBOOKING
    • Vues CDS : ZI_TRAVEL, ZI_BOOKING
  2. Jour 2 : Behavior Definition

    • Operations CRUD
    • Proprietes de champs (readonly, mandatory)
    • Associations
  3. Jour 3 : Validations et Determinations

    • validateDates
    • validateCustomer
    • setInitialStatus
    • calculateTotal
  4. Jour 4 : Actions

    • acceptTravel
    • rejectTravel
  5. 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 :

" READ
READ ENTITIES OF zi_travel
ENTITY Travel ALL FIELDS WITH VALUE #( ( TravelId = '00001' ) )
RESULT DATA(lt_travel).
" CREATE
MODIFY ENTITIES OF zi_travel
ENTITY Travel CREATE FIELDS ( AgencyId CustomerId )
WITH VALUE #( ( %cid = 'CID_1' AgencyId = '001' CustomerId = '042' ) )
MAPPED DATA(mapped).
COMMIT ENTITIES.
" UPDATE
MODIFY ENTITIES OF zi_travel
ENTITY Travel UPDATE FIELDS ( Status )
WITH VALUE #( ( TravelId = '00001' Status = 'A' ) ).
COMMIT ENTITIES.
" DELETE
MODIFY ENTITIES OF zi_travel
ENTITY Travel DELETE FROM VALUE #( ( TravelId = '00001' ) ).
COMMIT ENTITIES.

Ressources d’apprentissage :

Exercices :

  1. Implementez toutes les operations CRUD
  2. Utilisez EML dans un report
  3. 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 Binding
2. Binding Type : OData V4 - UI
3. Service Definition : ZUI_TRAVEL_O4
4. Publish
5. Preview → L'application Fiori Elements s'ouvre

Ressources 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 :

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 custom

Projet 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)

Terminal window
# 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 ADT
New 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

  1. openSAP (gratuit !)

    • “Building Apps with RAP”
    • “ABAP Platform Introduction”
    • “ABAP RESTful Application Programming Model”
  2. YouTube SAP Developers (gratuit !)

    • Tutoriels RAP
    • Bases ABAP Cloud
    • Videos pratiques
  3. Communaute SAP (gratuit !)

Livres (Investissement)

  1. “ABAP RESTful Application Programming Model” (SAP Press, ~70EUR)

    • Indispensable pour RAP
  2. “Core Data Services for ABAP” (SAP Press, ~70EUR)

    • Approfondissement des vues CDS
  3. “ABAP to the Future” (SAP Press, ~50EUR)

    • Patterns ABAP modernes

Communautes et Reseau

  1. LinkedIn : Groupes communaute SAP ABAP
  2. GitHub : github.com/SAP-samples
  3. Stack Overflow : Tags [abap] + [sap-cloud-platform]
  4. Discord/Slack : Groupes developpeurs SAP

Carriere et Salaire

Salaires ABAP Cloud (France, 2025)

NiveauExperienceSalaire (Median)
Junior0-2 ans38 000 - 48 000 EUR
Intermediaire2-5 ans48 000 - 65 000 EUR
Senior5-10 ans65 000 - 85 000 EUR
Lead/Architecte10+ ans85 000 - 110 000+ EUR
Freelancevariable500 - 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