abapGit ist das wichtigste Open-Source-Tool für die Versionskontrolle von ABAP-Code. In diesem Tutorial lernst du, wie du abapGit installierst, konfigurierst und effektiv für die professionelle Code-Verwaltung nutzt - sowohl für klassisches ABAP als auch für ABAP Cloud Entwicklung.
Was ist abapGit?
abapGit ist ein Open-Source Git Client für ABAP, der vollständig in ABAP geschrieben ist. Er ermöglicht es, ABAP-Code in Git-Repositories zu speichern, zu versionieren und mit anderen Entwicklern zu teilen.
Warum ist abapGit so wichtig?
In der klassischen SAP-Welt war Versionskontrolle immer ein Sorgenkind:
- Transportwesen ist gut für Deployments, aber schlecht für kollaborative Entwicklung
- Versionen im System sind begrenzt und nicht branchbar
- Code-Reviews waren praktisch unmöglich
- Backup und Recovery waren umständlich
abapGit löst all diese Probleme, indem es ABAP-Objekte in standardisierte Git-Repositories überführt:
| Vorher (ohne abapGit) | Nachher (mit abapGit) |
|---|---|
| Versionen nur im SAP-System | Vollständige Git-Historie |
| Kein Branching | Feature Branches, Bugfix Branches |
| Schwierige Code-Reviews | Pull Requests mit Diff-Ansicht |
| Transportbasiertes Teilen | Clone und Push wie bei jeder anderen Sprache |
| Vendor Lock-in | Code auf GitHub/GitLab sicherbar |
abapGit vs. gCTS
Eine häufige Frage: Wann nutze ich abapGit und wann gCTS?
| Kriterium | abapGit | gCTS |
|---|---|---|
| Zielgruppe | Entwickler | IT Operations |
| Fokus | Code-Versionierung | Transport-Automatisierung |
| Git-Integration | Vollständig (Push/Pull) | Nur Export |
| Open Source | ✅ Ja | ❌ Nein (SAP Produkt) |
| Kosten | Kostenlos | SAP Lizenz erforderlich |
| CI/CD Pipeline | Manuell einrichtbar | Native SAP Integration |
| Empfehlung | Entwicklung & Collaboration | Enterprise Deployments |
Kurzfassung: abapGit für Entwickler, gCTS für Enterprise-CI/CD. Beide können kombiniert werden.
Installation und Einrichtung
Voraussetzungen
- SAP NetWeaver 7.02 oder höher (für klassisches ABAP)
- ABAP Environment auf SAP BTP (für ABAP Cloud)
- GitHub, GitLab, Azure DevOps oder anderer Git-Provider Account
- ADT (Eclipse) für ABAP Cloud oder SE80/SE38 für klassisches ABAP
Installation auf On-Premise Systemen
Schritt 1: abapGit Report herunterladen
Die aktuellste Version findest du auf github.com/abapGit/abapGit.
- Navigiere zu Releases
- Lade die Datei
zabapgit_standalone.prog.abapherunter
Schritt 2: Report im SAP-System erstellen
" Transaktion SE38 oder SE80" Neuen Report anlegen: ZABAPGIT_STANDALONE" Oder: ZABAPGIT (wenn du das volle Paket installieren möchtest)- Öffne SE38 (ABAP Editor)
- Erstelle einen neuen Report:
ZABAPGIT_STANDALONE - Kopiere den kompletten Code aus der heruntergeladenen Datei
- Aktiviere den Report
Schritt 3: Erste Ausführung
" Starte den ReportREPORT zabapgit_standalone.Beim ersten Start wirst du aufgefordert:
- SSL-Zertifikate zu installieren (für HTTPS-Verbindungen)
- Proxy-Einstellungen zu konfigurieren (falls vorhanden)
Installation in ABAP Cloud (SAP BTP)
In ABAP Cloud ist die Situation anders: abapGit ist nicht direkt installierbar, da kein Zugriff auf SE38/SE80 besteht. Stattdessen gibt es zwei Alternativen:
Option 1: abapGit für Eclipse (ADT Plugin)
- Öffne Eclipse mit ADT
- Gehe zu Help → Install New Software
- Füge die Update Site hinzu:
https://eclipse.abapgit.org/updatesite/ - Installiere abapGit for ABAP Development Tools
- Starte Eclipse neu
Option 2: abapGit Repository Interface (ab SAP BTP ABAP Environment 2302)
SAP stellt ein natives Repository-Interface bereit:
- Öffne ADT
- Rechtsklick auf dein ABAP Cloud Projekt
- Configure → Link ABAP Repository to Git
Diese Integration ist noch im Aufbau, bietet aber native SAP-Unterstützung.
Git-Provider Konfiguration
SSH-Key einrichten (empfohlen)
Für sichere Kommunikation mit GitHub/GitLab:
# SSH-Key generieren (auf deinem lokalen Rechner)
# Öffentlichen Schlüssel anzeigencat ~/.ssh/id_ed25519.pubDen öffentlichen Schlüssel fügst du dann in deinem Git-Provider unter Settings → SSH Keys hinzu.
Personal Access Token (Alternative)
Für HTTPS-Zugriff:
- GitHub: Settings → Developer Settings → Personal Access Tokens
- GitLab: Preferences → Access Tokens
- Token mit
repoBerechtigung erstellen - Token in abapGit als Passwort verwenden
Grundlegende Workflows
Repository klonen (Clone)
Der erste Schritt ist das Klonen eines bestehenden Repositories in dein SAP-System.
In abapGit Standalone:
- Starte
ZABAPGIT_STANDALONE - Klicke auf + Clone
- Gib die Repository-URL ein:
https://github.com/username/repo.git - Wähle das Ziel-Paket (z.B.
ZABAP_GIT_DEMO) - Klicke auf Clone
In ADT (Eclipse):
- Öffne die View abapGit Repositories (Window → Show View)
- Klicke auf + (Link Repository)
- Wähle dein ABAP-Projekt und gib die URL ein
- Wähle oder erstelle ein Paket
Änderungen stagen (Stage)
Nach dem Bearbeiten von ABAP-Objekten müssen Änderungen für den Commit vorbereitet werden:
- Öffne abapGit
- Wähle dein Repository
- Klicke auf Stage
- Du siehst eine Liste aller geänderten Objekte
- Wähle die Objekte aus, die du committen möchtest
Typische Ansicht:
Änderungen:[x] ZCL_MY_CLASS (Modified)[x] ZIF_MY_INTERFACE (Modified)[ ] ZCL_TEST_CLASS (Modified) ← Nicht committen[x] ZABAP_PROGRAM (New)Commit erstellen
Ein Commit speichert deine Änderungen in der Git-Historie.
Best Practices für Commit Messages:
feat: Neue Validierung für Kundennummer implementiert
- Prüfung auf gültige Kundennummer in ZCL_CUSTOMER_VALIDATION- Unit Tests für Randfälle ergänzt- Fehlermeldung lokalisiert (DE/EN)
Refs: JIRA-1234Konventionen:
feat:Neue Funktionalitätfix:Bugfixrefactor:Code-Refactoring ohne Funktionsänderungdocs:Dokumentationtest:Tests hinzugefügt oder korrigiert
Push zu Remote
Nach dem Commit müssen die Änderungen zum Remote-Repository gepusht werden:
- Klicke auf Push
- Authentifiziere dich (SSH-Key oder Token)
- Bestätige den Push
Pushing to origin/main...✓ 3 objects pushed successfullyPull vom Remote
Um Änderungen von anderen Entwicklern zu holen:
- Klicke auf Pull
- abapGit vergleicht Remote und lokale Version
- Bei Konflikten: Manuelle Auflösung erforderlich
Achtung: Pull überschreibt lokale Objekte! Sichere vorher deine Änderungen.
Integration mit GitHub und GitLab
GitHub Repository einrichten
Schritt 1: Neues Repository erstellen
# Auf github.com oder via CLIgh repo create mein-abap-projekt --privateSchritt 2: Repository-Struktur verstehen
abapGit erzeugt eine standardisierte Ordnerstruktur:
mein-abap-projekt/├── 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.mdDateikonventionen:
.clas.abap- Klassen-Implementation.clas.locals_def.abap- Lokale Typen/Konstanten.clas.locals_imp.abap- Lokale Klassen.clas.testclasses.abap- ABAP Unit Tests.intf.abap- Interface-Definition.prog.abap- Programm/Report.xml- Metadaten (Paket, Beschreibung, etc.)
GitLab Integration
GitLab funktioniert identisch zu GitHub. Wichtige Unterschiede:
# GitLab Repository URLhttps://gitlab.com/username/mein-abap-projekt.git
# GitLab Personal Access TokenPreferences → Access Tokens → Scope: api, read_repository, write_repositoryAzure DevOps Integration
Für Microsoft-Umgebungen:
# Azure DevOps Repository URLhttps://dev.azure.com/organization/project/_git/repository
# Personal Access TokenUser Settings → Personal Access Tokens → Scope: Code (Read & Write)Code-Snippets für typische Szenarien
Szenario 1: Neues Projekt initialisieren
" 1. Erstelle ein neues Paket in SE80/ADT" Paket: ZABAP_GIT_DEMO" Transportauftrag: Lokal (für Entwicklung)
" 2. Erstelle initiale ObjekteCLASS 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( 'Hello from abapGit managed project!' ). ENDMETHOD.ENDCLASS.
" 3. In abapGit: Repository verlinken und ersten Commit machenSzenario 2: Feature Branch Workflow
# Auf deinem lokalen Rechner (nach Clone)git checkout -b feature/neue-validierung
# Oder direkt in abapGit:# 1. Repository → Settings → Default Branch# 2. Manuell Branch wechseln vor dem PullIm SAP-System:
- Pull den neuen Branch
- Entwickle dein Feature
- Stage und Commit
- Push zum Feature Branch
- Erstelle Pull Request auf GitHub/GitLab
Szenario 3: Konfliktauflösung
Wenn zwei Entwickler die gleiche Klasse geändert haben:
" Datei: zcl_shared_class.clas.abap
" <<<<<<< HEAD (deine Änderung)METHOD calculate_total. rv_result = iv_quantity * iv_price * ( 1 - iv_discount ).ENDMETHOD." =======" >>>>>>> origin/main (Remote-Änderung)METHOD calculate_total. rv_result = iv_quantity * iv_price. rv_result = rv_result - ( rv_result * iv_discount / 100 ).ENDMETHOD.Lösung:
- Entscheide, welche Version korrekt ist (oder kombiniere beide)
- Entferne die Konfliktmarker
- Teste die Änderung
- Commit und Push
Szenario 4: .abapgit.xml konfigurieren
Die Projektkonfiguration wird in .abapgit.xml gespeichert:
<?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>Wichtige Einstellungen:
MASTER_LANGUAGE: D für Deutsch, E für EnglischFOLDER_LOGIC: PREFIX (empfohlen) oder FULLIGNORE: Dateien, die nicht ins SAP-System importiert werden
Best Practices für Team-Arbeit
1. Branching-Strategie definieren
Empfohlenes Modell für ABAP-Projekte:
main (oder master)├── develop│ ├── feature/US-001-kunde-anlegen│ ├── feature/US-002-material-suche│ └── bugfix/FIX-042-preisberechnung└── release/1.0.0Regeln:
main: Nur stabile, getestete Releasesdevelop: Integration aller Featuresfeature/*: Ein Branch pro User Storybugfix/*: Schnelle Fehlerbehebungenrelease/*: Release-Kandidaten
2. Pull Request Workflow etablieren
- Feature entwickeln im eigenen Branch
- Pull Request erstellen auf GitHub/GitLab
- Code Review durch mindestens einen Kollegen
- CI/CD Checks (Syntax, ABAP Unit Tests)
- Merge nach Genehmigung
- Branch löschen nach Merge
3. Code Review Checkliste für ABAP
## ABAP Code Review Checkliste
### Funktionalität- [ ] Erfüllt der Code die Anforderungen?- [ ] Sind Randfälle behandelt?
### Code-Qualität- [ ] Clean ABAP Prinzipien befolgt?- [ ] Sprechende Variablennamen?- [ ] Keine Magic Numbers?
### Performance- [ ] Keine SELECT * ohne Einschränkung?- [ ] Richtige Indexnutzung?- [ ] Bulk-Operationen wo möglich?
### Tests- [ ] Unit Tests vorhanden?- [ ] Testabdeckung ausreichend?
### Dokumentation- [ ] Öffentliche Methoden dokumentiert?- [ ] Komplexe Logik erklärt?4. Commit-Konventionen einhalten
Nutze Conventional Commits für konsistente Historie:
<type>(<scope>): <subject>
<body>
<footer>Beispiele:
feat(customer): Validierung für internationale Kundennummern
- ISO 3166-1 Ländercode-Prüfung implementiert- VAT-ID Validierung für EU-Kunden- Unit Tests für alle Ländervarianten
Closes #42fix(pricing): Division durch Null bei 0% Rabatt
Die Preisberechnung brach ab, wenn ein Rabatt von 0%angegeben wurde. Jetzt wird der Fall korrekt behandelt.
Fixes #575. .gitignore für ABAP-Projekte
Erstelle eine sinnvolle .gitignore:
# OS-spezifische Dateien.DS_StoreThumbs.db
# IDE-Dateien.idea/*.iml
# Lokale Konfiguration.local/
# Generierte Dateien*.log6. Dokumentation im Repository
README.md Vorlage:
# Projekt: Kundenmanagement Erweiterung
## ÜbersichtDieses Repository enthält Custom-Erweiterungen für das SD-Modul.
## Installation1. Klone das Repository in Paket `ZCUSTOMER_EXT`2. Aktiviere alle Objekte3. Führe den Setup-Report `ZCUSTOMER_SETUP` aus
## Abhängigkeiten- SAP S/4HANA 2023 oder höher- Paket `ZABAP_UTILS` (siehe anderes Repo)
## Entwicklung1. Feature Branch erstellen2. Änderungen implementieren3. Unit Tests ergänzen4. Pull Request erstellen
## KontaktMaintainer: [email protected]Troubleshooting
Problem: SSL-Zertifikatsfehler
Error: SSL certificate problem: unable to get local issuer certificateLösung:
- Transaktion
STRUSTöffnen - SSL Client Standard → Zertifikat hinzufügen
- GitHub/GitLab Root-Zertifikat importieren
Problem: Proxy-Verbindungsfehler
Error: Could not connect to proxyLösung: In abapGit → Settings → Proxy:
Proxy Host: proxy.firma.deProxy Port: 8080Bypass: localhost,*.intranet.firma.deProblem: Objekt kann nicht deserialisiert werden
Error: Object ZCL_EXAMPLE could not be deserializedMögliche Ursachen:
- Fehlende Abhängigkeiten (andere Klassen/Interfaces)
- Inkompatible SAP-Version
- Korrupte XML-Metadaten
Lösung:
- Abhängigkeiten zuerst importieren
.xmlDatei prüfen und ggf. korrigieren- Im Notfall: Objekt manuell anlegen, dann Pull wiederholen
Problem: Push wird abgelehnt
Error: rejected - non-fast-forwardLösung:
# Lokal: Änderungen fetchen und rebasengit pull --rebase origin main
# In abapGit: Erst Pull, dann Konflikte lösen, dann PushFazit
abapGit revolutioniert die ABAP-Entwicklung, indem es moderne Versionskontrolle in die SAP-Welt bringt. Die wichtigsten Takeaways:
- abapGit ist unverzichtbar für professionelle ABAP-Entwicklung
- Git-Workflows (Branching, Pull Requests) funktionieren auch mit ABAP
- Team-Kollaboration wird durch Code Reviews massiv verbessert
- Backup und Portabilität - dein Code gehört dir, nicht dem SAP-System
Nächste Schritte:
- ✅ abapGit installieren (Standalone oder ADT Plugin)
- ✅ Erstes Repository klonen oder erstellen
- ✅ Feature Branch Workflow im Team etablieren
- ✅ Code Reviews über Pull Requests einführen
Weiterführende Artikel
- gCTS & CI/CD in ABAP Cloud - Enterprise DevOps Pipeline
- Clean ABAP: Regeln und Best Practices - Code-Qualität
- ABAP Cloud Zertifizierung 2026 - Karriere-Boost
- ABAP Cloud auf BTP Trial - Kostenlos starten