Die ABAP Runtime Analysis (Transaktion SE30) ist ein mächtiges Werkzeug, das weit mehr als nur die Identifizierung von Performance-Engpässen ermöglicht. Viele Anwender nutzen SE30 primär zur Leistungsoptimierung, versäumen dabei jedoch das volle Potenzial, das in der detaillierten Nachverfolgung des Programmflusses liegt. Mit dem ABAP Trace innerhalb der Runtime Analysis können Sie die Ausführung jedes ABAP-Statements präzise verfolgen. Dieser Artikel führt Sie durch die Nutzung von Sap Se30 zur Analyse des exakten Ablaufs Ihres ABAP-Programms, um tiefere Einblicke zu gewinnen und Probleme effizienter zu lösen.
Warum die Analyse des ABAP-Programmflusses unerlässlich ist
Die Transaktion SE30 bietet eine integrierte Lösung für zwei kritische Herausforderungen in der ABAP-Entwicklung: die Messung von Performance und die Analyse des Programmflusses. Während die Leistungsmessung oft im Vordergrund steht, ist das Verständnis des genauen Ausführungsablaufs ebenso entscheidend für die Behebung komplexer Probleme und das Verständnis von Codeverhalten.
Betrachten wir zwei häufige Szenarien, in denen eine detaillierte Programmflussanalyse mit sap se30 unverzichtbar ist:
- Identifizierung exakter Quellcode-Positionen: Stellen Sie sich vor, Sie müssen die genaue Stelle in Ihrem Quellcode lokalisieren, an der ein bestimmtes ABAP-Statement (z. B. ein Methodenaufruf, ein Funktionsmodul-Aufruf oder die Ausgabe einer Fehlermeldung) ausgeführt wird. Anstatt sich mühsam durch den Code zu wühlen oder den Debugger stundenlang im Einzelschrittmodus zu nutzen, ermöglicht Ihnen ein ABAP Trace, diese Information innerhalb weniger Minuten zu erhalten.
- Vergleich von Programmverhalten über Systemgrenzen hinweg: Ein Programm, das im Testsystem einwandfrei funktioniert, verhält sich im Produktivsystem plötzlich völlig anders oder bricht gar mit einem Short Dump ab. Durch das Ausführen eines ABAP Trace in beiden Systemumgebungen und den anschließenden Vergleich der Trace-Ergebnisse können Sie Abweichungen im Programmfluss aufdecken und die Ursache des Problems schnell identifizieren. Dies ist besonders wertvoll, um unerwartete Systemreaktionen zu verstehen und die Stabilität Ihrer Anwendungen zu gewährleisten.
Präzise Quellcode-Zeilenfindung mit SE30
Stellen Sie sich vor, Sie geben in der ABAP Editor Transaktion SE38 ein Programm mit dem Namen “XXX” ein und erhalten beim Klick auf “Anzeigen” die Fehlermeldung “Programm XXX existiert nicht” in der Statusleiste. Wie finden Sie nun die exakte Zeile im Quellcode, die diese Meldung verursacht? Eine manuelle Suche oder ein langwieriges Debugging sind hier oft nicht praktikabel.
Abbildung 1: Beispiel für eine Fehlermeldung im ABAP Editor
Sie könnten natürlich den ABAP Debugger starten und versuchen, den Code Schritt für Schritt zu durchlaufen. Nach Stunden oder gar Wochen intensiven Debuggings könnten Sie Glück haben und die fehlerhafte Zeile finden. Doch warum Zeit verschwenden, wenn sap se30 eine wesentlich effizientere Lösung bietet?
Wenn Sie auf die Schaltfläche “?” klicken oder in der Statusleiste nahe der Fehlermeldung suchen, erhalten Sie die F1-Hilfe zur Meldung. In diesem Fall erfahren Sie, dass die Fehlermeldung die Nummer DS017 trägt. Dies bedeutet, dass Sie nach “message DS017” suchen müssen.
Abbildung 2: F1-Hilfe zur Fehlermeldung
Um die genaue Stelle zu finden, gehen Sie wie folgt vor:
- Starten Sie die ABAP Runtime Analysis (Transaktion SE30) über System -> Hilfsmittel -> Laufzeitanalyse -> Ausführen oder rufen Sie die Transaktion direkt mit
/nse30auf. - Geben Sie im Feld “Transaktion” den Wert “SE38” ein.
- Erstellen Sie eine Messvariante für Ihren Benutzer:
- Geben Sie einen Namen in das Feld “Variante” ein und klicken Sie auf die Schaltfläche “Anlegen”.
- Stellen Sie auf der Registerkarte “Dauer/Typ” die Aggregation auf “Keine”. Dies ist entscheidend, um jeden einzelnen Schritt des Programmablaufs zu sehen und keine Informationen durch Zusammenfassungen zu verlieren.
- Für Informationen zur Speichernutzung aktivieren Sie das Kontrollkästchen “Mit Speichernutzung”.
- Schalten Sie auf der Registerkarte “Programmteile” die Option “Bestimmte Einheiten” ein. Dies ermöglicht es Ihnen, die Erfassung des Traces gezielt ein- und auszuschalten.
- Sichern Sie Ihre Variante.
Abbildung 3: Konfiguration einer Messvariante
Bevor wir fortfahren, einige wichtige Hinweise zur Konfiguration Ihrer sap se30 Messung:
- Keine Aggregation für Programmflussanalyse: Verwenden Sie niemals die Aggregation, wenn Sie einen ABAP Trace zur Analyse des Programmflusses erstellen möchten. Die Aggregation fasst Trace-Daten für einen bestimmten Ereignistyp zu einem einzigen Trace-Datensatz zusammen, was die Anzahl der Einträge in der Trace-Datei reduziert. Für die vollständige Nachverfolgung des Programmflusses benötigen Sie jedoch alle Trace-Daten.
- Nutzung von “Bestimmte Einheiten”: Setzen Sie diese Option, wo immer möglich. Sie hilft, die Trace-Datei zu verkleinern und nur den Code zu verfolgen, der Sie wirklich interessiert. Mit dieser Option können Sie den ABAP Trace während der laufenden Transaktion ein- und ausschalten. Der Trace wird gestartet, sobald Sie
/ron(Trace an) in das Eingabefeld im Transaktionsbild eingeben. Mit/roffwird der Trace gestoppt. Alternativ können Sie auch den Menüpfad nutzen: System -> Hilfsmittel -> Laufzeitanalyse -> Ein-/Ausschalten.
Nun führen wir die Messung durch:
- Klicken Sie auf die Schaltfläche “Ausführen”. Die Transaktion SE38, der ABAP Editor, startet.
- Geben Sie “XXX” in das Feld “Programm” ein und schalten Sie den Trace ein mit System -> Hilfsmittel -> Laufzeitanalyse -> Ein.
- Drücken Sie die Schaltfläche “Anzeigen” und schalten Sie den Trace wieder aus mit System -> Hilfsmittel -> Laufzeitanalyse -> Aus.
Abbildung 4: Ausführung der Transaktion mit aktiviertem Trace
Kehren Sie zur Runtime Analysis zurück und analysieren Sie die Trace-Ergebnisse:
- Drücken Sie die Schaltfläche “Auswerten”.
- Klicken Sie auf die Schaltfläche “Aufrufhierarchie”. Sie erhalten eine Liste, die den vollständigen Pfad durch Ihr Programm darstellt.
- Suchen Sie in der Liste der Aufrufhierarchie nach “message DS017”.
- Doppelklicken Sie auf den Eintrag in der Liste der Aufrufhierarchie, um direkt zur Quellcode-Zeile zu springen, die die Fehlermeldung ausgelöst hat.
Abbildung 5: Auswertung der Aufrufhierarchie
Nachverfolgung eines langlaufenden Batch-Jobs
Stellen Sie sich folgende Situation vor: Sie sind Administrator eines Produktionssystems und sehen in der Prozessübersicht (Transaktion SM50) einen Batch-Prozess, der bereits seit mehreren Tagen läuft und Daten aus einer Datenbanktabelle selektiert. Dieser Prozess blockiert andere Hintergrundjobs, und Sie müssen herausfinden, was genau er tut.
Abbildung 6: Prozessübersicht (SM50)
Mit der ABAP Runtime Analysis können Sie dies sehr einfach herausfinden. sap se30 ermöglicht es Ihnen, Programme, die in einer parallelen Sitzung laufen, zu tracen.
Stellen Sie sicher, dass Sie SE30 auf demselben Server ausführen wie der laufende Prozess!
Sie müssen eine Trace-Variante für das Tracen des parallelen Prozesses erstellen oder anpassen. Setzen Sie die Aggregation erneut auf “Keine”, um die Aufrufhierarchie zu erhalten.
Drücken Sie die Schaltfläche “Ein-/Ausschalten”, um Prozesse zu tracen, die in einer parallelen Sitzung laufen. Die Runtime Analysis zeigt eine Liste der laufenden Prozesse ähnlich der Prozessübersicht (Transaktion SM50).
Verwenden Sie die Schaltflächen “Messung starten/Messung beenden”, um den Trace zu aktivieren und zu deaktivieren.
Vorsicht: Deaktivieren Sie den Trace nach kurzer Trace-Zeit wieder, um das Trace-Datei-Kontingent nicht zu überschreiten! Bevor Sie den Trace deaktivieren, aktualisieren Sie die Workprozessanzeige. Der Dialogschritt, der im Workprozess mit aktiviertem Trace aktiv war, hat sich möglicherweise geändert und deaktiviert den Trace automatisch.
Abbildung 7: Tracen von parallelen ProzessenDrücken Sie die Schaltfläche “Auswerten”, um die Trace-Ergebnisse zu analysieren.
Abbildung 8: Analyse eines Batch-Jobs mit SE30
Durch die Analyse des Traces können Sie erkennen, welche spezifischen Datenbankoperationen oder Schleifen der langlaufende Batch-Job ausführt, was Ihnen hilft, Engpässe oder unerwartetes Verhalten zu identifizieren.
Tracen von HTTP/RFC-Anfragen oder Prozessen anderer Benutzer
Es gibt häufig Situationen, in denen Sie HTTP- oder RFC-Anfragen oder Prozesse anderer Benutzer tracen müssen. Hier sind einige Beispiele:
Stellen Sie sich ein Online-Flugbuchungssystem vor. Wenn ein Benutzer einen Flug reservieren möchte, erreicht seine HTTP-Anfrage Ihr Backend-System. Sie müssen den Reservierungsprozess tracen, der in Ihrem ABAP-Backend-System läuft. In einem solchen Fall wissen Sie nicht, welcher ABAP-Backend-Prozess welche HTTP-Anfrage bearbeitet, und haben keine Ahnung, wann die HTTP-Anfrage Ihr ABAP-Backend-System erreichen wird. Daher ist es schwierig, eine solche Anfrage für das Debugging im entsprechenden ABAP-Backend-Prozess zu erfassen.
Ein weiteres gutes Beispiel wären häufige RFC-Anfragen, die Ihr ABAP-System erreichen und nur wenige hundert Millisekunden dauern. Es ist sehr schwierig, solche kurzlebigen Anfragen zu tracen. Möglicherweise müssen Sie auch mit einem Batch-Job umgehen, der unter einem anderen Benutzer läuft, immer zu unterschiedlichen Zeiten startet und sporadisch mit einem Short Dump abbricht. Wie können Sie so etwas tracen?
Die ABAP Runtime Analysis (SE30) bietet eine Lösung. Sie ermöglicht es Ihnen, einen Trace für jeden Benutzer auf dem aktuellen Server zu planen.
- Starten Sie die ABAP Runtime Analysis (SE30).
- Erstellen Sie Ihre Trace-Variante und stellen Sie die Aggregation erneut auf “Keine” ein, um die Aufrufhierarchie zu erhalten.
- Drücken Sie im Bereich “Planen” auf der Startseite die Schaltfläche “Für Benutzer/Service”.
- Drücken Sie auf der Übersicht “Geplante Messungen” die Schaltfläche “Messung planen”.
Die Transaktion zeigt ein Pop-up an, auf dem Sie einen asynchronen Trace nach folgenden Kriterien planen können:
- Benutzer: Geben Sie den spezifischen Benutzernamen ein.
- Mandant: Der Mandant, in dem der Prozess läuft.
- Externe Sitzung: Wählen Sie “Beliebig”, wenn Sie unsicher sind, in welcher Sitzung die Anwendung ausgeführt wird.
- Prozesskategorie: (Dialog, Batch, RFC, HTTP, ITS usw.) Wählen Sie die relevante Kategorie aus.
- Objekttyp: (Transaktion, Report, Funktionsbaustein, Beliebig usw.)
- Objekt: Geben Sie beispielsweise nur die Transaktion SE38 an, wenn Sie nur diese tracen möchten.
- Max. Anzahl geplanter Messungen: Legen Sie die maximale Anzahl von Traces fest.
- Ablaufdatum und -zeit: Definieren Sie den Zeitraum, in dem der Trace aktiv sein soll.
Abbildung 9: Planung einer Messung für einen bestimmten Benutzer
Wenn der Trace geplant ist, startet die ABAP Runtime Analysis den Trace automatisch, sobald eine Sitzung, die Ihren Kriterien entspricht, auf dem System gestartet wird. Der von Ihnen angegebene Benutzer meldet sich am System an und führt seine Aufgabe aus, und die ABAP Runtime Analysis beginnt mit dem Schreiben des Traces. Die Trace-Ergebnisse können wie gewohnt in der ABAP Runtime Analysis ausgewertet werden (über die Schaltfläche “Auswerten” auf der Startseite).
Die Nutzung der sap se30 Transaktion zur detaillierten Analyse des Programmflusses ist ein mächtiges Werkzeug für jeden ABAP-Entwickler und Administrator. Indem Sie über die reine Performance-Analyse hinausgehen und die Möglichkeiten des ABAP Traces ausschöpfen, können Sie die Ursachen komplexer Probleme schneller aufdecken, die Zuverlässigkeit Ihrer Anwendungen erhöhen und Ihr Verständnis für die Funktionsweise von SAP-Systemen vertiefen. Beginnen Sie noch heute damit, sap se30 für tiefgreifende Programmflussanalysen einzusetzen!

Abbildung 7: Tracen von parallelen Prozessen