Assertions nutzen

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Vorherige Seite 2 von 2 (current)
16 Beiträge Vorherige Seite 2 von 2 (current)

Re: Assertions nutzen

Beitrag von DeathAndPain (Top Expert / 1799 / 214 / 396 ) »
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! :-)

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Vergleichbare Themen

4
Antw.
11038
Views
Wertebereich nutzen
von MarkusW » 19.12.2007 09:00 • Verfasst in ABAP® Core
4
Antw.
2161
Views
Selektionen der Log DB nutzen
von lucky65 » 26.07.2012 13:13 • Verfasst in ABAP® Core
2
Antw.
3119
Views
Assistance Klasse in WD nutzen
von Thanatos82 » 17.01.2013 15:41 • Verfasst in ABAP® für Anfänger
2
Antw.
2096
Views
TLB-Funktionalitäten in ABAP nutzen
von Johann » 17.10.2005 11:44 • Verfasst in ABAP® für Anfänger
1
Antw.
1748
Views
Geschützte EVENTS des ALV nutzen
von RiffRaff » 05.08.2008 10:51 • Verfasst in ABAP Objects®

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.