25
1 Martin Steinberg #sitMUC 2013 ABAP Test & Troubleshooting @sitMUC Dies ist das Handout zum Vortrag zum Thema “ABAP Test & Troubleshooting” zum SAP Inside Track München 2013. Es beinhaltet alle besprochenen Themen und gezeigten Features. Alle gezeigten Screenshots stammen aus einem Trialsystem des AS ABAP 7.40 der SAP AG (Copyright). Vielen Dank an dieser Stelle auch an Carlos Aceves für die Unterstützung. Inhaltsverzeichnis ABAP Debugger (ab 7.02) .................................................................................................................................................. 3 Layout sichern ............................................................................................................................................................... 3 Debugger Session sichern ............................................................................................................................................. 3 Werkzeuge .................................................................................................................................................................... 4 Einstellungen des Debuggers ........................................................................................................................................ 4 System Debugging ..................................................................................................................................................... 4 Verbuchungsdebugging ............................................................................................................................................ 4 tRFC Debugging ......................................................................................................................................................... 4 Schließe Debugger nach F8 und Rollbereich Ende.................................................................................................... 4 Break- und Watch-Points .............................................................................................................................................. 5 Session Breakpoints .................................................................................................................................................. 5 External Breakpoint................................................................................................................................................... 5 Verfügbare Breakpoint-Typen während des Debuggings ......................................................................................... 6 Watchpoint-Typen .................................................................................................................................................... 6 Bedingungsgesteuerte Break- & Watchpoints .......................................................................................................... 6 Statement Debugging ............................................................................................................................................... 7 Variablen im Debugger ändern löst einen Eintrag in SM21 aus ................................................................................... 7 Alle geladene Programme anzeigen ............................................................................................................................. 8 Testdaten für SE37 speichern ....................................................................................................................................... 8 Debugging von Batch-Jobs ............................................................................................................................................ 8 Diff-Tool ........................................................................................................................................................................ 8 Debugging von http-requests ....................................................................................................................................... 8 Hilfreiche Debugger OK-CODES .................................................................................................................................... 8 Debugging aus Shortdump starten (ST22) .................................................................................................................... 9 Debugging in SM50 und SM66 ...................................................................................................................................... 9 Table Tool .................................................................................................................................................................... 10 Objektreferenzen .................................................................................................................................................... 10 Ändern von Tabelleninhalten.................................................................................................................................. 11 Debugging von Popups ............................................................................................................................................... 11 Remote Debugging (RFC und http) ............................................................................................................................. 12 Debugging synchroner RFC-Aufrufe mit Kommunikationsuser .............................................................................. 12 Debugging synchroner RFC-Aufrufe mit „trusted connection“ .............................................................................. 12

ABAP Test & Troubleshooting @SITMuc 2013

Embed Size (px)

DESCRIPTION

Hierbei handelt es sich um das Handout des Vortrags zum Thema "ABAP Test & Troubleshooting" während des SAP Inside Track Munich 2013 von Martin Steinberg. Das Handout beinhaltet alle besprochenen Themen und einiges darüber hinaus.

Citation preview

Page 1: ABAP Test & Troubleshooting @SITMuc 2013

1 Martin Steinberg #sitMUC 2013

ABAP Test & Troubleshooting @sitMUC Dies ist das Handout zum Vortrag zum Thema “ABAP Test & Troubleshooting” zum SAP Inside Track München 2013.

Es beinhaltet alle besprochenen Themen und gezeigten Features. Alle gezeigten Screenshots stammen aus einem

Trialsystem des AS ABAP 7.40 der SAP AG (Copyright).

Vielen Dank an dieser Stelle auch an Carlos Aceves für die Unterstützung.

Inhaltsverzeichnis ABAP Debugger (ab 7.02) .................................................................................................................................................. 3

Layout sichern ............................................................................................................................................................... 3

Debugger Session sichern ............................................................................................................................................. 3

Werkzeuge .................................................................................................................................................................... 4

Einstellungen des Debuggers ........................................................................................................................................ 4

System Debugging ..................................................................................................................................................... 4

Verbuchungsdebugging ............................................................................................................................................ 4

tRFC Debugging ......................................................................................................................................................... 4

Schließe Debugger nach F8 und Rollbereich Ende .................................................................................................... 4

Break- und Watch-Points .............................................................................................................................................. 5

Session Breakpoints .................................................................................................................................................. 5

External Breakpoint................................................................................................................................................... 5

Verfügbare Breakpoint-Typen während des Debuggings ......................................................................................... 6

Watchpoint-Typen .................................................................................................................................................... 6

Bedingungsgesteuerte Break- & Watchpoints .......................................................................................................... 6

Statement Debugging ............................................................................................................................................... 7

Variablen im Debugger ändern löst einen Eintrag in SM21 aus ................................................................................... 7

Alle geladene Programme anzeigen ............................................................................................................................. 8

Testdaten für SE37 speichern ....................................................................................................................................... 8

Debugging von Batch-Jobs ............................................................................................................................................ 8

Diff-Tool ........................................................................................................................................................................ 8

Debugging von http-requests ....................................................................................................................................... 8

Hilfreiche Debugger OK-CODES .................................................................................................................................... 8

Debugging aus Shortdump starten (ST22) .................................................................................................................... 9

Debugging in SM50 und SM66 ...................................................................................................................................... 9

Table Tool .................................................................................................................................................................... 10

Objektreferenzen .................................................................................................................................................... 10

Ändern von Tabelleninhalten .................................................................................................................................. 11

Debugging von Popups ............................................................................................................................................... 11

Remote Debugging (RFC und http) ............................................................................................................................. 12

Debugging synchroner RFC-Aufrufe mit Kommunikationsuser .............................................................................. 12

Debugging synchroner RFC-Aufrufe mit „trusted connection“ .............................................................................. 12

Page 2: ABAP Test & Troubleshooting @SITMuc 2013

2 Martin Steinberg #sitMUC 2013

Debugging synchroner Aufruf mittels externem Break-Point ................................................................................ 13

Request Based Debugging (RFC und http) .................................................................................................................. 14

Software Layer Aware Debugging ............................................................................................................................... 14

Ausgangssituation ................................................................................................................................................... 14

Verwendung ............................................................................................................................................................ 14

Verwendungsvariante 1: adhoc definierte Objektmengen .................................................................................... 14

Verwendungsvariante 2: Nutzung vordefinierter Objektmengen .......................................................................... 16

Weitere Informationen zu diesem Thema .............................................................................................................. 16

ABAP Laufzeitanalyse mit SAT......................................................................................................................................... 17

Einstiegsbildschirm (Reiter Messen) wie in SE30 ........................................................................................................ 17

Neuer Reiter „Auswerten“ .............................................................................................................................................. 17

Varianten ..................................................................................................................................................................... 18

Trace starten ............................................................................................................................................................... 19

Trace auswerten ......................................................................................................................................................... 19

Programmflussanalyse ............................................................................................................................................ 19

Debugging mit ABAP Development Tools - Übersicht .................................................................................................... 21

Übersicht Debugger .................................................................................................................................................... 21

Break-Point-Arten ................................................................................................................................................... 22

Übersicht Profiler ........................................................................................................................................................ 23

Empfehlungen ................................................................................................................................................................. 25

Weiterführende Informationen ...................................................................................................................................... 25

Page 3: ABAP Test & Troubleshooting @SITMuc 2013

3 Martin Steinberg #sitMUC 2013

ABAP Debugger (ab 7.02)

Layout sichern Die Arbeitsfläche des ABAP Debugger lässt sich individuell anpassen. Beispielsweise können die Namen der Reiter

der ersten drei Desktops umbenannt werden (siehe gelbe Markierung im Screenshot, Menüpunkt „Benamung des

Benutzer-Desktops“ im zweiten Bild). Um das Layout nicht bei jedem Start des ABAP Debugger von neuem

konfigurieren zu müssen, lässt sich das Layout sichern.

Somit sind die Einstellungen (benutzerspezifisch) beim nächsten Start des Debuggers automatisch verfügbar. Ebenso

kann man das Layout über Debugger Debugger Sitzung Layout sichern speichern.

Debugger Session sichern Hier findet man auch die Möglichkeiten zur Sicherung einer komplexen Debugger Session (viele Break-/Watchpoints,

evtl. sogar mit Bedingungen verknüpft) sowie diese zu laden, um diese bspw. für den nächsten Tag zu sichern oder

einem Kollegen zu übergeben

Page 4: ABAP Test & Troubleshooting @SITMuc 2013

4 Martin Steinberg #sitMUC 2013

Werkzeuge Jedes Werkzeug lässt sich austauschen, also gegen ein anderes auswechseln. Will man beispielsweise das Werkzeug

zur Anzeige des ABAP & Dynpro Stacks gegen die Anzeige der Report-Listen-Vorschau tauschen, geht man während

des Debugging-Vorgangs wie folgt vor:

Icon „Werkzeug tauschen“ betätigen

Im darauf folgenden Popup das Werkzeug „Konsole: XML- und Listenvorschau“

auswählen.

Während der Ausführung des Reports mit Listenausgabe

kann das Ergebnis während des Debuggings in diesem Werkzeug

Geprüft werden:

Einstellungen des Debuggers Bei aktivem Debugger Einstellungen Debugger Profil/Einstellungen ändern

System Debugging

Debuggen von Objekten, welche als Systemprogramme gekennzeichnet sind.

Verbuchungsdebugging

Registriert den Debugger für das Erreichen von IN UPDATE TASK gerufenen Bausteinen.

tRFC Debugging

Verhindert das Senden des tRFC und „hält den request“ im Zugriff für den Debugger fest. Ebenso in Transaktion

SM58 möglich: LUW auswählen und über Bearbeiten LUW debuggen den Debugger starten

Schließe Debugger nach F8 und Rollbereich Ende

Schließt den Modus in dem der Debugger läuft, der ansonsten im Hintergrund noch inaktiv vorhanden ist.

Page 5: ABAP Test & Troubleshooting @SITMuc 2013

5 Martin Steinberg #sitMUC 2013

Break- und Watch-Points

Session Breakpoints

Geltungsbereich für eine Anmeldung an einem System.

Beispiel: „Endlosschleife“ (Report: ZSITMUC_REPORT_1)

Hat man im Dialog eine Anwendung gestartet, die in einer Endlosschleife gemündet ist, dann hilft es in einem

zweiten Modus (vorher öffnen ) in die Source einen Session-Breakpoint einzufügen.

Wichtig ist, dass unter Hilfsmittel Einstellungen

External Breakpoint

Geltungsbereich für den gesamten AS ABAP, außer es wurde in den Einstellungen auf den aktuellen

Applikationsserver der Anmeldung eingeschränkt.

Page 6: ABAP Test & Troubleshooting @SITMuc 2013

6 Martin Steinberg #sitMUC 2013

Verfügbare Breakpoint-Typen während des Debuggings

Die einzelnen Typen werden über den Button Create Breakpoint bei aktivem Debugger angelegt. Die einzelnen

Reiter repräsentieren dabei einen Breakpoint-Typ.

ABAP-Anweisung

o F4-Hilfe für Auswahl des Kommandos nutzen

o Z. B. Befehl „GET BADI“ in einer SAP Standard-Transaktion (bspw. BP) suchen

Methoden-spezifisch

o Breakpoint wird bei Aufruf der genannten Methode ausgelöst

Web Dynpro Entitäten

o Bei Eintritt in Components, Controllers und Methods wird der Name zur Laufzeit aufgelöst und ein

Breakpoint gesetzt

Simple Transformations (ST)

o Setzen eines Breakpoints in einer Zeile einer SimpleTransformation

o Hinweis: es gibt auch einen eigenen XSLT-Debugger in der SE80 speziell für die isolierte Betrachtung

von ST

ABAP stack

Screen Change

MESSAGE

o Generell bei MESSAGE-Anweisung

o Auch bei speziellen Nachrichten

Watchpoint-Typen

Für interne Tabelle

Klassen und deren Attribute

o Monitoring von Objekten und deren Attribute zur Laufzeit

Anwendung wird angehalten, sobald einer der Werte verändert wird oder die angegebene Bedingung erfüllt ist. Z. B.

Bedingung: LINES(lt_customers) > 200

Bedingungsgesteuerte Break- & Watchpoints

Szenario: Eine interne Tabelle wird mit massenhaften Daten befüllt. Ein einzelner Datensatz wird aus ungeklärter

Ursache nicht korrekt in die Tabelle eingefügt.

Zur Laufzeit des Debuggers mit der rechten Maustaste auf den Breakpoint klicken und eine Bedingung hinzufügen.

1. Break-Point anlegen (im Debugger über )

2. Rechtsklick auf den neu angelegten Break-

Point und „Bedingung hinzufügen“

Page 7: ABAP Test & Troubleshooting @SITMuc 2013

7 Martin Steinberg #sitMUC 2013

Statement Debugging

Stehen mehrere Anweisungen in einer Quelltextzeile, hält der ABAP Debugger bis einschließlich Release 7.0 EhP2

auch bei Verwendung des Einzelschritts nur einmal pro Zeile. Ab 7.02 (bzw. 7.20) kann die Schrittweite verändert

werden. Dies ermöglicht das Debuggen von Teilausdrücken, wie die nachfolgende Grafik veranschaulichen soll:

Quelle: scn

Besonders gut veranschaulichen lässt sich der Zustand mit dem Report ZSITMUC_REPORT_2. Dieser enthält alle

Anweisungen in einer Zeile, folglich wird während des Debuggings auch nur ein Schritt ausgeführt (bei Schrittweite

„Zeile/Anweisungen“).

Nach Umstellung auf Teilbedingung/Anweisung über den Button „Schrittweite“ lassen sich die einzelnen

Anweisungen debuggen.

Variablen im Debugger ändern löst einen Eintrag in SM21 aus Sobald eine Variable im Debugger verändert wird schreibt das System automatisch einen Eintrag in SM21.

(Abbildungen zeigen neue SM21, welche mit AS ABAP 7.40 ausgeliefert wird)

Page 8: ABAP Test & Troubleshooting @SITMuc 2013

8 Martin Steinberg #sitMUC 2013

Alle geladene Programme anzeigen Spezialprogramm „Geladene Programme“ hinzufügen (über Menüpunkt zum jeweilig auszutauschenden Werkzeug:

Werkzeug tauschen).

Testdaten für SE37 speichern Aus dem Debugger können Testwerte für SE37 zu Funktionsbausteinen gesichert werden.

Debugging von Batch-Jobs In Transaktion SM37 den entsprechenden Job markieren (erstes Kästchen) und im Feld OK-CODE den Wert „jdbg“

eingeben (ohne Anführungszeichen). SYST-BATCH = ‚X‘, auch bei Debugging im Dialog!

Diff-Tool Vergleich von beliebigen Variablen, internen Tabellen, Objekten, etc.

Klasse: CL_TPDA_TOOL_DIFF

Debugging von http-requests Für Web Dynpro ABAP, BSP, SAPUI5. Aktivierung in Transaktion SICF (Edit Debugging Activate Debugging).

Beachte Hinweis 668256

Hilfreiche Debugger OK-CODES /h activate debugging

/hs activate system debugging

/ha skip dynpro (PAI, PBO) and directly debug ABAP code

/hx detach debugger

/hmusa create memory snapshot (can be used in the transaction S_MEMORY_INSPECTOR for memory consumption

analysis)

jdbg in SM37 restart of a finished or crashed background job for debugging

/ron start ABAP Runtime Analysis measurement (transaction SE30)

/roff stop ABAP Runtime Analysis measurement (transaction SE30)

Page 9: ABAP Test & Troubleshooting @SITMuc 2013

9 Martin Steinberg #sitMUC 2013

Debugging aus Shortdump starten (ST22) Auch aus der Transaktion ST22 lässt sich der Debugger starten um einen Kurzdump analysieren zu können.

Im Debugger hat man die Möglichkeit die Variablen/Objekte oder auch den Stack zu prüfen und abschließend den

Debugger zu beenden.

Nachdem der Debugger einmal gerufen wurde, kann man diesen nicht nochmal aus ST22 heraus für denselben

Shortdump starten.

Debugging in SM50 und SM66 Über den Button „Debugging“.

Page 10: ABAP Test & Troubleshooting @SITMuc 2013

10 Martin Steinberg #sitMUC 2013

Table Tool

Objektreferenzen

Tabellen können als Inhalte Referenzen auf Objekte besitzen. Ist der Inhalt dieser Objekte interessant, ist das

manuelle Öffnen einer jeden Referenz nicht praktikabel.

Nutzen Sie daher die Möglichkeit, Unterkomponenten einzufügen durch linken Mausklick auf den Button „Spalten…“

und anschließender Verwendung des Strukturbuttons (siehe Zeile 7):

Am unteren Ende des Popups befindet sich ein Speichern-Button. Wenn Sie die Konfiguration nicht sichern ist diese

nach dem Ende des Debugging-Vorgangs nicht mehr vorhanden und muss wieder manuell angelegt werden. Können

aber exportiert werden um diese mit anderen Kollegen zu teilen (copy & paste in eine Mail).

Testprogramm: TPDA_TOOL_TEST_TABLEVIEWER

Interne Tabelle mit 1000 Einträgen und Objektreferenzen. Rechte Maustaste auf die Spalte mit Objektreferenzen

„Spalten Unterkomponenten einfügen“

Page 11: ABAP Test & Troubleshooting @SITMuc 2013

11 Martin Steinberg #sitMUC 2013

Ändern von Tabelleninhalten

Insofern im System das Ändern von Variablen im Debugger erlaubt ist, kann der Tabelleninhalt über das Service-

Menü des Werkzeugs modifiziert werden (oder über rechte Maustaste):

Debugging von Popups

Auf dem Desktop wurde nun eine Verknüpfung abgelegt.

Starten Sie nun die Anwendung und öffnen Sie das Popup, z. B. eine Suchhilfe. Nehmen Sie nun die Verknüpfung

vom Desktop und ziehen Sie diese (drag & drop) auf die Titelleiste des Popups.

Page 12: ABAP Test & Troubleshooting @SITMuc 2013

12 Martin Steinberg #sitMUC 2013

Remote Debugging (RFC und http) Bei systemübergreifenden Anwendungen ist das Setzen eines Haltepunkts oftmals nicht möglich, da zum einen

andere Benutzer für die technische Kommunikation angewandt werden.

Debugging synchroner RFC-Aufrufe mit Kommunikationsuser

Kein Session Break-Point im Zielfunktionsbaustein gesetzt. Die Schrittweite des Debuggers muss zwingend auf

„Zeilen/Anweisung“ eingestellt sein!

Einfach mit F5 (Einzelschritt) dem Programmfluss folgen

Die Debugger-Session wird automatisch im Zielsystem fortgesetzt

Die Benutzersession ist die des technischen Kommunikationsusers

Mit F8 oder entsprechend vielen Einzelsteps gelangt man wieder in das Quellsystem, also den Client.

Diese Variante kann angewandt werden, wenn der Entwickler selbst die Anwendung starten und debuggen kann und

sRFC (CALL FUNCTION mit Zusatz „DESTINATION“ und Rückgabeparametern) angewandt wird. Gleiches gilt für die

nachfolgende Beschreibung zur „trusted connection“.

Debugging synchroner RFC-Aufrufe mit „trusted connection“

Hierbei handelt es sich um eine RFC-Verbindung (Transaktion SM59) welche die Anmeldedaten an den Zielserver

weiterreicht und somit zur Authentifizierung im Zielsystem verwendet.

Zum einen kann bei Start des Debuggings im Sendersystem auch mit F5 in die Funktion verzweigt werden. Ist die

Aufrufstelle nicht erreichbar, so reicht im Zielsystem das Setzen eines externen Break-Points (ohne zwingend den

Bezug zu einer Terminal-ID zu haben). Die Schrittweite des Debuggers muss zwingend auf „Zeilen/Anweisung“

eingestellt sein!

Page 13: ABAP Test & Troubleshooting @SITMuc 2013

13 Martin Steinberg #sitMUC 2013

Debugging synchroner Aufruf mittels externem Break-Point

Falls Sie einen synchronen RFC-Request von System A nach System B in System B debuggen möchten, müssen Sie

zuerst den technischen Kommunikationsuser, über den die RFC-Verbindung aufgebaut wird, im Zielsystem auf

„Dialog“ umstellen. Dann haben Sie die Möglichkeit, einen externen Break-Point mit Bezug zu diesem User in einem

RFC-fähigen Funktionsbaustein (RFC-Service) anzulegen.

1. Anpassen der Einstellungen zu externen Break-Points (SE80 Hilfsmittel Einstellungen)

2. Setzen des Break-Points (hier: Benutzer DEVELOPER)

3. Aufruf der Anwendung, welche den RFC-Service konsumiert (hier: Benutzer DDIC)

4. Break-Point wird zur Laufzeit erkannt Debugger startet

Page 14: ABAP Test & Troubleshooting @SITMuc 2013

14 Martin Steinberg #sitMUC 2013

Request Based Debugging (RFC und http) Falls der zu debuggende Vorgang nicht von dem Benutzer gestartet werden kann, der letztlich das Debugging

ausführt kann das sog. “request based debugging” eingesetzt werden. Hierbei wird im linken Screen unter einem

anderen Usernamen/System der Report gestartet, während der externe Break-Point im rechten Screen auf eine TID

registriert und dort über die Zuordnung angesprochen wird (Benutzername ist unerheblich, es gilt die TID).

Software Layer Aware Debugging

Ausgangssituation

Ist die konkrete Platzierung des Break-Points nicht eindeutig kann man den Debugging-Vorgang durch Eingrenzen

von Objektmengen erheblich beschleunigen.

Verwendung

Transaktionscode für Konfiguration und Übersicht: SLAD

Verwendungsvariante 1: adhoc definierte Objektmengen

Um das SLAD nutzen zu können, müssen Sie zuerst in der Transaktion unmittelbar vor der Interaktion (z. B. Auslösen

einer Funktion wie „Sichern“) in den Debugging-Modus wechseln:

/h

Anschließend müssen Sie das SLAD aktivieren:

Page 15: ABAP Test & Troubleshooting @SITMuc 2013

15 Martin Steinberg #sitMUC 2013

Tragen Sie hier die zu debuggende Objektmenge ein (hier bspw. die Einschränkung auf ein Paket).

Die direkte Definition der Objektmenge ist selbstsprechend. Der Debugger wird automatisch beim Ein- und/oder

Austritt in eine Verarbeitungsroutine (Methode, FuBa, o. ä.) eines Objekts des Pakets

„SABAP_DEMOS_CAR_RENTAL_PERSIST“ anhalten. Dieses Paket ist Bestandteil einer Demoanwendung, die mit

jedem AS ABAP ab 7.02 ausgeliefert wird.

Gleichzeitig ist die Anlage von Profilen zur dauerhaften Hinterlegung möglich, bspw. für wiederkehrende Debugging-

Gegenstände, welche sich für die Nutzung empfiehlt (Transaktion SLAD).

Nun muss über „Nächste Objektmenge“ im Debugger fortgefahren werden. Der nächste Halt wird ohne vorherige

Definition eines Haltepunkts der Objektmenge entsprechend stattfinden.

Page 16: ABAP Test & Troubleshooting @SITMuc 2013

16 Martin Steinberg #sitMUC 2013

Verwendungsvariante 2: Nutzung vordefinierter Objektmengen

Einstiegspunkt für die Erstellung von Vordefinierten Objektmengen ist die Transaktion SLAD. Für die Organisation der

Objektmengen und Profilen wird die SAP Anwendungshierarchie angewandt. Für das Debugging relevant ist das

SLAD-Profil, welches Objektmengen (beliebig verknüpfbar) beinhaltet bzw. referenziert.

Beim Anlegen einer Objektmenge müssen Sie eine Beschreibung sowie eine ID im Z-Namensraum vergeben. Z. B.

ZSITMUC_OBJECT_SET.

Screenshot SLAD – Ansicht Objektmenge

Die Selektionskriterien können „Einzelpakete“, „Pakete mit Unterpaketen“ (hier erweist die sich die aktuell

durchgeführte Paketzuordnung als äußerst hilfreich, z. B. wenn zum Zeitpunkt des Einstiegs in die Analyse das exakte

Paket noch unbekannt ist), „Klassen“, „Funktionsbausteine“ sowie „implementierte Interfaces“.

Die Objektmenge muss noch mit dem SLAD-Profil verknüpft werden:

Screenshot SLAD – Ansicht SLAD-Profil

Hinterlegen Sie hier die Objektmenge und definieren Sie, wann der Debugger anhalten soll und ob die restlichen

Komponenten außerhalb der Objektmenge sichtbar sein sollen.

Weitere Informationen zu diesem Thema

http://scn.sap.com/people/stephen.pfeiffer/blog/2010/07/27/layer-aware-debugging-in-nw-70-ehp2

Page 17: ABAP Test & Troubleshooting @SITMuc 2013

17 Martin Steinberg #sitMUC 2013

ABAP Laufzeitanalyse mit SAT

Einstiegsbildschirm (Reiter Messen) wie in SE30

Neuer Reiter „Auswerten“ Die Traces werden in der Datenbank gespeichert und sind von allen Benutzern auf allen Application Servern

auswertbar.

Beim erstmaligen Anzeigen eines Traces wird dieser formatiert und in die Datenbank geschrieben (zuvor liegt er als

Datei auf dem Application Server). Dies gilt ebenso für die Option „sofort auswerten“.

Anzeige der Namen von internen Tabellen aus dem

ABAP Quelltext.

Page 18: ABAP Test & Troubleshooting @SITMuc 2013

18 Martin Steinberg #sitMUC 2013

Varianten Diese sind die Basis aller Auswertungen in SAT.

Je nach Problemzone unbedingt die Anzahl der Anweisungen einschränken. Meist reicht eine Analyse von

Verarbeitungsblöcken und Datenbankzugriffen.

Falls die einzelnen Objekte benannt werden können, für die ein Trace geschalten werden soll, dann können diese im

letzten Reiter „Programmteile“ angegeben werden.

Programmflussanalyse

n Performanceanalyse

Page 19: ABAP Test & Troubleshooting @SITMuc 2013

19 Martin Steinberg #sitMUC 2013

Trace starten Nachdem die Variante gepflegt wurde muss der Trace gestartet werden. Am einfachsten ist der Start direkt aus dem

Dialog „Sofort ausführen“.

Ferner kann auch explizit ein-/ausgeschaltet werden (System Hilfsmittel Laufzeitanalyse, oder über /ron /roff)

Trace auswerten Der Arbeitsbereich ist stark an den ABAP Debugger angelehnt.

Programmflussanalyse

Wann notwendig?

1. Herausfinden, ob ein Objekt im Programmablauf involviert ist

2. Vergleich der Programmflüsse von verschiedenen Systemen (z. B. abweichendes Verhalten in

Produktivumgebung) in beiden Systemen tracen und dann vergleichen

In der Variante keine Aggregation verwenden, ansonsten wird die Aufrufhierarchie nicht erzeugt

In der Auswertung folgende Tools verwenden:

Aufrufhierarchie-Tool

Zeigt den Verlauf der Aufrufe der gemessenen/angezeigten Repository-Objekte.

Per Doppelklick in den Quelltext verzweigen

Rechte Maustaste auf die Anweisung Im Verarbeitungsblöcke-Werkzeug anzeigen

Aufrufstack über Button anzeigbar (zuvor Zeile markieren)

Verarbeitungsblöcke-Tool

Erleichtert die Navigation in der Aufrufhierarchie durch die Baumstruktur

Es können die „kritischen Verarbeitungsblöcke“ über den Button automatisch ermittelt werden

Für die Sequenzdiagrammgenerierung ist es notwendig, die Anzeigemenge der gesamten Auswertung zu

beschränken! Dies geschieht über den allgemeinen Filter .

Page 20: ABAP Test & Troubleshooting @SITMuc 2013

20 Martin Steinberg #sitMUC 2013

Einschränkung nach SLAD-Objektmenge

Danach über den Button das Sequenzdiagramm generieren. Hierzu ist die JNet Gantt

Komponente der SAP Gui Installation notwendig. Diese ist ggf. mit Adminrechten zu installieren.

Page 21: ABAP Test & Troubleshooting @SITMuc 2013

21 Martin Steinberg #sitMUC 2013

Debugging mit ABAP Development Tools - Übersicht

Übersicht Debugger In Eclipse setzen Sie Break-Points ähnlich wie in der Workbench. In den linken Bereich neben den Zeilennummern:

Führen Sie den ABAP-Report aus:

Der Break-Point wird zur Laufzeit erkannt und die Eclipse-Perspektive für das Debuggen öffnet sich:

Page 22: ABAP Test & Troubleshooting @SITMuc 2013

22 Martin Steinberg #sitMUC 2013

Break-Point-Arten

In ABAP in Eclipse (ADT) stehen aktuell drei verschiedene Arten von Break-Points zur Verfügung:

Klassischer Break-Point

Exception-Break-Point (wird die genannte Ausnahme ausgelöst wird, hält der Break-Point die Verarbeitung an)

Statement-Break-Point (Anhalten bei einer bestimmten Anweisung)

ABAP Stack Anzeige Variablenanzeige

Quelltextbereich

Table Tool

Page 23: ABAP Test & Troubleshooting @SITMuc 2013

23 Martin Steinberg #sitMUC 2013

Übersicht Profiler Die Einstellungen die Sie in der Transaktion SAT im Einstiegsbildschirm bzw. den Varianten tätigen, stellen Sie in

Eclipse diese unter „Window Preferences“ ein:

Es gelten die gleichen Regeln wie für die Transaktion SAT.

Starten Sie die Vermessung der Anwendung über das Kontextmenü wie folgt:

Anschließend finden Sie einen neuen Eintrag im View „ABAP Traces“:

Page 24: ABAP Test & Troubleshooting @SITMuc 2013

24 Martin Steinberg #sitMUC 2013

Per Doppelklick auf einen Eintrag gelangen Sie in die Detailanzeige:

Die einzelnen Reiter unterhalb der Grafik entsprechen weitgehend denen aus der Transaktion SAT.

Die Visualisierung der Aufrufhierarchie, welche in SAT auch über UML möglich ist (Sequenzdiagramm), ist mit

interaktions-sensitiven Grafiken ausgestattet. Sie können auf jeden Balken per Doppelklick an die entsprechende

Codingstelle navigieren:

Einen guten Blog zu diesem Thema finden Sie im SCN unter http://scn.sap.com/docs/DOC-41223

Page 25: ABAP Test & Troubleshooting @SITMuc 2013

25 Martin Steinberg #sitMUC 2013

Empfehlungen Nachdem die zum Debuggen und Analysieren verwendete Zeit als Entwicklungszeit gelten kann, muss diese so gering

wie möglich gehalten werden. Dies erreicht man u. a. mit

Einsatz von ABAP Unit

Einhalten der offiziellen „ABAP-Programmierrichtlinien“ der SAP (SAP Press, http://www.sap-

press.de/katalog/buecher/titel/gp/titelID-1922?GalileoSession=35309084A6-dpgFrrl0)

Clean Code erzeugen

Erweiterte Syntaxprüfung durchführen

Code Inspector einsetzen (z. B. Integration in Transportfreigabe)

ABAP Test Cockpit (ATC, http://scn.sap.com/docs/DOC-32172) einsetzen (Etablierung Rolle

„Qualitätsmanager“ in Organisation dann notwendig; leichtgewichtig in ADT möglich)

Weiterführende Informationen

Link zu SCN-Bereich zum Thema: http://scn.sap.com/community/abap/testing-and-troubleshooting

Guter Blog von Olga Dolinskaja (Product Owner des ABAP Debuggers und von SAT):

http://scn.sap.com/community/abap/testing-and-troubleshooting/blog/2010/11/10/new-abap-debugger-tips-and-

tricks