Debuggen in ABAP

Debuggen in ABAP

Dieser Beitrag ist Teil des Kurses ABAP Grundlagen.
Bevor Sie anfangen selbst in ABAP zu programmieren, ist es wichtig ABAP Programme lesen zu können. Es ist wichtig zu verstehen was ein Programm macht und wie die Ergebnisse der einzelnen Schritte zustande kommen.

Durch einen Erfahrungsaustausch lässt sich viel voneinander lernen. Tauschen Sie sich deshalb jetzt mit Experten auf Ihrem Gebiet aus und erweitern Sie Ihr Netzwerk! Treten Sie jetzt der exklusiven Gruppe von SAP Experten bei.

Dabei unterstützt Sie der ABAP Debugger. Sie können den Programmablauf Schritt für Schritt nachverfolgen und sehen, wie die Werte zur Laufzeit verändert werden. In diesem Beitrag stelle ich die wesentlichen Funktionen des ABAP Debuggers vor.

Ich finde, dass es sich am besten anhand eines Beispiels erläutern lässt. Daher legen wir zunächst ein Programm an.

Starten Sie bitte die Transaktion SE38 (ABAP Editor) und legen Sie ein neues Programm an.
ABAP Programm anlegen

Geben Sie eine Beschreibung an und wählen Sie Ausführbares Programm als Typ aus. Klicken Sie abschließend auf Sichern.
ABAP Programmeigenschaften

Fügen Sie den folgenden Code ein und aktivieren Sie das Programm. Kümmern Sie sich erstmal nicht darum, was dieses Programm macht.


TYPES:
    BEGIN OF zeile_typ,
       value TYPE c LENGTH 2,
    END OF zeile_typ.

DATA:
      lt_itab TYPE STANDARD TABLE OF zeile_typ,
      ls_value TYPE zeile_typ,
      lv_before TYPE c LENGTH 2,
      lv_after TYPE c LENGTH 2.

lv_before = 1.
ls_value = lv_before.

APPEND ls_value to lt_itab.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = lv_before
  IMPORTING
    output = lv_after.

APPEND lv_after to lt_itab.

WRITE: 'Alles erledigt'.

Ich möchte das gerade erstellte Programm nutzen um die Funktionsweise des Debuggers zu erklären.

Sie können den ABAP Debugger auf verschiedene Weisen starten. Wenn Sie den Ablauf eines Programms von Anfang an verfolgen möchten, können Sie den Debugger über den Button Debugging im Einstiegsbildschirm starten.
ABAP Editor Debugging

Sie können aber auch Breakpoints nutzen um den Debugger zu starten. Diese können dynamisch oder statisch gesetzt werden. Für statische Breakpoints können Sie einfach den Befehl BREAK-POINT in den Quellcode schreiben. Vermeiden Sie diese Anweisung, da sie zu einem Fehler der erweiterten Programmprüfung führt!

Nutzen Sie lieber dynamische Breakpoints. Diese können Sie, ohne in den Quellcode einzugreifen, als Haltepunkte einrichten. Wenn Sie auf die Spalte neben der Zeilennummer klicken, setzen Sie automatisch einen Session-Breakpoint. Alternativ können Sie auch einen Rechtsklick ausführen und Session Breakpoint setzen auswählen. Eine andere Möglichkeit bieten die Stopschild-Buttons im Menü.
Session Breakpoint setzen

Außerdem können Sie einen externen Breakpoint setzen. Dieser wird aktiviert, wenn das Programm extern (z.B. von einem anderen Programm) aufgerufen wird.

Die dynamischen Breakpoints sind benutzerabhängig. Außerdem sind sie nur während der laufenden Sitzung gültig. Wenn Sie das Programm während der laufenden Sitzung starten, hält das System vor dem Kommando am Stoppschild an, schaltet in den Debugging-Modus und wartet auf weitere Anweisungen.
Debugger Modus

Nun gibt es verschiedene Möglichkeiten im Programm zu navigieren. Sie können in Einzelschritten jede Anweisung ausführen (Taste F5). Wenn Sie jedoch vor einem Unterprogramm, Funktionsbaustein oder einem anderen Objekt stehen, verzweigt der ABAP Debugger sofort in dieses Objekt. Die Gefahr ist somit groß, sich in Tiefen des Systems zu verlieren.

Daher bietet es sich an die Taste F6 (Ausführen) zu nutzen. Damit wird das Unterprogramm, der Funktionsbaustein oder ein Objekt versteckt ausgeführt und das Ergebnis präsentiert. Dabei bleiben Sie auf der Ausführungsebene.

Sollten Sie sich mit der Taste F5 verirren, können Sie mit der Taste F7 (Return) wieder auf die Oberfläche, zu Ihrer Ebene, zurückkehren.

Dabei kann es sehr mühselig sein, den Code Zeile für Zeile durchzugehen. Daher bietet es sich an, Breakpoints an den kritischen Stellen zu setzen. Zwischen diesen Breakpoints können Sie mit der Taste F8 (Weiter) springen. Dabei können zwischen den Breakpoints beliebig viele Anweisungen liegen. Der ABAP Debugger verarbeitet alle Anweisungen bis zum nächsten Breakpoint und hält dort an. Fall kein Breakpoint mehr enthalten ist, wird das Programm ausgeführt und beendet.

ABAP Debugger Schritte

Fangen wir nun in der Zeile lv_before = 1 an. Wenn Sie auf die Variable lv_before doppelklicken, sehen Sie, dass zunächst kein Wert zugewiesen ist.

Variable ohne Wert

Wenn Sie nun die Taste F5 drücken oder den Button Einzelschritt betätigen wird die Anweisung lv_before = 1 ausgeführt. Der Variable wird nun ein Wert zugewiesen.

Der Variable wird ein Wert zugewiesen

Mit den Strukuren funktioniert es analog. Wenn Sie auf ls_value doppelklicken, können Sie alle Komponenten der Struktur einsehen.
Strukturen einsehen

Im nächten Schritt fügen wir die Zeile (Struktur) in die Tabelle lt_itab ein.

Zeile an Tabelle anhängen

Auch die Inhalte von Tabellen können mit einem Doppelklick eingesehen werden.
Tabelle im Debugger

Der Inhalt der Tabelle lt_itab sieht zum Beispiel so aus:
Tabelleninhalt im Debugger einsehen

Im nächsten Schritt wird der Unterschied in der Funktionsweise von Einzelschritt F5 und Ausführen F6 verdeutlicht.
Funktionsbaustein aufrufen
Mit Einzelschritt F5 landen Sie im Funktionsbaustein selbst und können da das Debugging weiter verfolgen. So können Sie die genaue Berechnung nachvollziehen.
Baustein CONVERSION_EXIT_ALPHA_INPUT
Wenn Sie aber nur am Ergebnis interessiert sind, können Sie mit der Taste F7 (Return) zurück an die Oberfläche gehen.

Mit der Taste F6 führen Sie den Baustein aus, ohne in die Tiefen hinabzusteigen. Nur das Ergebnis wird präsentiert.

Sie können auch zu einer bestimmten Stelle im Code springen. Führen Sie
Springe zur Anweisung

Zu diesem Zeitpunkt haben Sie der Variable lv_before bereits einen Wert zugeordnet. Diesen können Sie aber auch ändern.
Wert der Variable anpassen

So können Sie zum Beispiel statt einer 1 eine 2 reinschreiben.
Wert der Variable manipuliert

Diese Eingabe produziert natürlich andere Ergebnisse.
Andere Ergebnisse

Genauso können Sie die Werte in einer Struktur ändern.
Wert in der Strukur ändern

Um die Werte in einer Tabelle zu ändern, müssen Sie zunächst auf den Wert doppelklicken.
Wert in der Tabelle auswählen
Anschließend können Sie den Feldinhalt ändern.
Feldinhalt ändern

Im Zusammenhang mit Variablen können Sie auch so genannte Watchpoints anlegen. Diese stoppen den Programmablauf wenn die Variable einen bestimmten Wert annimmt.
Watchpoint anlegen
In diesem Fall wird das Programm gestoppt, wenn die Variable lv_after den Wert 02 annimmt.

Um den ABAP Debugger zu beenden, können Sie das Programm mit dem Button Weiter (Taste F8) ausführen. Alternativ können Sie den Debugger über den Menüpfad Debugger Beenden schließen.

Wenn Sie Anwendung schließen auswählen, wird die Programmverarbeitung sofort beendet und Sie landen im Start Menü des Systems. Wenn Sie Anwendung läuft weiter auswählen, wird das Programm fortgesetzt und der Debugging-Modus geschlossen.

P.S. Isa Bodur hat auf seinem Blog weitere Tipps zum ABAP Debugger veröffentlicht. Schauen Sie mal rein.

Diese ABAP Tricks machen Ihr Leben leichter!

  • In meinem Newsletter gebe ich eine Menge Tipps und Kniffe rund um ABAP.
  • Die Mini-Tutorials unterstützen Sie dabei, Software in ABAP effizienter zu entwickeln.
  • Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung Ihrer Arbeit.
  • Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „ABAP Tipps und Tricks“ als Willkommensgeschenk.
ABAP Tipps und Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. Ich hasse Spam genau so wie du.

Quellen und weiterführende Literatur:
Karl-Heinz Kühnhauser, Thorsten Franz (2011): Discover ABAP, 3. Auflage, Bonn
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

4 Kommentare
  1. Ralph Hahn
    Ralph Hahn sagte:

    Kleiner Beitrag („Payback“) von mir: Es geht um ITAB-Veränderungen zur Laufzeit. Falls man programmatisch Datentöpfe in „classic BW“ oder BW/4 (HANA-based) anzapfen will, kann man ja nach wie vor den Fuba RSDRI_INFOPROV_READ verwenden und wirft in i_infoprov den techn. Compositeprovider oder (A)DSO-Namen rein und in i_t_range die Filter. Oft hat man dann riesige Datenmengen, will aber im Fehlerfall nur auf einen Satz zugreifen. Dann kann man einen Breakpoint setzen und die ITAB der Filter anzeigen lassen. Via Doppelklick lässt man sich die Details der Übergabe-ITAB anzeigen und zeigt auf eine Komponente davon. Dann kann man mit der rechten Maustaste den Eintrag auswählen: Tabelleninhalt ändern => Zeile anhängen (APPEND) und einen oder mehrere weitere Filter definieren bzw. dazutun, der die Ergebnismenge so eingrenzt, dass man nur noch seinen Problemfall hat. Der BP muss natürlich ausserhalb der Leseschleifen gesetzt werden, damit man nicht mehrmals die Vorgaben machen muss…Soweit mal, denke das hilft vielleicht dem einen oder anderen :-)

    Antworten

Trackbacks & Pingbacks

  1. […] diesem kleinen Trick sparen Sie viel Zeit und Rumgeklicke bei der Arbeit mit dem Code und Debugging. Durch einen Erfahrungsaustausch lässt sich viel voneinander lernen. Tauschen Sie sich deshalb […]

  2. […] aktivieren. Schließen Sie Ihre Eingabe über die Taste ENTER ab. Sie bekommen die Meldung, dass Debugging eingeschaltet wurde. Drücken Sie nun erneut die ENTER Taste und der Debugger springt an. Suchen […]

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar zu Blöcke im ABAP Code auskommentieren | Denis Reis Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.