abapGit est l’outil open source le plus important pour le contrôle de version du code ABAP. Dans ce tutoriel, vous apprendrez à installer, configurer et utiliser efficacement abapGit pour la gestion professionnelle du code - tant pour ABAP classique que pour le développement ABAP Cloud.
Qu’est-ce qu’abapGit ?
abapGit est un client Git open source pour ABAP, entièrement écrit en ABAP. Il permet de stocker, versionner et partager du code ABAP dans des dépôts Git avec d’autres développeurs.
Pourquoi abapGit est-il si important ?
Dans le monde SAP classique, le contrôle de version a toujours été un point faible :
- Le système de transport est bon pour les déploiements, mais mauvais pour le développement collaboratif
- Les versions dans le système sont limitées et ne permettent pas de branches
- Les revues de code étaient pratiquement impossibles
- La sauvegarde et la récupération étaient compliquées
abapGit résout tous ces problèmes en transférant les objets ABAP dans des dépôts Git standardisés :
| Avant (sans abapGit) | Après (avec abapGit) |
|---|---|
| Versions uniquement dans le système SAP | Historique Git complet |
| Pas de branching | Feature Branches, Bugfix Branches |
| Revues de code difficiles | Pull Requests avec vue diff |
| Partage basé sur les transports | Clone et Push comme tout autre langage |
| Vendor Lock-in | Code sauvegardable sur GitHub/GitLab |
abapGit vs. gCTS
Une question fréquente : Quand utiliser abapGit et quand gCTS ?
| Critère | abapGit | gCTS |
|---|---|---|
| Public cible | Développeurs | IT Operations |
| Focus | Versioning du code | Automatisation des transports |
| Intégration Git | Complète (Push/Pull) | Export uniquement |
| Open Source | Oui | Non (Produit SAP) |
| Coût | Gratuit | Licence SAP requise |
| Pipeline CI/CD | Configurable manuellement | Intégration SAP native |
| Recommandation | Développement & Collaboration | Déploiements Enterprise |
En résumé : abapGit pour les développeurs, gCTS pour le CI/CD Enterprise. Les deux peuvent être combinés.
Installation et configuration
Prérequis
- SAP NetWeaver 7.02 ou supérieur (pour ABAP classique)
- ABAP Environment sur SAP BTP (pour ABAP Cloud)
- Compte GitHub, GitLab, Azure DevOps ou autre fournisseur Git
- ADT (Eclipse) pour ABAP Cloud ou SE80/SE38 pour ABAP classique
Installation sur systèmes On-Premise
Étape 1 : Télécharger le report abapGit
La version la plus récente se trouve sur github.com/abapGit/abapGit.
- Naviguez vers Releases
- Téléchargez le fichier
zabapgit_standalone.prog.abap
Étape 2 : Créer le report dans le système SAP
" Transaction SE38 ou SE80" Créer un nouveau report : ZABAPGIT_STANDALONE" Ou : ZABAPGIT (si vous voulez installer le package complet)- Ouvrez SE38 (Éditeur ABAP)
- Créez un nouveau report :
ZABAPGIT_STANDALONE - Copiez le code complet du fichier téléchargé
- Activez le report
Étape 3 : Première exécution
" Lancez le reportREPORT zabapgit_standalone.Au premier lancement, vous serez invité à :
- Installer les certificats SSL (pour les connexions HTTPS)
- Configurer les paramètres proxy (si présent)
Installation dans ABAP Cloud (SAP BTP)
Dans ABAP Cloud, la situation est différente : abapGit n’est pas directement installable, car il n’y a pas d’accès à SE38/SE80. À la place, il existe deux alternatives :
Option 1 : abapGit pour Eclipse (Plugin ADT)
- Ouvrez Eclipse avec ADT
- Allez dans Help → Install New Software
- Ajoutez l’Update Site :
https://eclipse.abapgit.org/updatesite/ - Installez abapGit for ABAP Development Tools
- Redémarrez Eclipse
Option 2 : Interface Repository abapGit (à partir de SAP BTP ABAP Environment 2302)
SAP fournit une interface de dépôt native :
- Ouvrez ADT
- Clic droit sur votre projet ABAP Cloud
- Configure → Link ABAP Repository to Git
Cette intégration est encore en développement, mais offre un support SAP natif.
Configuration du fournisseur Git
Configurer une clé SSH (recommandé)
Pour une communication sécurisée avec GitHub/GitLab :
# Générer une clé SSH (sur votre machine locale)
# Afficher la clé publiquecat ~/.ssh/id_ed25519.pubAjoutez ensuite la clé publique dans votre fournisseur Git sous Settings → SSH Keys.
Personal Access Token (Alternative)
Pour l’accès HTTPS :
- GitHub : Settings → Developer Settings → Personal Access Tokens
- GitLab : Preferences → Access Tokens
- Créez un token avec la permission
repo - Utilisez le token comme mot de passe dans abapGit
Workflows de base
Cloner un dépôt (Clone)
La première étape est de cloner un dépôt existant dans votre système SAP.
Dans abapGit Standalone :
- Lancez
ZABAPGIT_STANDALONE - Cliquez sur + Clone
- Entrez l’URL du dépôt :
https://github.com/username/repo.git - Choisissez le package cible (ex.
ZABAP_GIT_DEMO) - Cliquez sur Clone
Dans ADT (Eclipse) :
- Ouvrez la vue abapGit Repositories (Window → Show View)
- Cliquez sur + (Link Repository)
- Sélectionnez votre projet ABAP et entrez l’URL
- Choisissez ou créez un package
Mettre en staging (Stage)
Après avoir modifié des objets ABAP, les modifications doivent être préparées pour le commit :
- Ouvrez abapGit
- Sélectionnez votre dépôt
- Cliquez sur Stage
- Vous voyez une liste de tous les objets modifiés
- Sélectionnez les objets que vous voulez commiter
Vue typique :
Modifications :[x] ZCL_MY_CLASS (Modified)[x] ZIF_MY_INTERFACE (Modified)[ ] ZCL_TEST_CLASS (Modified) ← Ne pas commiter[x] ZABAP_PROGRAM (New)Créer un commit
Un commit enregistre vos modifications dans l’historique Git.
Bonnes pratiques pour les messages de commit :
feat: Nouvelle validation pour le numéro client implémentée
- Vérification du numéro client dans ZCL_CUSTOMER_VALIDATION- Tests unitaires pour les cas limites ajoutés- Message d'erreur localisé (DE/EN)
Refs: JIRA-1234Conventions :
feat:Nouvelle fonctionnalitéfix:Correction de bugrefactor:Refactoring sans changement de fonctionnalitédocs:Documentationtest:Tests ajoutés ou corrigés
Push vers Remote
Après le commit, les modifications doivent être poussées vers le dépôt distant :
- Cliquez sur Push
- Authentifiez-vous (clé SSH ou token)
- Confirmez le push
Pushing to origin/main...✓ 3 objects pushed successfullyPull depuis Remote
Pour récupérer les modifications des autres développeurs :
- Cliquez sur Pull
- abapGit compare la version distante et locale
- En cas de conflits : résolution manuelle requise
Attention : Pull écrase les objets locaux ! Sauvegardez d’abord vos modifications.
Intégration avec GitHub et GitLab
Configurer un dépôt GitHub
Étape 1 : Créer un nouveau dépôt
# Sur github.com ou via CLIgh repo create mon-projet-abap --privateÉtape 2 : Comprendre la structure du dépôt
abapGit génère une structure de dossiers standardisée :
mon-projet-abap/├── src/│ ├── zcl_my_class.clas.abap│ ├── zcl_my_class.clas.locals_def.abap│ ├── zcl_my_class.clas.locals_imp.abap│ ├── zcl_my_class.clas.testclasses.abap│ ├── zcl_my_class.clas.xml│ ├── zif_my_interface.intf.abap│ ├── zif_my_interface.intf.xml│ └── zmy_program.prog.abap├── .abapgit.xml└── README.mdConventions de fichiers :
.clas.abap- Implémentation de classe.clas.locals_def.abap- Types/constantes locaux.clas.locals_imp.abap- Classes locales.clas.testclasses.abap- Tests ABAP Unit.intf.abap- Définition d’interface.prog.abap- Programme/Report.xml- Métadonnées (package, description, etc.)
Intégration GitLab
GitLab fonctionne de manière identique à GitHub. Différences importantes :
# URL du dépôt GitLabhttps://gitlab.com/username/mon-projet-abap.git
# Personal Access Token GitLabPreferences → Access Tokens → Scope: api, read_repository, write_repositoryIntégration Azure DevOps
Pour les environnements Microsoft :
# URL du dépôt Azure DevOpshttps://dev.azure.com/organization/project/_git/repository
# Personal Access TokenUser Settings → Personal Access Tokens → Scope: Code (Read & Write)Extraits de code pour scénarios typiques
Scénario 1 : Initialiser un nouveau projet
" 1. Créez un nouveau package dans SE80/ADT" Package : ZABAP_GIT_DEMO" Ordre de transport : Local (pour le développement)
" 2. Créez les objets initiauxCLASS zcl_demo_application DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES if_oo_adt_classrun.ENDCLASS.
CLASS zcl_demo_application IMPLEMENTATION. METHOD if_oo_adt_classrun~main. out->write( 'Bonjour depuis un projet géré par abapGit !' ). ENDMETHOD.ENDCLASS.
" 3. Dans abapGit : Lier le dépôt et faire le premier commitScénario 2 : Workflow Feature Branch
# Sur votre machine locale (après clone)git checkout -b feature/nouvelle-validation
# Ou directement dans abapGit :# 1. Repository → Settings → Default Branch# 2. Changer manuellement de branche avant le PullDans le système SAP :
- Pull la nouvelle branche
- Développez votre fonctionnalité
- Stage et Commit
- Push vers la feature branch
- Créez une Pull Request sur GitHub/GitLab
Scénario 3 : Résolution de conflits
Quand deux développeurs ont modifié la même classe :
" Fichier : zcl_shared_class.clas.abap
" <<<<<<< HEAD (votre modification)METHOD calculate_total. rv_result = iv_quantity * iv_price * ( 1 - iv_discount ).ENDMETHOD." =======" >>>>>>> origin/main (modification distante)METHOD calculate_total. rv_result = iv_quantity * iv_price. rv_result = rv_result - ( rv_result * iv_discount / 100 ).ENDMETHOD.Solution :
- Décidez quelle version est correcte (ou combinez les deux)
- Supprimez les marqueurs de conflit
- Testez la modification
- Commit et Push
Scénario 4 : Configurer .abapgit.xml
La configuration du projet est stockée dans .abapgit.xml :
<?xml version="1.0" encoding="utf-8"?><asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:values> <DATA> <MASTER_LANGUAGE>D</MASTER_LANGUAGE> <STARTING_FOLDER>/src/</STARTING_FOLDER> <FOLDER_LOGIC>PREFIX</FOLDER_LOGIC> <IGNORE> <item>/.gitignore</item> <item>/LICENSE</item> <item>/README.md</item> <item>/.github/</item> </IGNORE> </DATA> </asx:values></asx:abap>Paramètres importants :
MASTER_LANGUAGE: D pour Allemand, E pour Anglais, F pour FrançaisFOLDER_LOGIC: PREFIX (recommandé) ou FULLIGNORE: Fichiers qui ne seront pas importés dans le système SAP
Bonnes pratiques pour le travail en équipe
1. Définir une stratégie de branches
Modèle recommandé pour les projets ABAP :
main (ou master)├── develop│ ├── feature/US-001-creer-client│ ├── feature/US-002-recherche-materiel│ └── bugfix/FIX-042-calcul-prix└── release/1.0.0Règles :
main: Uniquement les releases stables et testéesdevelop: Intégration de toutes les fonctionnalitésfeature/*: Une branche par User Storybugfix/*: Corrections rapidesrelease/*: Candidats release
2. Établir un workflow Pull Request
- Développer la fonctionnalité dans sa propre branche
- Créer une Pull Request sur GitHub/GitLab
- Revue de code par au moins un collègue
- Vérifications CI/CD (Syntaxe, tests ABAP Unit)
- Merge après approbation
- Supprimer la branche après le merge
3. Checklist de revue de code pour ABAP
## Checklist de revue de code ABAP
### Fonctionnalité- [ ] Le code répond-il aux exigences ?- [ ] Les cas limites sont-ils traités ?
### Qualité du code- [ ] Principes Clean ABAP respectés ?- [ ] Noms de variables parlants ?- [ ] Pas de Magic Numbers ?
### Performance- [ ] Pas de SELECT * sans restriction ?- [ ] Bonne utilisation des index ?- [ ] Opérations en masse où possible ?
### Tests- [ ] Tests unitaires présents ?- [ ] Couverture de test suffisante ?
### Documentation- [ ] Méthodes publiques documentées ?- [ ] Logique complexe expliquée ?4. Respecter les conventions de commit
Utilisez Conventional Commits pour un historique cohérent :
<type>(<scope>): <subject>
<body>
<footer>Exemples :
feat(customer): Validation pour les numéros clients internationaux
- Vérification du code pays ISO 3166-1 implémentée- Validation VAT-ID pour les clients UE- Tests unitaires pour toutes les variantes de pays
Closes #42fix(pricing): Division par zéro avec remise 0%
Le calcul du prix échouait quand une remise de 0%était indiquée. Le cas est maintenant géré correctement.
Fixes #575. .gitignore pour projets ABAP
Créez un .gitignore pertinent :
# Fichiers spécifiques à l'OS.DS_StoreThumbs.db
# Fichiers IDE.idea/*.iml
# Configuration locale.local/
# Fichiers générés*.log6. Documentation dans le dépôt
Template README.md :
# Projet : Extension gestion clients
## AperçuCe dépôt contient des extensions personnalisées pour le module SD.
## Installation1. Clonez le dépôt dans le package `ZCUSTOMER_EXT`2. Activez tous les objets3. Exécutez le report de setup `ZCUSTOMER_SETUP`
## Dépendances- SAP S/4HANA 2023 ou supérieur- Package `ZABAP_UTILS` (voir autre dépôt)
## Développement1. Créer une feature branch2. Implémenter les modifications3. Ajouter les tests unitaires4. Créer une Pull Request
## ContactMainteneur : [email protected]Dépannage
Problème : Erreur de certificat SSL
Error: SSL certificate problem: unable to get local issuer certificateSolution :
- Ouvrir la transaction
STRUST - SSL Client Standard → Ajouter un certificat
- Importer le certificat racine GitHub/GitLab
Problème : Erreur de connexion proxy
Error: Could not connect to proxySolution : Dans abapGit → Settings → Proxy :
Proxy Host: proxy.entreprise.frProxy Port: 8080Bypass: localhost,*.intranet.entreprise.frProblème : L’objet ne peut pas être désérialisé
Error: Object ZCL_EXAMPLE could not be deserializedCauses possibles :
- Dépendances manquantes (autres classes/interfaces)
- Version SAP incompatible
- Métadonnées XML corrompues
Solution :
- Importer d’abord les dépendances
- Vérifier et corriger le fichier
.xmlsi nécessaire - En dernier recours : créer l’objet manuellement, puis répéter le Pull
Problème : Push rejeté
Error: rejected - non-fast-forwardSolution :
# En local : Fetch les modifications et rebasegit pull --rebase origin main
# Dans abapGit : D'abord Pull, puis résoudre les conflits, puis PushConclusion
abapGit révolutionne le développement ABAP en apportant le contrôle de version moderne dans le monde SAP. Les points clés à retenir :
- abapGit est indispensable pour le développement ABAP professionnel
- Les workflows Git (Branching, Pull Requests) fonctionnent aussi avec ABAP
- La collaboration en équipe est massivement améliorée par les revues de code
- Sauvegarde et portabilité - votre code vous appartient, pas au système SAP
Prochaines étapes :
- Installer abapGit (Standalone ou Plugin ADT)
- Cloner ou créer un premier dépôt
- Établir le workflow Feature Branch dans l’équipe
- Introduire les revues de code via Pull Requests
Articles connexes
- gCTS & CI/CD dans ABAP Cloud - Pipeline DevOps Enterprise
- Clean ABAP : Règles et bonnes pratiques - Qualité du code
- Certification ABAP Cloud 2026 - Boost de carrière
- ABAP Cloud sur BTP Trial - Démarrer gratuitement