wie kann man eigentlich elegant an einer gewissen Stelle in einem Loop im Debugger anhalten. Beispielsweise loopt man über eine Tabelle mit 1000 Einträgen. Man interessiert sich nun für den Eintrag 836 und an diesem möchte ich gerne im Debugger anhalten. Leider funktioniert es mit einem Watchpoint und sy-tabix nicht, da innerhalb des Loops etwas abgefragt wird und der sy-subrc auf ungleich 0 läuft und sy-tabix dann auch wieder auf 1. Wie könnte man so etwas schön händeln?
Ein Breakpoint an der ersten Anweisung des LOOPs mit einer Bedingung (sy-tabix = 836) müsste das Problem lösen. Wichtig ist es den Breakpoint an der ersten Anweisung zu setzen. Wenn der Debugger dann an der ersten Anweisung anhält kann im Debugger ein zweiter Breakpoint an passender Stelle gesetzt werden.
Beispiel: In folgendem Trivialprogramm soll beim 200. Durchlauf der WRITE-Anweisung angehalten werden. Das könnte man hier leicht errechnen, dass sy-index dann 400 sein müsste - aber die Bedingung kann ja hinreichend komplex oder sogar unbekannt sein aber wie in der Originalfrage möchte man halt beim x. Durchlauf anhalten.
REPORT.
DO 1000 TIMES.
CHECK sy-index MOD 2 = 0.
WRITE:/ sy-index.
ENDDO.
Dafür hat SAP etwas im Debugger vorgesehen: Am Besten einen BREAK-POINT auf die WRITE-Zeile setzen. Wenn man hier ankommt hat man den 1. Durchlauf erreicht. Jetzt muss ich diesen Break-Point noch x-2 mal auslassen und die dann folgende Ankunft ist die x. Das geht wie im folgenden Screenshot abgebildet.
Unbenannt.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2): IHe • rob_abc