Assertions nutzen


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Re: Assertions nutzen

Beitragvon DeathAndPain » 08.06.2018, 12:58

Erst recht, nachdem ich heute leidvoll lernen musste, dass man auf Feldsymbole keine Watchpoints legen kann (vor allem in LOOPs). Das ist dann wieder ein großer Pluspunkt für Workareas statt Feldsymbolen - und da ich sperrige Workareas Mist finde, ein großer Pluspunkt für Tabellenkopfzeilen.
adt hat geschrieben:Dafür kann man aber einen WatchPoint auf das Ziel des Feldsymbols (Tabellenzeile, Strukturfeld usw.) legen.

Wie soll das gehen? Der Debugger akzeptiert 7.50-Syntax nicht, so dass ein Watchpoint etwa auf meinetabelle[ 3 ]-MATNR = '12345678' nicht funktionieren wird.

Abgesehen davon ist mir nicht klar, was mir das helfen soll, wenn ich z.B. in einem LOOP AT meinetabelle ASSIGNING FIELD-SYMBOL(<meinetabelle>) stehenbleiben möchte, sobald der LOOP die Materialnummer '12345678' erreicht hat. Normalerweise würde ich da einen Watchpoint auf <meinetabelle>-MATNR = '12345678' anlegen wollen, aber das funktioniert nicht. Mit einer Workarea würde es gehen.

Als einzigen Workaround habe ich da bisher gesehen, vorher im Debugger zu schauen, in welcher Tabellenzeile die gesuchte Materialnummer steht und dann den Watchpoint auf SY-TABIX zu setzen. Das ist aber eine Krücke, und als ich kürzlich eine Schleife hatte, bei der ich innerhalb der Schleife Tabellenzeilen gelöscht habe, war dieser Weg auch verbaut.

Das Hauptproblem hast du bereits angesprochen: Man muss im Grunde vorher wissen, wo hinterher Break-Points nützlich gewesen wären.
Das kann man aber kaum, weil man dann bereits wüsste, welche Fehler auftreten. Und wenn man das vorher weiß, programmiert man gleich anders...

Ein Anwendungsfall bei mir ist das rasche Anlegen bedingter Breakpoints (a.k.a. Watchpoints) im Entwicklungssystem. Ich programmiere in Eclipse, aber die Eclipse-SAPGui-Integration ist so langsam, dass ich es nicht für praktikabel halte, in Eclipse Breakpoints etc. anzulegen und dann das Programm darüber zu testen. Also habe ich parallel ein SAPGui offen. Das aber interessiert sich nicht für in Eclipse gesetzte Breakpoints. Da helfe ich mir oft mit dem BREAK-Befehl (oder genauer: BREAK-Makro). Ein ASSERT als programmierter Watchpoint während der Fehlersuche könnte da auch nützlich sein. Sobald meine Analyse abgeschlossen ist, fliegt er wieder raus. An der Stelle rede ich also von nichts, was im finalen Code verbleiben soll. Die ID brauche ich auch nur deshalb, weil ich der Doku zufolge nur mit ID den ASSERT veranlassen kann, in den Debugger zu wechseln, anstatt mir direkt wegzudumpen.

Watchponts auf Feldsymbole geht mit einem Workaround. Man kann ja einem Breakpunkt eine Bedingung mitgeben

Das wusste ich gar nicht! Unglaublich, was es für mich noch zu lernen gibt. Ich dachte immer, das sei genau der Unterschied zwischen einem Watchpoint und einem Breakpoint, dass ein Watchpoint eine Bedingung hat und ein Breakpoint nicht. Ich wusste zwar, dass man einen Breakpoint etwa auch durch bestimmte Nachrichten auslösen kann, aber dass man da eine gewöhnliche boolesche Bedingung formulieren kann, ist mir neu. Aber ich habe es ausprobiert, und Du hast recht!

Es lohnt halt doch immer wieder, hier zu fragen! :-)
DeathAndPain
Expert
 
Beiträge: 666
Registriert: 05.05.2006, 10:14
Dank erhalten: 158 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Vorherige

Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Kopfzeile wird doppelt angezeigt.
vor 3 Stunden von Bright4.5 0 Antw.
Cl_SALV-Table Summe +Währung automatisch ausgeben
vor 5 Stunden von Bright4.5 0 Antw.
Dynpro DDIC
vor 5 Stunden von Icke0801 2 Antw.
ABAP Debugger - Funktionen fehlen - Ursache?
vor 2 Stunden von nickname8 2 Antw.
BAPI_ACC_BILLING_REV_POST richtig Verwenden
vor 12 Stunden von thomas.klammer 0 Antw.

  Ähnliche Beiträge beta
TLB-Funktionalitäten in ABAP nutzen
17.10.2005, 12:05 von Gast 2 Antw.
Assistance Klasse in WD nutzen
15.02.2013, 14:39 von StefanS 2 Antw.
gelöst Selektionsfelder in Query nutzen
07.06.2013, 07:44 von h1as 2 Antw.
gelöst SpoolID ermitteln und weiter nutzen
02.09.2014, 13:41 von dyv 5 Antw.
Bilder aus SMW0 im Dynpro nutzen?
17.08.2018, 15:00 von ewx 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder