SAP ABAP Debugging Tipps –
Der komplette Guide 2026
Ob du gerade deinen ersten Breakpoint setzt oder schon Jahre ABAP schreibst — dieser Guide zeigt dir alle Techniken: von Breakpoint-Typen über Watchpoints bis zu Update Debugging, Hintergrundprogrammen und ADT-Eclipse-Tricks. Mit Profi-Shortcuts die echte Zeit sparen.
| Debugger starten | /h im Kommandofeld oder Breakpoint in SE38/SE80 setzen |
| Debugger deaktivieren | /hx im Kommandofeld |
| Wichtigste Shortcuts | F5 (Einzelschritt), F6 (Prozedur überspringen), F7 (Return), F8 (Weiter) |
| Breakpoint-Typen | Session, External (User), Static (BREAK-POINT), Debugger |
| Update Debugging | Debugger Settings → Update Debugging, oder /hs |
| Hintergrundjob debuggen | SM37 → Job auswählen → /JDBG im Kommandofeld |
| Laufenden Job debuggen | SM50 → Prozess auswählen → Programm → Debugging |
| Max. Breakpoints/Watchpoints | 30 Breakpoints + 10 Watchpoints gleichzeitig |
| ADT Eclipse Debugger | F5 = Step Into, F6 = Step Over, F7 = Step Return, F8 = Resume |
01 / Einstieg
01Debugger starten — alle Wege im Überblick
Den ABAP-Debugger zu starten ist einfacher als viele denken. Es gibt mehrere Wege — je nach Situation ist einer davon deutlich schneller.
Weg 1: /h im Kommandofeld
Der schnellste Einstieg: /h in das Kommandofeld (Transaktionsfeld oben links) eingeben und Enter drücken. Daraufhin erscheint unten in der Statusleiste „Debugging eingeschaltet“. Beim nächsten Programm-/Transaktionsaufruf öffnet der Debugger automatisch.
Varianten des /h-Befehls
/h — Normaler Debugger · /hs — System-Debugger (inkl. Update-Debugging) · /ha — Ohne Screen-Handling (überspringt PBO/PAI) · /hx — Debugger wieder deaktivieren
Weg 2: Breakpoint in SE38 / SE80 setzen
Im ABAP Editor auf den linken Rand der gewünschten Zeile doppelklicken. Ein roter Punkt erscheint. Wenn das Programm diese Zeile erreicht, startet der Debugger automatisch. Alternativ: Cursor in die Zeile setzen und Strg+Shift+F12 drücken.
Weg 3: Direkt aus SE38 / SE80 starten
In SE38 unter Programm → Ausführen → Debugging, oder in SE80 per Rechtsklick auf das Programm → Ausführen → Debugging. Nützlich wenn kein spezifischer Breakpoint bekannt ist.
Weg 4: Aus ST22 (Laufzeitfehler)
Nach einem Dump in ST22: Kurzaufriss anzeigen → Direkt aus dem Fehlerbericht in den Debugger springen. Damit kannst du genau die Codezeile untersuchen, die den Fehler verursacht hat.
Niemals im Produktivsystem debuggen
Im Debugger können Datenbankänderungen ausgelöst und Programmzustände verändert werden. Das Setzen von BREAK-POINT-Statements (Static Breakpoints) im Produktiv-Code ist gefährlich — sie halten das Programm für alle User an.
02 / Breakpoints
02Breakpoint-Typen: Session, External, Static & Debugger
Nicht alle Breakpoints sind gleich. Je nach Einsatzszenario ist ein anderer Typ die richtige Wahl. Der Unterschied liegt vor allem in Geltungsbereich und Lebensdauer.
BREAK-POINT. (alle User) oder BREAK user_name. (nur für bestimmten User). Verbleibt im Code bis manuell entfernt.External Breakpoint für anderen User setzen
In SE38 oder SE80: Hilfsmittel → Einstellungen → ABAP-Editor → Debugging. Dort den Zielnamen eintragen. Nützlich wenn ein Prozess durch einen anderen User oder durch RFC ausgelöst wird und du ihn abfangen willst.
Limit beachten: max. 30 Breakpoints + 10 Watchpoints
Pro Programm können gleichzeitig maximal 30 Breakpoints und 10 Watchpoints aktiv sein. Bei komplexen Debugging-Sessions lohnt es sich, nicht mehr benötigte Breakpoints zu löschen.
03 / Shortcuts
03Die wichtigsten Shortcuts & Navigationsbefehle
Schnelles Debugging beginnt mit Tastaturkürzeln. Wer die F-Tasten im Schlaf kennt, spart bei jedem Debugging-Einsatz wertvolle Minuten.
| Shortcut | Funktion | Wann verwenden? |
|---|---|---|
| F5 | Einzelschritt (Step Into) | Jede Codezeile einzeln ausführen, auch in Methoden/FMs hineinspringen |
| F6 | Ausführen (Step Over) | Methoden/FMs als Block ausführen ohne hineinzuspringen |
| F7 | Return (Step Out) | Aktuellen FM/Methode verlassen und zurück zum Aufrufer |
| F8 | Weiter (Continue) | Bis zum nächsten Breakpoint springen oder Programm beenden |
| Shift+F8 | Continue to Cursor | Bis zur aktuellen Cursorposition ausführen |
| Shift+F12 | Goto Statement | Direkt zu einer bestimmten Programmzeile springen (Codeblöcke überspringen) |
| Strg+Shift+F12 | Session Breakpoint setzen | Breakpoint auf aktueller Cursorposition setzen |
| F2 | Display Field | Variableninhalt anzeigen (Cursor auf Variable) |
Goto Statement — unterschätzter Turbo-Shortcut
Shift+F12 ist einer der wertvollsten Befehle: Du kannst Codeblöcke überspringen oder rückwärts springen, ohne eine neue Debugger-Session starten zu müssen. Ideal bei Schleifen, die du nicht 100x durchlaufen möchtest.
04 / Watchpoints
04Watchpoints — Variablenänderungen automatisch abfangen
Watchpoints sind das mächtigste Werkzeug wenn du nicht weißt, wo eine Variable gesetzt wird. Statt manuell durch hunderte Zeilen zu steppen, überwacht der Debugger automatisch die Variable und hält an sobald sie geändert wird.
Watchpoint setzen
- Im Debugger die Variable in der Variablen-Ansicht auswählen
- Rechtsklick → Watchpoint anlegen
- Oder: Tab „Watchpoints“ öffnen → Variablenname manuell eingeben
- Programm mit F8 weiterlaufen lassen — der Debugger stoppt automatisch bei jeder Wertänderung
Conditional Watchpoint
Watchpoints können auch mit einer Bedingung kombiniert werden: nur stoppen wenn lv_matnr = 'A0001'. Damit vermeidest du hunderte irrelevante Stopps in Schleifen. Im Watchpoint-Dialog einfach die Bedingung eingeben.
05 / Conditional Breakpoints
05Conditional Breakpoints — nur bei bestimmten Bedingungen stoppen
In Schleifen die tausende Durchläufe haben, ist ein normaler Breakpoint nutzlos. Conditional Breakpoints lösen nur aus, wenn eine definierte Bedingung wahr ist — zum Beispiel wenn eine bestimmte Materialnummer oder Auftragsnummer verarbeitet wird.
Conditional Breakpoint setzen (SAP GUI)
- Im ABAP Debugger auf den Breakpoint rechtsklicken → Bedingung ändern
- Bedingung in ABAP-Syntax eingeben: z.B.
ls_item-matnr = 'TESTMAT001' - Bestätigen — der Breakpoint-Icon ändert sich (Häkchen-Symbol)
„“ Nur stoppen wenn Materialnummer = TESTMAT001
LOOP AT lt_items INTO ls_item.
„“ Breakpoint hier mit Bedingung: ls_item-matnr = ‚TESTMAT001‘
CALL METHOD me->process_item
EXPORTING is_item = ls_item.
ENDLOOP.
Statement Breakpoint in ADT
In ADT Eclipse gibt es zusätzlich den Statement Breakpoint: nicht an einer Zeile, sondern an einem ABAP-Schlüsselwort. Beispiel: Stopp bei jedem CLEAR-Statement überall im Programm. Im Breakpoints-View → Dropdown → „Add Statement Breakpoint“.
06 / Update Debugging
06Update Debugging — asynchrone Update-Tasks debuggen
Die typische Situation: Du speicherst Daten und bekommst die Meldung „Update wurde abgebrochen“. Der normale Debugger hilft dir hier nicht weiter — denn Update-Tasks laufen in einem separaten Update-Workprozess asynchron ab, an den der Debugger nicht automatisch angehängt ist.
Update Debugging aktivieren
Methode 1 — über Kommandofeld: /hs eingeben und Enter. Das aktiviert den System-Debugger zusammen mit Update Debugging.
Methode 2 — im Debugger selbst:
- Im ABAP Debugger: Einstellungen → Debugger-Einstellungen anzeigen/ändern
- Häkchen bei Update-Debugging setzen
- Speichern
Wenn Update Debugging aktiv ist, öffnet der Debugger automatisch sobald der Update-Workprozess die Update-Function aufruft — du kannst den genauen Fehler analysieren.
Update Debugging blockiert den Update-Workprozess
Während du im Debugger bist, ist der Update-Workprozess blockiert. Im Entwicklungssystem kein Problem — im Qualitätssystem solltest du schnell arbeiten, damit andere Buchungen nicht warten müssen.
ABAP Entwicklung — Espresso Tutorials
Das ABAP-Praxishandbuch von Espresso Tutorials — von Debugging über OO-ABAP bis S/4HANA Development. Ideal für Einsteiger und erfahrene Entwickler die tiefer in ABAP einsteigen wollen.
→ Zu Espresso Tutorials * Affiliate-Link — scmtms.de erhält eine Provision bei Kauf, für dich entstehen keine Mehrkosten.07 / Batch Jobs
07Hintergrundprogramme & Batch Jobs debuggen
Hintergrundjobs laufen ohne User-Interaktion — der normale Debugger kann nicht einfach „attached“ werden. Es gibt aber zwei bewährte Wege.
Abgeschlossene Jobs — JDBG
Für bereits abgeschlossene Hintergrundjobs:
- SM37 aufrufen, den betreffenden Job auswählen
- Im Kommandofeld
/JDBGeingeben und Enter - Der Debugger startet und simuliert das Programm mit exakt denselben Selektionsvarianten wie beim Originallauf
Laufende Jobs — SM50
Für gerade laufende Hintergrundjobs:
- SM50 aufrufen (Prozessübersicht)
- Den laufenden Batch-Prozess in der Liste markieren
- Im Transaktionsmenü: Programm → Debugging
- Der Debugger hängt sich an den laufenden Prozess
Job läuft zu schnell durch? Session Breakpoint Trick
Wenn der Job so schnell fertig ist, dass SM50 ihn nicht mehr anzeigt: In SE38 → Hilfsmittel → Einstellungen → Debugging → Session Breakpoint sofort aktiv aktivieren. Dann werden alle offenen Sessions sofort mit dem neuen Breakpoint aktualisiert.
08 / System Debugging
08System Debugging — tief in SAP-Standardcode
Manchmal endet die Debugging-Session an einer Stelle die du nicht mehr weiterverfolgen kannst, weil SAP-Systemprogramme aufgerufen werden. System Debugging gibt dir Zugriff auf diesen normalerweise versteckten Code.
System Debugging aktivieren
- Im Debugger: Einstellungen → System-Debugging ein/aus
- Oder: Kommandofeld
/hs
Mit aktivem System Debugging ist der gesamte SAP-Systemcode durchstepbar. Nachteil: Der Call Stack wird erheblich größer, weil alle Systemprogramme sichtbar werden. Das kann die Übersicht erschweren.
System Debugging benötigt spezielle Berechtigungen
Nicht jeder Entwickler hat automatisch Zugriff auf System Debugging. Das Debugging-Objekt S_DEVELOP mit dem Wert DEBU muss in der Benutzerrolle hinterlegt sein. Bei Bedarf mit dem BASIS-Team abstimmen.
09 / ADT Eclipse
09ABAP Debugger in ADT (Eclipse)
Wer mit den ABAP Development Tools (ADT) in Eclipse arbeitet, bekommt einen modernen, deutlich leistungsfähigeren Debugger als in der klassischen SAP GUI. Wichtig: Die Grundkonzepte sind gleich, die Oberfläche und einige Features unterscheiden sich.
Breakpoint in ADT setzen
- Rechtsklick auf den linken Rand der Zeile → Toggle Breakpoint
- Oder: Doppelklick auf den linken Rand
- Breakpoints in ADT sind user-spezifisch und persistent — sie bleiben auch nach dem Abmelden erhalten
- Programm muss aktiviert sein, bevor Breakpoints gesetzt werden können
ADT Debugger Shortcuts
| Shortcut | Funktion |
|---|---|
| F5 | Step Into — in Methoden/FMs hineinspringen |
| F6 | Step Over — Block ohne hineinzuspringen ausführen |
| F7 | Step Return — aktuellen Block verlassen |
| F8 | Resume — bis nächsten Breakpoint weiterlaufen |
| Strg+F2 | Terminate — Debugging sofort beenden |
ADT-exklusive Features
- Statement Breakpoint: Stoppt bei jedem Auftreten eines bestimmten ABAP-Statements (z.B. jedes
SELECT) — unabhängig von der Zeile - Bis zu 4 parallele Debugger-Sessions: Ideal für komplexe Multi-Session-Szenarien
- Soft Breakpoints: Wirken nur wenn bereits eine Debugger-Session aktiv ist — verhindert unnötiges Stoppen bei Normalausführung
- Variable ändern: Im Variables-View → Rechtsklick → Change Value — direkte Wertänderung während des Debuggings
- Interne Tabelle bearbeiten: Zeilen hinzufügen, löschen, ändern im ABAP Internal Table View
ABAP in S/4HANA — Rheinwerk Verlag
Der große ABAP-Guide von Rheinwerk Verlag — inklusive ADT, ABAP Objects und S/4HANA-spezifischen Besonderheiten. Aktuell und praxisnah für alle, die professionell ABAP entwickeln.
→ Zu Rheinwerk Verlag * Affiliate-Link — scmtms.de erhält eine Provision bei Kauf, für dich entstehen keine Mehrkosten.10 / Profi-Tricks
10Profi-Tricks die kaum jemand kennt
1. Direkt zur Fehlermeldung springen
Du siehst eine Fehlermeldung und weißt nicht wo im Code sie ausgelöst wird? Auf die Meldung klicken → Meldungsklasse und Nummer notieren → Im Debugger: Menü Breakpoint → Breakpoint bei → Breakpoint bei Meldung. Enter drücken und F8 — der Debugger stoppt exakt an der Stelle wo die Meldung ausgelöst wird.
2. Endlosschleife unterbrechen
Programm läuft in einer Endlosschleife und reagiert nicht mehr? In einer zweiten SE38-Session einen Session-Breakpoint setzen und in den Einstellungen Session Breakpoint sofort aktiv aktivieren. Alle laufenden Sessions erben den Breakpoint sofort.
3. TRFC Debugging
Für transaktionale RFC-Aufrufe (CALL FUNCTION ... IN BACKGROUND TASK): Im Debugger Settings → TRFC Block Sending aktivieren. Dadurch werden TRFCs nicht sofort abgeschickt, sondern warten auf deinen Debugger.
4. Variablenwert im Debugger ändern
Du kannst Variablenwerte direkt im Debugger ändern ohne die Session zu beenden:
- SAP GUI: In der Variable-Anzeige die Variable doppelklicken → Wert überschreiben → Enter
- ADT: Variables View → Rechtsklick → Change Value
Das ist besonders praktisch um negative Testfälle zu simulieren, ohne das Programm neu zu starten.
5. Exception Objects analysieren
Wenn Exception-Objekte mit CATCH cx_my_exception abgefangen werden, ohne sie einer Referenzvariablen zuzuweisen, sind sie normalerweise nicht im Debugger sichtbar. Lösung: Im Debugger Settings → Always Create Exception Obj. aktivieren. Dann können Exception-Objekte über die Lupe Exception-Objekt anzeigen untersucht werden.
6. Call Stack analysieren
Im Debugger-Tab auf der linken Seite ist der Call Stack einsehbar. Damit siehst du welche Programme und Methoden vor dem aktuellen Stopppunkt aufgerufen wurden. Per Klick auf einen Stack-Frame kannst du direkt in den Kontext dieser Ebene springen.
Debugger Desktop 3 — der bevorzugte Layout-Tipp
Im SAP GUI Debugger gibt es mehrere Layout-Ansichten (Desktops). Desktop 3 zeigt Code und Variablen gleichzeitig ohne Scrollen — besonders hilfreich bei Schleifen, internen Tabellen und verschachtelter Logik. Umschalten: im Debugger oben rechts zwischen Desktop 1–3 wählen.
11 / FAQ
11FAQ – Häufige Fragen zum SAP ABAP Debugging
Wie starte ich den SAP ABAP Debugger?
/h im Kommandofeld eingeben und Enter drücken — beim nächsten Programmaufruf öffnet er automatisch. (2) In SE38/SE80 einen Breakpoint per Doppelklick auf den Zeilenrand setzen und das Programm ausführen. (3) In ADT Eclipse: Rechtsklick auf Zeilenrand → Toggle Breakpoint, dann F9 (Run as ABAP Application in Debug Mode).
Was ist der Unterschied zwischen Session-Breakpoint und External Breakpoint?
Wie debug ich Hintergrundprogramme (Batch Jobs) in SAP?
/JDBG im Kommandofeld eingeben — der Debugger simuliert das Programm mit den Originalvarianten. Für laufende Jobs: In SM50 (Prozessübersicht) den Batch-Prozess selektieren → Programm → Debugging. Bei sehr schnell abgeschlossenen Jobs empfiehlt sich das Aktivieren von „Session Breakpoint sofort aktiv“ in den Debugging-Einstellungen (SE38 → Hilfsmittel → Einstellungen).
Was ist Update Debugging und wann brauche ich es?
/hs im Kommandofeld eingeben. Danach öffnet der Debugger sobald der Update-Workprozess die Update-Function ausführt.
Was sind Watchpoints im ABAP Debugger?
lv_matnr = 'TESTMAT001'. Maximal 10 Watchpoints gleichzeitig möglich.
Wie finde ich schnell die Zeile die eine bestimmte Fehlermeldung auslöst?
💬 Noch Fragen zum SAP Debugging?
Lass es uns in den Kommentaren wissen — oder schau dir weitere ABAP-Guides auf scmtms.de an.


