Bei der Verwendung von SQLScript in Transformationen profitieren Sie von einer enormen Performancesteigerung. Da die Datenverarbeitung direkt in der Datenbank stattfindet, entfällt die Übertragung der Daten von der Datenbank zum Applikationsserver.
Allerdings unterscheidet sich SQLScript prinzipiell von der ABAP Programmiersprache, an die Sie vielleicht gewohnt sind. Daher können teilweise unerwartete Ergebnisse zustande kommen. Bei der anschließenden Fehlersuche ist das Debugging des SQLScripts essenziell. In diesem Beitrag lernen Sie wie es geht.
Um den Ablauf der jeweiligen Logik anzuhalten und debuggen zu können werden sogenannte Breakpoints verwendet. Ab der SAP BW Version 7.40 können Sie Breakpoints direkt in der AMDP-Klasse setzen. Diese verhalten sich genauso wie externe Breakpoints in ABAP.
Auf einem BW4HANA System unterscheidet sich das Vorgehen etwas. Dort existieren zwei Klassen für die Transformationsroutine die M- und die A-Klasse. Zunächst legt man die Logik in der M Klasse an. Nach der Aktivierung der Transformationsroutine wird die A Klasse generiert. Dort setzt man dann den Breakpoint, um die Routine debuggen zu können. Die in der M-Klasse gesetzten Breakpoints werden nicht beachtet.
Um den Debugger in SAP BW 7.40 nutzen zu können, müssen Sie den Parameter DTP_HANA_DEBUG_SCRIPT in RSADMIN hinzufügen auf X setzen. Nutzen Sie dazu das Programm SAP_RSADMIN_MAINTAIN (Transaktion SE38).
Ein AMDP-Breakpoint kann durch einen Doppelklick links neben der Zeilennummer erstellt werden. Jeder AMDP-Breakpoint wird als ein Punkt dargestellt. Dieser kann verschiedene Farben einnehmen. Falls der AMDP-Debugger aktiv ist, ist der Punkt grün. Wenn dagegen der AMDP-Debugger nicht aktiv ist, ist der Punkt grau. Durch einen Doppelklick auf den grauen Punkt können Sie den AMDP Debugger wieder aktivieren.
Anbei finden Sie eine Übersicht über die möglichen Status des Debuggers:
Farbe |
Status |
Blau |
Diese Farbe wird nur kurz direkt nach dem Setzen des Breakpoints angezeigt. Die Routine muss zum Debuggen nochmals kompiliert werden. |
Grün |
Bestätigter Breakpoint, Debugger ist aktiv. |
Grau |
Inaktiver Debugger. Dieser kann durch das Kontextmenü des Breakpoints aktiviert werden. |
Weiß |
Deaktivierter Debugger. Dieser kann ebenfalls durch das Kontextmenü aktiviert werden. |
Bitte beachten Sie, dass der Debugger sich nach 10 Minuten Inaktivität von alleine deaktiviert. So sollen Ressourcen geschont werden, da ein aktivierter Debugger relativ viele Ressourcen des ABAP-Servers beansprucht.
Darüber hinaus müssen Sie wissen, dass der Debugger nicht anspringt, wenn Sie im DTP den Verarbeitungsmodus “Seriell im Dialogprozess (für Debugging)” auswählen. Im Simulationsmodus werden die generierten SQL-Anweisung nicht ausgeführt. Stattdessen müssen Sie die Option “Parallele SAP HANA-Ausführung” auswählen.
Allerdings werden dabei die Daten tatsächlich in das Datenziel fortgeschrieben. Daher müssen Sie nach dem Debuggen die Requests wieder löschen.
Wenn Sie nun einen aktiven Breakpoint gesetzt haben und den DTP im Verarbeitungsmodus “Parallele SAP HANA-Ausführung” starten, wechselt die Ansicht in die Debug Perspektive.
Der Debugger hält die Ausführung der Prozedur am Breakpoint an. Über die obere Leiste in Eclipse können Sie wie gewohnt die Schritte im Debugger ausführen. So können Sie die Verarbeitung des Quellcodes mit den beiden Schaltflächen Weitermachen und Einzelschritt steuern.
Bei der ersteren wird das Programm weiter ausgeführt, bis es an einen anderen Breakpoint oder am Ende angelangt. Mit Einzelschritt wird, wie der Name bereits andeutet, nur eine Anweisung ausgeführt, anschließend wird die Verarbeitung wieder angehalten.
Die Debug Perspektive setzt sich aus mehreren Fenstern zusammen, die ich nachfolgend erläutere.
Das Fenster links zeigt die Prozedur und die zugehörige Klasse. So können Sie sich orientieren und besser zurechtfinden. In der Mitte sehen Sie Ihren SQLScript Code. Auf der linken Seite neben der Zeilennummer sehen Sie einen Zeiger, der die Nummer der aktuell bearbeiteten Zeile anzeigt.
Rechts sehen Sie Ihre Variablen, interne Tabellen, Breakpoints und Watch Expression. Hier können Sie die Werte der Variablen einsehen und aktive Breakpoints betrachten. Bei Bedarf können Sie alle Breakpoints auf einmal löschen.
Im unteren Fenster sehen Sie die Datenvorschau. Während der Wert der skalaren Variablen direkt in der Variablen-Ansicht angezeigt wird, wird bei Variablen, die auf einer Tabelle basieren, nur die Anzahl der Zeilen dargestellt. Die Datenvorschau kann verwendet werden, um den Inhalt der Tabelle einzusehen und das Ergebnis zu überprüfen. Beachten Sie dabei, dass in SQLScript die Daten nicht zeilenweise verarbeitet werden, wie es in ABAP der Fall ist. Stattdessen wird die gesamte Tabelle auf einmal prozessiert.
Um mehrere Tabellen in der Datenvorschau anzuzeigen, z.B. INTAB und OUTTAB nebeneinander, können Sie diese fixieren.
Sie können die Daten der Tabellen über Save Table exportieren, für eine einfachere Analyse und Fehlersuche in Excel.
Gerade beim Umstieg von ABAP auf SQLScript ist es wichtig, sich mit dem Debuggen auseinander zu setzen. Nachdem Sie damit vertraut sind, können Sie eventuellen Fehlern auf die Schliche kommen.
Planen Sie einen Umstieg auf SQLScript und benötigen Sie Unterstützung bei der Planung der richtigen Strategie? Oder benötigen Sie erfahrene Entwickler zur Umsetzung von Ihren Anforderungen? Zögern Sie bitte nicht, uns zu kontaktieren und wir beraten Sie gerne.
Weitere Information hierzu finden Sie im Buch "SQLScript für SAP HANA" (SAP PRESS, ISBN 978-3-8362-7408-1) von Jörg Brandeis