Show TOC

Meldungen und andere Anweisungen mit der ABAP-Laufzeitanalyse auffindenLocate this document in the navigation structure

Vorgehensweise

Wenn in einem Programm ein Kurzdump auftritt, wissen Sie genau, an welcher Stelle im ABAP-Quelltext das Problem aufgetreten ist.

Doch wie gehen Sie vor, wenn eine unerwartete Fehlermeldung in einem Ihrer Programme auftritt, z.B. weil das Programm auf unvorhergesehene Bedingungen gelaufen ist? Wie finden Sie heraus, an welcher Stelle im Quelltext die Meldung ausgegeben wurde? Dies sind die ersten Informationen, die Sie zur Analyse des Problems benötigen.

Die ABAP-Laufzeitanalyse bietet eine schnelle und einfache Möglichkeit, die Stelle im Quelltext zu ermitteln, an welcher die Fehlermeldung ausgegeben wurde. Ebenso einfach können Sie mit der Laufzeitanalyse andere wichtige Anweisungen auffinden, z.B. SQL-Anweisungen oder Aufrufe von Methoden, Funktionsbausteinen oder Form-Routinen.

Im Folgenden wird die Vorgehensweise beschrieben, wie Sie eine Programmablaufanalyse ausführen, um:

  • Eine bestimmte Anweisung, z.B. eine Fehlermeldung aufzufinden

  • Den Aufruf-Stack anzuzeigen, der zur Anweisung geführt hat

Mit der Programmablaufanalyse eine Fehlermeldung suchen und den Aufruf-Stack anzeigen

Angenommen, Sie müssen eine unerwartete Fehlermeldung analysieren, die von einem ABAP-Programm ausgegeben wurde. Folgen Sie dieser Vorgehensweise zum Auffinden der Stelle, an welcher die Fehlermeldung ausgegeben wurde, und des Aufruf-Stack, der zur Meldung geführt hat.

  1. Ermitteln Sie mit der F1-Hilfe zur Meldung die Meldungs-ID und die Meldungsnummer.

    Die Meldungs-ID und -Nummer werden ganz oben in der Hilfe angezeigt. Zum Beispiel bedeutet der String BT005 im Hilfefenster die Meldungs-ID ' BT' und die Nummer 005 (in der Transaktion SE91).

    Klicken Sie auf eine Meldung in der Statusleiste, um die F1-Hilfe zu starten. Alternativ können Sie die Drucktaste Hilfe bei Meldungen in Dialogfenstern wählen.

    Anhand der Meldungs-ID und der Meldungsnummer können Sie die Meldung in einer Laufzeitanalysemessung schneller auffinden. Außerdem können Sie sicher sein, dass Sie die richtige Meldung gefunden haben, falls mehrere vermessen wurden.

  2. Starten Sie die ABAP-Laufzeitanalyse, indem Sie entweder den Transaktionscode SAT eingeben oder Anfang des Navigationspfads System Nächster Navigationsschritt Hilfsmittel Nächster Navigationsschritt Laufzeitanalyse Nächster Navigationsschritt Ausführen Ende des Navigationspfads wählen.

  3. Geben Sie eine Variante an, für welche die Aggregation auf Keine gesetzt ist.

    Die resultierenden 'ABAP Trace'-Messdatensätze erstellen einzelne Traces pro Ereignis, so dass Sie nach bestimmten ABAP-Anweisungen suchen können.

    Optional können Sie das Trace selbst ein- bzw. ausschalten. Dies bietet sich an, wenn Sie den Teil eines interaktiv gestarteten Programms bzw. einer Transaktion kennen, für den Sie ein Trace erstellen möchten. Sie können das Trace dann auf den entsprechenden Programm- bzw. Transaktionsteil einschränken.

  4. Starten Sie die nicht aggregierte Messung (ABAP Trace) mit Hilfe einer der drei Laufzeitanalyse-Startmethoden.

  5. Zeigen Sie das Trace nach Beendigung an, sofern es nicht automatisch angezeigt wird.

    Sie befinden sich auf dem Register Desktop 1, das standardmäßig für die Performance-Analyse eingerichtet ist.

    Wechseln Sie zum Register Desktop 2. Dort finden Sie Werkzeuge zur Analyse des Programmablaufs, die Aufrufhierarchie und die Sicht Verarbeitungsblöcke.

  6. Suchen Sie die MESSAGE-Anweisung in der Aufrufhierarchie. In der Symbolleiste der Aufrufhierarchie wählen Sie Suchen.

    Im Suchdialogfenster geben Sie den Namen der gesuchten Anweisung bzw. des gesuchten Ereignisses ein. Um eine Meldung aufzufinden, geben Sie MESSAGE ein. Wenn Sie die Meldungsnummer und den Typ kennen, können Sie präzisere Angaben für die Suche machen: MESSAGE E005 zum Beispiel.

    Die Trace-Ereignisse in der Aufrufhierarchie bilden ABAP-Anweisungen schematisch ab und nicht exakt so, wie sie im Quelltext erscheinen. Blättern Sie durch ein Trace, um Beispiele zu finden, wenn Sie sich nicht sicher sind, wie Sie nach einem bestimmten Trace-Ereignis suchen sollen.

    Die Aufrufhierarchie zeigt als Antwort die von Ihrer Suche gefundenen Trace-Einträge in einem Dialogfenster an.

  7. Im Dialogfenster der gefundenen Trace-Einträge doppelklicken Sie auf einen Eintrag, um genau zur Stelle des Eintrags im Quelltext zu springen.

    Die ABAP-Laufzeitanalyse öffnet daraufhin den ABAP-Editor, um die Anweisung MESSAGE bzw. das von Ihnen gesuchte Ereignis anzuzeigen. Sie haben die Stelle gefunden, an welcher die Meldung bzw. das Ereignis auftritt.

    Im Editor können Sie den Quelltext analysieren. Sie können einen Breakpoint oder einen Watchpoint setzen, so dass Sie im Debugger anhalten können, wenn Sie das Problem reproduzieren.

    Fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie den Aufruf-Stack anzeigen, der zu diesem Trace-Ereignis führt.

  8. Verlassen Sie den ABAP-Editor, um zur Liste der Trace-Einträge zurückzukehren, die gefunden wurden.

  9. Suchen Sie die Stelle des MESSAGE-Eintrags in der Liste der Trace-Einträge in der Aufrufhierarchie.

    Markieren Sie den Meldungseintrag oder sonstigen gefundenen Eintrag. Wählen Sie in der Symbolleiste des Suchfensters Positionieren in Hierarchie.

    Im Hauptbild der Aufrufhierarchie markiert die Laufzeitanalyse die Position des Eintrags in der Liste der Trace-Ereignisse. Verlassen Sie das Dialogfenster Suchen und kehren Sie zum Hauptbild der Aufrufhierarchie zurück.

  10. Zeigen Sie den Aufruf-Stack im Werkzeug Verarbeitungsblöcke an.

    Öffnen Sie das Kontextmenü des markierten Eintrags in der Anzeige Aufrufhierarchie. Wählen Sie Im Verarbeitungsblöcke-Werkzeug positionieren.

    Das Werkzeug Verarbeitungsblöcke ist das andere Werkzeug des Standardregisters Desktop 2. Es wird automatisch geöffnet, um den Verarbeitungsblock anzuzeigen, in dem das Trace-Ereignis in der Aufrufhierarchie aufgetreten ist.

    Im Werkzeug Verarbeitungsblöcke wird der Aufruf-Stack, der zum Trace-Ereignis geführt hat, klar dargestellt. Der Verarbeitungsblock (Dialogbaustein, Methode, Funktionsbaustein oder sonstige Modularisierungseinheit), in dem das Ereignis aufgetreten ist, wird in Grün hervorgehoben.

    Anhand des Aufruf-Stack wird ersichtlich, wie das Programm die Stelle erreicht hat, an welcher der Fehler aufgetreten ist. Selbstverständlich können Sie von jedem Eintrag im Werkzeug Verarbeitungsblöcke aus in den Quelltext springen, um den Quelltext zu analysieren oder weitere Breakpoints zu setzen.

Probieren Sie es aus: Anweisungen im Quelltext suchen

Probieren Sie die oben beschriebene Vorgehensweise aus.

Führen Sie folgende Schritte aus, um eine harmlose Fehlermeldung zu erzeugen. Suchen Sie dann nach der Stelle der Fehlermeldung anhand der oben beschriebenen Vorgehensweise.

  1. Starten Sie die Transaktion ST22, den ABAP-Laufzeitfehler-Viewer.

  2. Ersetzen Sie im Feld Benutzer Ihre eigene Benutzer-ID durch einen fiktiven Benutzernamen, z.B. XXX.

  3. Wählen Sie Start, um nach Kurzdumps von Benutzer XXX zu suchen.

Verwenden Sie dann die ABAP-Laufzeitanalyse und die oben beschriebene Vorgehensweise, um herauszufinden, an welcher Stelle im Quelltext der Fehler aufgetreten ist.