Show TOC

Langläuferprozess mit der ABAP-Laufzeitanalyse analysierenLocate this document in the navigation structure

Vorgehensweise

Mit der ABAP-Laufzeitanalyse können Sie ein Trace der Programmausführung in anderen Workprozessen Ihres Systems erstellen.

Beispielsweise können Sie die Ausführung eines Langläufer-Hintergrundjobs analysieren. Anhand des erstellten Trace wird ersichtlich, was der Job macht - ob er in einer Schleife hängt oder ob er wie vorgesehen läuft.

Die Trace-Erstellung für einen 'parallelen Modus', wie die Funktion auf dem Messbild der Transaktion SAT bezeichnet wird, ist schneller und sicherer als die Erfassung eines Langläufers im Debugger.

  • Schneller: Obwohl Sie einen laufenden Prozess von der Transaktion SM50, der Prozessübersicht, aus im Debugger erfassen können, können Sie nicht steuern, an welcher Stelle das Programm im Debugger anhält. Sehr wahrscheinlich gelangen Sie an irgendeine Stelle im Infrastrukturquelltext. Es kann länger dauern, bis Sie sich orientiert haben und verstehen, was das Programm macht.

  • Sicherer: Im Debugger besteht das Risiko, das die Ausführung des Programms unabsichtlich beeinflusst wird. Die ABAP-Laufzeitanalyse erstellt ein Trace für ein Programm, ohne es zu beeinflussen.

Trace für einen externen Prozess erstellen

Angenommen, in Ihrem System läuft ein Hintergrundjob. Die Laufzeit für diesen Job ist weitaus länger als erwartet. Eventuell finden Sie auch unerwartete Aktivitäten in der Prozessübersicht in der Transaktion SM50, z.B. persistentes Lesen aus einer einzelnen Tabelle.

Im Folgenden wird beschrieben, wie Sie ein Trace für den Hintergrundjob erstellen, ohne ihn zu beeinflussen. Aus dem Trace wird ersichtlich, was der Job macht und ob er wie vorgesehen abläuft.

Mit dieser Vorgehensweise können Sie Traces für Aktivitäten in jeder Art von Workprozess erstellen.

  1. 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.

  2. 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 den Programmablauf verfolgen und die Aktionen des Programms verstehen können.

  3. Starten Sie die nicht aggregierte Messung (ABAP Trace), indem Sie die Drucktaste Ein-/Ausschalten im Rahmen Im parallelen Modus auf dem Register Messen wählen.

    Die ABAP-Laufzeitanalyse zeigt eine listenbasierte Variante der SM50 Prozessübersicht an.

  4. Schalten Sie das Trace ein. Klicken Sie auf den Workprozess, für den Sie ein Trace erstellen möchten.

    Die Laufzeitanalyse zeigt eine Statusmeldung an, dass die Messung eingeschaltet wurde.

    • Das Symbol Messung eingeplant zeigt an, dass die Messung noch nicht gestartet wurde.

    • Wenn das Symbol Messung läuft erscheint, läuft die Trace-Aufzeichnung. Sie können erneut auf den Prozess klicken, um das Trace für die Anzeige auszuschalten.

    Wenn die Laufzeitanalyse die Nachricht Tracefile noch nicht geschrieben. Wollen Sie warten? anzeigt, wählen Sie die Drucktaste Abbrechen, um den Vorgang zu beenden und das Trace anzuzeigen.

    Zu Beginn zeigt die Prozesslistenanzeige nur aktive Workprozesse im lokalen ABAP-Anwendungsserver.

    • Sie können alle Workprozesse im Server anzeigen, indem Sie Alle Prozesse wählen.

    • Sie können ein Trace für einen oder mehrere Workprozesse in anderen Servern oder in allen Servern erstellen, indem Sie Serverauswahl wählen.

  5. In der Messanzeige wechseln Sie zum Register Desktop 2, um die Messung zu analysieren.

    Das Register Desktop 1, auf dem die Anzeige startet, ist für die Performance-Analyse vorgesehen.

    Sie benötigen Desktop 2, um die Programmausführung zu analysieren.

  6. Analysieren Sie den Aufruf-Stack, um die Aktionen des Programms zu sehen.

    Öffnen Sie auf dem Register Desktop 2 das Werkzeug Verarbeitungsblöcke, um eine übersichtlichere Ansicht des Programm-Aufruf-Stack zu erhalten. Wenn Sie Wiederholungen in der Abfolge der Verarbeitungsblöcke feststellen, doppelklicken Sie auf die Einträge, um sich den Quelltext anzusehen.

    Sie können nicht die Werte von Variablen untersuchen, was im Debugger möglich wäre. Aber Sie können dennoch sehr wahrscheinlich feststellen, ob die Wiederholungen zum regulären Ablauf gehören, wie z.B. die Verarbeitung einer Folge von Kundendatensätzen.

  7. Zeigen Sie weitere Details zur Programmaktivität an, indem Sie zur Aufrufhierarchie springen.

    Möchten Sie den Programmablauf detaillierter darstellen lassen? Dann benutzen Sie das Kontextmenü der Einträge im Werkzeug Verarbeitungsblöcke, um zum Werkzeug Aufrufhierarchie zu springen. Wählen Sie Im Hierarchie-Werkzeug positionieren.

    Dort können Sie die einzelnen Trace-Einträge sehen, die sich auf die jeweiligen Verarbeitungsblöcke beziehen. Sie können die Aufrufhierarchie auch filtern, um nur die Trace-Einträge anzeigen zu lassen, die sich auf einzelne Verarbeitungsblöcke beziehen.

Das übersichtliche Aufruf-Stack-Trace, das Sie im Werkzeug Verarbeitungsblöcke sehen, und das Detail-Trace im Werkzeug Aufrufhierarchie reichen u.U. aus, um festzustellen, ob der Langläufer wie vorgesehen arbeitet.

Wenn Ihnen eine Untersuchung der Variablen im Debugger notwendig erscheint, um den Langläufer zu beurteilen, können Sie Breakpoints im Quelltext setzen, damit Sie im Debugger anhalten können.

Probieren Sie es aus: Trace für einen Langläufer erstellen

Probieren Sie die oben beschriebene Vorgehensweise aus.

Im Folgenden wird beschrieben, wie Sie einen harmlosen Langläufer starten, den Sie einfach wieder stoppen können. Verwenden Sie dann die oben beschriebene Vorgehensweise, um festzustellen, ob das Programm in einer Schleife hängt oder wie vorgesehen arbeitet.

  1. Starten Sie die Transaktion SE38 und starten Sie von dort aus das Programm BTCLOOP.

  2. Das Fenster SE38 wird inaktiv. Dennoch können Sie auf das Symbol in der oberen linken Ecke des SAPGUI-Fensters klicken, um ein Kontextmenü zu öffnen. Wählen Sie Modus erzeugen aus dem Kontextemenü aus, um ein neues SAPGUI-Fenster zu öffnen.

  3. Starten Sie im neuen SAPGUI-Fenster die Transaktion SAT. Wenden Sie jetzt die oben beschriebene Vorgehensweise an, um für das Programm BTCLOOP, das in einem DIA-Workprozess auf Ihrem lokalen Server läuft, ein Trace zu erstellen.

  4. Wenn das Trace fertig ist, stoppen Sie das Programm BTCLOOP. Im inaktiven SE38-Modusfenster klicken Sie auf das Symbol in der oberen linken Ecke des SAPGUI-Fensters. Wählen Sie im Kontextmenü Transaktion abbrechen. Die Transaktion SE38 und das Programm BTCLOOP werden beendet.