SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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
1
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

2
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

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

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

5
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 BreakPoint und „Bedingung hinzufügen“

6
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)

7
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)

8
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“.

9
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“

10
Martin Steinberg #sitMUC 2013
Ändern von Tabelleninhalten
Insofern im System das Ändern von Variablen im Debugger erlaubt ist, kann der Tabelleninhalt über das ServiceMenü 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.

11
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!

12
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

13
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:

14
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 DebuggingGegenstä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.

15
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

16
Martin Steinberg #sitMUC 2013
ABAP Laufzeitanalyse mit SAT
Einstiegsbildschirm (Reiter Messen) wie in SE30

Anzeige der Namen von internen Tabellen aus dem
ABAP Quelltext.

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

17
Martin Steinberg #sitMUC 2013
Varianten
Diese sind die Basis aller Auswertungen in SAT.

Programmflussanalyse
n
Performanceanalyse

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

.

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

20
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:

21
Martin Steinberg #sitMUC 2013
ABAP Stack Anzeige
Variablenanzeige

Quelltextbereich

Table Tool

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)
22
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“:

23
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

24
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.sappress.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-andtricks

25
Martin Steinberg #sitMUC 2013

Mais conteúdo relacionado

Destaque

Abap query
Abap queryAbap query
Abap querybrtkow
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abapalienscorporation
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functionsCadaxo GmbH
 
Funções - Tutorial ABAP
Funções - Tutorial ABAPFunções - Tutorial ABAP
Funções - Tutorial ABAPRicardo Ishida
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standardssurendra1579
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docmanikanta sai kumar karri
 
Lecture01 abap on line
Lecture01 abap on lineLecture01 abap on line
Lecture01 abap on lineMilind Patil
 
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenVirtual Forge
 
Abap course chapter 6 specialities for erp software
Abap course   chapter 6 specialities for erp softwareAbap course   chapter 6 specialities for erp software
Abap course chapter 6 specialities for erp softwareMilind Patil
 
SAP ABAP Proxy Objects: Configuración del entorno
SAP ABAP Proxy Objects: Configuración del entornoSAP ABAP Proxy Objects: Configuración del entorno
SAP ABAP Proxy Objects: Configuración del entornoOreka IT
 
Abap course chapter 5 dynamic programs
Abap course   chapter 5 dynamic programsAbap course   chapter 5 dynamic programs
Abap course chapter 5 dynamic programsMilind Patil
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Mauricio Cruz
 
ITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP FoundationsITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP FoundationsCharles Aragão
 

Destaque (18)

Web dynpro for abap
Web dynpro for abapWeb dynpro for abap
Web dynpro for abap
 
Abap query
Abap queryAbap query
Abap query
 
View - Tutorial ABAP
View - Tutorial ABAPView - Tutorial ABAP
View - Tutorial ABAP
 
Comandos e funções em abap
Comandos e funções em abapComandos e funções em abap
Comandos e funções em abap
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Icones - ABAP
Icones - ABAPIcones - ABAP
Icones - ABAP
 
Sap abap Q&A
Sap abap Q&A Sap abap Q&A
Sap abap Q&A
 
Funções - Tutorial ABAP
Funções - Tutorial ABAPFunções - Tutorial ABAP
Funções - Tutorial ABAP
 
Abap coding standards
Abap coding standardsAbap coding standards
Abap coding standards
 
Basic abap oo
Basic abap ooBasic abap oo
Basic abap oo
 
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.docManikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
Manikanta Sai Kumar Karri SAP ABAP and OO ABAP 3 Years.doc
 
Lecture01 abap on line
Lecture01 abap on lineLecture01 abap on line
Lecture01 abap on line
 
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP InstallationenABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
ABAP Qualitäts-Benchmark: Eine Analyse von über 200 SAP Installationen
 
Abap course chapter 6 specialities for erp software
Abap course   chapter 6 specialities for erp softwareAbap course   chapter 6 specialities for erp software
Abap course chapter 6 specialities for erp software
 
SAP ABAP Proxy Objects: Configuración del entorno
SAP ABAP Proxy Objects: Configuración del entornoSAP ABAP Proxy Objects: Configuración del entorno
SAP ABAP Proxy Objects: Configuración del entorno
 
Abap course chapter 5 dynamic programs
Abap course   chapter 5 dynamic programsAbap course   chapter 5 dynamic programs
Abap course chapter 5 dynamic programs
 
Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011Usability in ABAP Programs - SITSP2011
Usability in ABAP Programs - SITSP2011
 
ITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP FoundationsITSS Trainning | Curso de SAP ABAP Foundations
ITSS Trainning | Curso de SAP ABAP Foundations
 

Semelhante a ABAP Test & Troubleshooting @SITMuc 2013

Linux advanced
Linux advancedLinux advanced
Linux advancedheiko.vogl
 
HTML5 und CSS3 Übersicht
HTML5 und CSS3 ÜbersichtHTML5 und CSS3 Übersicht
HTML5 und CSS3 ÜbersichtSven Brencher
 
Large Scale Multilayer Perceptron
Large Scale Multilayer PerceptronLarge Scale Multilayer Perceptron
Large Scale Multilayer PerceptronSascha Jonas
 
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäuden
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten GebäudenWhitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäuden
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäudeninfsoft GmbH
 
backy - Image-basiertes Backup für virtuelle Maschinen
backy - Image-basiertes Backup für virtuelle Maschinenbacky - Image-basiertes Backup für virtuelle Maschinen
backy - Image-basiertes Backup für virtuelle MaschinenChristian Kauhaus
 
Dreamweaver cs5 hilfe
Dreamweaver cs5 hilfeDreamweaver cs5 hilfe
Dreamweaver cs5 hilfefersel2015
 
Whitepaper: Indoor Positionsbestimmung in Industrie & Logistik
Whitepaper: Indoor Positionsbestimmung in Industrie & LogistikWhitepaper: Indoor Positionsbestimmung in Industrie & Logistik
Whitepaper: Indoor Positionsbestimmung in Industrie & Logistikinfsoft GmbH
 
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista Johannes Hohenbichler
 
Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0Detlef Kahrs
 
lernOS Prozessmodellierung Guide (Version 1.0)
lernOS Prozessmodellierung Guide (Version 1.0)lernOS Prozessmodellierung Guide (Version 1.0)
lernOS Prozessmodellierung Guide (Version 1.0)Cogneon Akademie
 
Final Opentrans 2.0 Rfq
Final Opentrans 2.0   RfqFinal Opentrans 2.0   Rfq
Final Opentrans 2.0 Rfqguest6f1fb4
 
Visualisierung von Algorithmen und Datenstrukturen
Visualisierung von Algorithmen und DatenstrukturenVisualisierung von Algorithmen und Datenstrukturen
Visualisierung von Algorithmen und DatenstrukturenRoland Bruggmann
 
Whitepaper Indoor Positionsbestimmung im Gesundheitswesen
Whitepaper Indoor Positionsbestimmung im GesundheitswesenWhitepaper Indoor Positionsbestimmung im Gesundheitswesen
Whitepaper Indoor Positionsbestimmung im Gesundheitsweseninfsoft GmbH
 
Web-Entwicklung mit Spring, Hibernate und Facelets in Eclipse
Web-Entwicklung mit Spring, Hibernate und Facelets in EclipseWeb-Entwicklung mit Spring, Hibernate und Facelets in Eclipse
Web-Entwicklung mit Spring, Hibernate und Facelets in EclipseSarah Steffen
 
Einsteiger zertifizierung des LPI
Einsteiger zertifizierung des LPIEinsteiger zertifizierung des LPI
Einsteiger zertifizierung des LPIMichael M. Bosbach
 
EDI in der Anwendung_STC.pdf
EDI in der Anwendung_STC.pdfEDI in der Anwendung_STC.pdf
EDI in der Anwendung_STC.pdfBroncoGoodwill
 
Hackers Undergroundbook
Hackers UndergroundbookHackers Undergroundbook
Hackers Undergroundbookprasadpsrh
 
Bedienungsanleitung - POC
Bedienungsanleitung - POCBedienungsanleitung - POC
Bedienungsanleitung - POCrichardfishburn
 

Semelhante a ABAP Test & Troubleshooting @SITMuc 2013 (20)

Linux advanced
Linux advancedLinux advanced
Linux advanced
 
HTML5 und CSS3 Übersicht
HTML5 und CSS3 ÜbersichtHTML5 und CSS3 Übersicht
HTML5 und CSS3 Übersicht
 
Large Scale Multilayer Perceptron
Large Scale Multilayer PerceptronLarge Scale Multilayer Perceptron
Large Scale Multilayer Perceptron
 
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäuden
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten GebäudenWhitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäuden
Whitepaper: Indoor Positionsbestimmung in Büros & intelligenten Gebäuden
 
backy - Image-basiertes Backup für virtuelle Maschinen
backy - Image-basiertes Backup für virtuelle Maschinenbacky - Image-basiertes Backup für virtuelle Maschinen
backy - Image-basiertes Backup für virtuelle Maschinen
 
Dreamweaver cs5 hilfe
Dreamweaver cs5 hilfeDreamweaver cs5 hilfe
Dreamweaver cs5 hilfe
 
Whitepaper: Indoor Positionsbestimmung in Industrie & Logistik
Whitepaper: Indoor Positionsbestimmung in Industrie & LogistikWhitepaper: Indoor Positionsbestimmung in Industrie & Logistik
Whitepaper: Indoor Positionsbestimmung in Industrie & Logistik
 
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista
Stack- und Heap-Overflow-Schutz bei Windows XP und Windows Vista
 
Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0
 
lernOS Prozessmodellierung Guide (Version 1.0)
lernOS Prozessmodellierung Guide (Version 1.0)lernOS Prozessmodellierung Guide (Version 1.0)
lernOS Prozessmodellierung Guide (Version 1.0)
 
Final Opentrans 2.0 Rfq
Final Opentrans 2.0   RfqFinal Opentrans 2.0   Rfq
Final Opentrans 2.0 Rfq
 
Visualisierung von Algorithmen und Datenstrukturen
Visualisierung von Algorithmen und DatenstrukturenVisualisierung von Algorithmen und Datenstrukturen
Visualisierung von Algorithmen und Datenstrukturen
 
Whitepaper Indoor Positionsbestimmung im Gesundheitswesen
Whitepaper Indoor Positionsbestimmung im GesundheitswesenWhitepaper Indoor Positionsbestimmung im Gesundheitswesen
Whitepaper Indoor Positionsbestimmung im Gesundheitswesen
 
Web-Entwicklung mit Spring, Hibernate und Facelets in Eclipse
Web-Entwicklung mit Spring, Hibernate und Facelets in EclipseWeb-Entwicklung mit Spring, Hibernate und Facelets in Eclipse
Web-Entwicklung mit Spring, Hibernate und Facelets in Eclipse
 
Msrbas
MsrbasMsrbas
Msrbas
 
Einsteiger zertifizierung des LPI
Einsteiger zertifizierung des LPIEinsteiger zertifizierung des LPI
Einsteiger zertifizierung des LPI
 
EDI in der Anwendung_STC.pdf
EDI in der Anwendung_STC.pdfEDI in der Anwendung_STC.pdf
EDI in der Anwendung_STC.pdf
 
Lcam
LcamLcam
Lcam
 
Hackers Undergroundbook
Hackers UndergroundbookHackers Undergroundbook
Hackers Undergroundbook
 
Bedienungsanleitung - POC
Bedienungsanleitung - POCBedienungsanleitung - POC
Bedienungsanleitung - POC
 

ABAP Test & Troubleshooting @SITMuc 2013

  • 1. 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 1 Martin Steinberg #sitMUC 2013
  • 2. 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 2 Martin Steinberg #sitMUC 2013
  • 3. 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 3 Martin Steinberg #sitMUC 2013
  • 4. 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. 4 Martin Steinberg #sitMUC 2013
  • 5. 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. 5 Martin Steinberg #sitMUC 2013
  • 6. 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 BreakPoint und „Bedingung hinzufügen“ 6 Martin Steinberg #sitMUC 2013
  • 7. 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) 7 Martin Steinberg #sitMUC 2013
  • 8. 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) 8 Martin Steinberg #sitMUC 2013
  • 9. 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“. 9 Martin Steinberg #sitMUC 2013
  • 10. 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“ 10 Martin Steinberg #sitMUC 2013
  • 11. Ändern von Tabelleninhalten Insofern im System das Ändern von Variablen im Debugger erlaubt ist, kann der Tabelleninhalt über das ServiceMenü 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. 11 Martin Steinberg #sitMUC 2013
  • 12. 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! 12 Martin Steinberg #sitMUC 2013
  • 13. 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 13 Martin Steinberg #sitMUC 2013
  • 14. 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: 14 Martin Steinberg #sitMUC 2013
  • 15. 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 DebuggingGegenstä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. 15 Martin Steinberg #sitMUC 2013
  • 16. 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 16 Martin Steinberg #sitMUC 2013
  • 17. ABAP Laufzeitanalyse mit SAT Einstiegsbildschirm (Reiter Messen) wie in SE30 Anzeige der Namen von internen Tabellen aus dem ABAP Quelltext. 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“. 17 Martin Steinberg #sitMUC 2013
  • 18. Varianten Diese sind die Basis aller Auswertungen in SAT. Programmflussanalyse n Performanceanalyse 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. 18 Martin Steinberg #sitMUC 2013
  • 19. 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 . 19 Martin Steinberg #sitMUC 2013
  • 20. 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. 20 Martin Steinberg #sitMUC 2013
  • 21. 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: 21 Martin Steinberg #sitMUC 2013
  • 22. ABAP Stack Anzeige Variablenanzeige Quelltextbereich Table Tool 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) 22 Martin Steinberg #sitMUC 2013
  • 23. Ü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“: 23 Martin Steinberg #sitMUC 2013
  • 24. 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 24 Martin Steinberg #sitMUC 2013
  • 25. 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.sappress.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-andtricks 25 Martin Steinberg #sitMUC 2013