AMDP Debugging in Transformationsroutinen

Mit AMDP Debugging in Transformationsroutinen im BW/4HANA können Fehler leicht gefunden werden. Ein Auszug aus der 2. Auflage meines Buches „SQLScript für SAP HANA“, erschienen im Rheinwerkverlag, SAP Press.


AMDP-Debugger in den ADT

Ab SAP HANA 1.0 SPS9 und SAP NetWeaver 7.50 gibt es den AMDP-Debugger. Mit ihm kann man ohne direkten Zugriff auf die SAP-HANA-Datenbank und ohne einen SAP-HANA-Benutzer die AMDP-Prozeduren debuggen. Es handelt sich zwar um einen anderen Debugger als sein ABAP-Pendant, die beiden sind jedoch gut in die gleiche Eclipse-Oberfläche integriert. So kann man beim Debuggen im ABAP-Code auch Breakpoints für den AMDP-Code setzen und somit in diesen hineindebuggen. Nur in der Anzeige der Debugging-Sessions sieht man, dass man sich jetzt auf einer anderen Ebene befindet (siehe Abbildung).

Debugger in Eclipse: AMDP und ABAP Debugging parallel
Debug-Sessions beim gemeinsamen Debuggen von ABAP und AMDPs

Status des AMDP-Debuggers und der Breakpoints

Der AMDP-Debugger muss vor der Verwendung gestartet werden. Dies geschieht entweder automatisch, wenn Sie einen Breakpoint setzen oder manuell durch Auswahl über das Kontextmenü der Zeilennummern innerhalb des SQLScript-Codes einer AMDP-Methode

Kontextmenü des AMDP-Debuggers
AMDP Debugger über das Kontextmenü aktivieren

Ein Breakpoint wird im AMDP-Debugger, wie im ABAP-Debugger auch, als kleiner runder Kreis links von der Zeilennummer dargestellt (siehe Abbildung 1.21). Die Farbe des Kreises hängt vom Status des Breakpoints ab. Die unterschiedlichen Bedeutungen sehen Sie in der Tabelle:

FarbeBedeutung
BlauNur kurz direkt nach dem Setzen des Breakpoints. Die Routine muss für das Debuggen nochmals kompiliert werden.
GrünDer Breakpoint ist bestätigt und der Debugger aktiv.
GrauDer Debugger ist inaktiv. Er kann durch das Kontextmenü auf dem Breakpoint aktiviert werden.
WeißDer Breakpoint ist deaktiviert. Er kann ebenfalls durch das Kontextmenü auf dem Breakpoint aktiviert werden.
Status der Breakpoint-Markierungen

Nach 10 Minuten Inaktivität deaktiviert sich der Debugger von allein. Der Grund dafür ist, dass ein aktivierter Debugger relativ viele Ressourcen auf der Seite des ABAP-Servers benötigt.

Eclipse Editor mit Breakpoint im AMDP Code
Markierung eines aktiven Breakpoints links von den Zeilennummern

Debugging von BW-Transformationsroutinen

Auch für die Fehlersuche bei BW-Transformationsroutinen kann das AMDP Debugging verwendet werden. Dazu müssen Sie lediglich in den ADT die entsprechende AMDP-Klasse aufrufen und in der jeweiligen Methode an der gewünschten Stelle einen Breakpoint setzen. Bei SAP-BW/4HANASystemen müssen Sie darauf achten, dass Sie den Breakpoint in der A-Klasse setzen. Prüfen Sie danach, ob das Kreissymbol für den Breakpoint grün ist und somit der AMDP-Debugger aktiviert wurde. Beim Ausführen des Datentransferprozesses bleibt der AMDP-Debugger dann automatisch an dem Breakpoint stehen.

Hinweis: Probleme beim Debuggen

Wenn der Debugger nicht anhält, kann das unterschiedliche Ursachen haben. Die häufigste Fehlerquelle beim Debuggen in SAP-BW/4HANA-Systemen ist, dass der Breakpoint nicht in der A-Klasse gesetzt wurde.

Bei älteren Systemständen von SAP BW auf SAP HANA muss man teilweise die Option Execute in Background auswählen, damit das System an den Breakpoints anhält. Damit werden dann auch tatsächlich Daten geladen!

Optionen für den Verarbeitungsmodus im DTP
Optionen für den Verarbeitungsmodus im DTP

Auf neueren Systemständen habe ich aber auch schon erlebt, dass an einem Breakpoint nur dann angehalten wurde, wenn zusätzlich zur Option Serially in the Dialog Process (for Debugging) auch noch die Checkbox Expert Mode angeklickt war (siehe Abbildung).

Probieren Sie gegebenenfalls aus, was bei Ihrem Systemstand funktioniert.

Debug-Modus vs. optimierter Modus

Damit Prozeduren mit dem AMDP-Debugger analysiert werden können, werden diese im sogenannten Debug-Modus neu kompiliert. Das bedeutet, dass einige Optimierungen nicht durchgeführt werden, die im normalen, optimierten Modus berücksichtigt werden.