Kontakt & Service
Jetzt Beratung vereinbaren

In wenigen Schritten einen Beratungs­termin mit unseren Experten buchen.

Anwender Helpdesk

Hilfestellung bei Problemen in Ihren SAP-Systemen.

Schulungen

Unser Schulungsangebot. Jetzt informieren!

Webinare

Unser Webinarangebot. Jetzt informieren!

ABAP Debugging

News & Wissen Tipps zum ABAP Debugger

Nahezu jede Fehleranalyse im SAP beginnt mit dem Start des ABAP Debuggers. Aber auch auf die Frage „Wie macht das eigentlich der SAP-Standard?“ kennt der ABAP Debugger eine Antwort. Aus diesem Grund sollte das Debuggen nicht nur den Entwicklern vorbehalten sein. Auch für Berater ist es ein nützliches Tool. Deshalb wollen wir einen genauen Blick auf die wichtigsten Funktionen des ABAP Debuggers werfen.

Starten des ABAP Debuggers

Zum einem können Sie den ABAP Debugger über den OK-Code /h (Eingabe ins Transaktionsfeld) im zu debuggenden Programm aktivieren. Bei der nächsten Aktion (Buttonklick, Mausklick, etc.) öffnet sich ein neues Fenster mit dem Debugger.

  • TIPP: Sollte kein freier Modus (die SAP-Voreinstellung lässt im Normalfall sechs Modi parallel zu) vorhanden sein, öffnet sich der etwas in die Jahre gekommene „alte“ Debugger. Daher immer die Anzahl der offenen Modi checken, bevor das Debugging gestartet wird.

In der Standardsicht (diese Sicht empfehle ich) ist der Debugger in drei Teile aufgeteilt: Links (1) sieht man den Quelltext, der gerade durchlaufen wird. Rechts oben (2) ist der sogenannte Aufrufstack zu sehen. Dies ist eine hierarchische Auflistung der Programmteile, Methoden oder Funktionsbausteine, die bereits durchlaufen wurden. Unter dem Aufrufstack (3) können Variablen, Tabellen, etc. angezeigt werden. Diese können entweder eingetragen oder durch einen Doppelklick im Quelltext geladen werden.

Nicht immer ist es möglich, /h ins Transaktionsfeld einzugeben. Was also tun, wenn ein Pop-up ohne dieses Feld zu debuggen ist? Hierfür können Sie sich ein Textfile mit folgendem Inhalt erstellen:

[FUNCTION] Command=/H
Tittle=Debugger
Type=SystemCommand

Diesen File können Sie einfach per Drag and Drop auf das Pop-up ziehen. Et voilà – der Debugger ist aktiviert.

Als dritte Möglichkeit, den ABAP Debugger zu starten, können Sie Breakpoints direkt im Quelltext setzen. Diese Option bietet sich natürlich nur an, wenn Sie vorher schon ungefähr wissen, an welcher Stelle im Programm Sie mit dem Debugging anfangen wollen.

Aber auf Breakpoints kommen wir später noch einmal im Detail zu sprechen.

Ablaufsteuerung

Zum einen können Sie mit folgenden Buttons durch das Programm debuggen:

  • Einzelschritt (F5): springt einen Schritt weiter, also von Anweisung zu Anweisung
  • Ausführen (F6): überspringt Funktionsbaustein, Methoden, Unterprogramme, etc.; diese Programmteile werden aber trotzdem durchlaufen; man bleibt auf derselben Ebene des Aufrufstacks
  • Return (F7): verlässt den aktuellen Programmteil; auch werden nachfolgende Programmteile noch durchlaufen
  • Weiter (F8): verlässt den Debugger; Programmteile werden aber noch durchlaufen

Sie sollten sich zeitnah angewöhnen, die Shortcuts (F5, F6, …) zu verwenden. Diese steigern die Geschwindigkeit und Effizienz beim Debuggen.

Eine weitere wichtige Funktion ist „Springe zur Anweisung“ oder der Shortcut F12. Mit diesem Tool springen Sie zu der Zeile, die Sie mit dem Cursor markiert haben. Damit können Sie Anweisungen noch einmal durchlaufen lassen, ohne das Programm zum Beispiel von vorne zu debuggen. Sie können aber auch Anweisungen überspringen.

Breakpoints

Breakpoints sind Markierungen im Quellcode, an denen der Debugger anhält. Grundsätzlich gibt es zwei verschiedene Arten solcher Haltepunkte:

  • Session Breakpoint : Diese Breakpoints sind nur in Ihrer aktiven Logon-Session gültig.
  • Externer Breakpoint: Diese Breakpoints sind für alle Sessions Ihres Users gültig und werden auch von externen Aufrufen getriggert, das heißt zum Beispiel von RFC Aufrufen, HTTP Requests oder anderen externen Aufrufen des Programmteils von außen.

Breakpoints können zum einem vor dem Starten des ABAP Debuggers direkt im Programm in der SE38 o. Ä. gesetzt werden. Hierfür einfach Linksklick auf den linken Rand am Editor:

Aber auch während des Debuggens können noch Breakpoints gesetzt werden:

Diese BPs sind allerdings nur während der Debugging Session gültig, können aber durch Speichern in einen Session Breakpoint umgewandelt werden und sind damit auch nach der Debugging Session weiter gültig.

Eine andere Möglichkeit Breakpoints zu setzen sind dynamische Breakpoints. Diese Breakpoints bieten sich vor allem an, wenn das Problem nicht genau auf eine Programmstelle fixiert werden kann. Verschiedene dynamische Breakpoints finden Sie in der Statusleiste im ABAP Debugger:

Hier möchte ich besonders auf die Funktion „Breakpoint bei Message" verweisen. Dieser dynamische Breakpoint ist bei der Fehlerfindung besonders sinnvoll.

Beispiel:

Folgende Fehlermeldung erhält der User beim Ausführen der Transaktion. An welcher Stelle im Programm wird dieser Fehler ausgelöst?

Hierfür starten wir die Transaktion im Debugging Modus (/h) und setzen einen Breakpoint bei der entsprechenden Message:

Mit F8 im Debugger springt man zu dem Programmteil, der die Fehlermeldung auslöst.

Doch nicht immer kommt man so schnell ans Ziel.

Folgendes Problem:

Sie wollen bestimmte Programmteile innerhalb eines Schleifendurchlaufs (z. B. LOOP-Schleife) debuggen. Bei einer Schleife über wenige Einträge stellt das kein Problem dar. Was aber, wenn die Tabelle hunderte Einträge hat und Sie den Eintrag mit dem Wert 1909 debuggen wollen? Wann kommt der Wert in der Schleife?

Sie können für Breakpoints auch Bedingungen hinterlegen. Im Menüreiter „Break-/Watchpoints" sehen Sie eine Übersicht aller gesetzten Breakpoints:

Hier können wir eine beliebige Bedingung hinterlegen, zum Beispiel:

Und schon bleibt der ABAP Debugger an dem Wert stehen, der die Bedingung erfüllt:

Watchpoint

Ein ähnliches Tool steht Ihnen mit dem Watchpoint zur Verfügung. Der Watchpoint überwacht Änderungen an der angegebenen Variable. Das heißt, Sie können hiermit verfolgen, wo sich der Fehler eventuell in einem Feld einschleicht oder auch, wo bestimmte Tabellen befüllt werden. Watchpoints können aber nur auf Variablen des aktuellen Kontexts gesetzt werden:

Sitzung speichern

Nicht immer kommt man sofort auf die Lösung. Um bereits gewonnene Erkenntnisse mit anderen Entwicklern oder Beratern zu teilen oder auch einfach eine unterbrochene Debugging Session zu einem späteren Zeitpunkt fortzusetzen, bietet es sich an, die Sitzung zu speichern. Sie können Breakpoints, Layouts, Optionen, etc. für sich oder auch einen anderen Benutzer speichern:

Entsprechend können Sie die gespeicherten Sitzungen eines jeden Benutzers wieder laden. Dafür starten Sie den Debugger und wählen oben eine Session aus, die Sie laden möchten. Nachdem Sie die Session geladen haben, stehen Ihnen Breakpoints, Variablen, etc. im jeweiligen Programm wieder zur Verfügung.

Fazit

Diese einfachen Tricks bilden den Grundstock im Umgang mit dem ABAP Debugger. Je mehr man diese einfachen Kniffe verinnerlicht hat, desto eher findet man sich auch in komplizierteren Problemstellungen zurecht. Am Ende heißt es aber wie so oft: Übung macht den Meister.

Stand: 26. April 2021
Newsletter Setzen Sie auf fundiertes Wissen aus allen Bereichen unserer Branche. Regelmäßig und stets aktuell.
Beratende Person
Kontakt Haben Sie Fragen oder wünschen weitere Informationen? Unsere Experten beraten Sie gerne.