Feldwerte zur Laufzeit anzeigen
Im Debugger können Sie den Inhalt von Programmfeldern im Anzeigemodus Felder anzeigen. Sie können bis zu acht Felder in die Anzeige aufnehmen. Dieser Anzeigemodus entspricht der Standardanzeige des Debuggers. Unterstützt werden folgende Datenobjekte:
Einzelfeld
Strukturierte Felder
Strings
Internen Tabellen
Objekte
Bei komplexeren Datenobjekten wie zum Beispiel Referenzen oder Tabellen erfolgt eine Inhaltsanzeige nicht unmittelbar im Standardanzeigemodus, vielmehr ist in der Rubrik Feldnamen ein Doppelklick mit der linken Maustaste nötig, um in die entsprechende Attributanzeige zu gelangen.
Vorgehensweise
Um den Inhalt eines Feldes anzuzeigen, tragen Sie bitte den Namen des gewünschten Feldes unter Feldnamen ein und drücken die Taste <ENTER>. Alternativ genügt ein Doppelklick auf den Namen eines Feldes im durchlaufenen Programmtext, um dessen Inhalt anzuzeigen.
Beispiel:
Weitere Felder anzeigen
Da immer nur vier Felder angezeigt werden, können Sie mit den Blättertasten zu den aktuell nicht angezeigten Feldern gelangen.
Systemfelder anzeigen
In diesem Anzeigemodus können Sie auch den Inhalt von beliebigen Systemfeldern anzeigen. Die drei wichtigsten Systemfelder SY-SUBRC, SY-TABIX und SY-DBCNT werden immer angezeigt.
Felder externer Programme anzeigen
Sie können auch den Inhalt von Feldern externer Programme anzeigen, sofern Sie den Namen des externen Programms kennen und dieses bereits durchlaufen wurde. Geben Sie dazu in der Feldanzeige den Programmnamen in Klammern vor dem Feldnamen an, also: (programmname)feldname zum Beispiel (SAPMSCLM)ACTION, wobei auch Kleinschreibung möglich ist.
Sonderformen der Feldanzeige
Ähnlich wie im Programmquelltext können zeichenartige Felder mit Offset- und Längenangabe versehen werden. Wird zum Beispiel in der Rubrik Feldnamen sy-datum+4 (2) eingegeben, dann wird unter Feldinhalte genau der aktuelle Monat des Systemdatums angezeigt.
Wird nach dem Namen einer internen Tabellen eine Ganzzahl in eckigen Klammern angegeben, dann wird der Inhalt derjenigen Zeile ausgegeben, welcher der Ganzzahl entspricht. Die Angabe itab[4] zeigt zum Beispiel die vierte Zeile der internen Tabelle itab an. Überschreitet die Ganzzahl die Anzahl der aktuellen Tabellenzeilen, dann wird die Tabelle als unbekannt gekennzeichnet.
Bei Datenreferenzen wird der Inhalt des referenzierten Datenobjektes angezeigt, wenn ein Pfeil und Stern an den Namen der Referenz angehängt werden. Die Schreibweise r->* stellt den Inhalt desjenigen Feldes zur Verfügung, das von der Datenreferenz r gerade referenziert wird.
Wird im Standardanzeigemodus unter Feldinhalte ein Doppelklick auf eine Daten- oder Objektreferenz abgesetzt, dann werden bei Datenreferenzen im Folgebild alle Attribute und Feldinhalte des referenzierten Datenobjektes aufgeblendet. Bei Objektreferenzen werden die Attribute und Werte der aktuellen Instanz aller referenzierten Klassen und Interfaces ausgegeben. Zum Beispiel liefert die Angabe 7<cl> alle Werte der siebten Instanz aus der Klasse cl.
Die Header von Strings, internen Tabellen sowie Daten- und Objektreferenzen werden durch Voranstellen eines Stern angezeigt. Beispielsweise wird der Header der internen Tabelle itab in hexadezimaler Form angezeigt, wenn in der Rubrik Feldnamen *itab eingegeben wird. Bei Tabellen ohne Header enthält der Feldinhalt nur Nullen.
Durch Voranstellen eines Ampersand wird die jeweilige Referenz von Strings, internen Tabellen sowie Daten- oder Objektreferenzen wiederum in hexadezimaler Form dargestellt. Die Angabe &str liefert zum Beispiel die Referenz auf den String mit Namen str.
Anzeigeformat ändern
Die Feldinhalte können in aufbereiteter Form oder im Hexadezimalformat angezeigt werden.
Durch Anklicken dieser Taste aktivieren Sie das Hexadezimalformat für die Werteanzeige des Feldes.
Um den Feldinhalt wieder im ursprünglichen Ausgabeformat anzuzeigen, klicken Sie auf diese Taste.
Löschen aller Feldnamen
Mit der Auswahl dieser Taste werden sämtliche Feldnamen aus der Felder-Anzeige gelöscht.
Feldwerte zur Laufzeit ändern
Sie können den Inhalt bestimmter Felder zur Laufzeit ändern, um den Programmablauf zu beeinflussen. Wird bei der Fehleranalyse zum Beispiel einen falscher Feldwert entdeckt, dann können Sie diesen zur Laufzeit durch einen anderen Wert ersetzen und so feststellen, ob das Programm nun korrekt abläuft.
Sie können die Werte folgender Datenobjekte Ihres Programmes ändern, wobei Formatfehler durch eine Systemmeldung angezeigt werden:
Einzelfelder
Strukturierte Felder
Strings
Felder von internen Tabellen
Felder von Klassen und Interfaces
Vorgehensweise
So gehen Sie vor, um den Inhalt eines Einzelfeldes zu ersetzen:
Bei bestimmten Datenobjekten wie Strukturen oder internen Tabellen müssen Sie erst einen Doppelklick auf den entsprechenden Feldnamen machen, um in das Bildsegment der Attribute zu gelangen. Hier ist nochmals ein Doppelklick auf die einzelnen Felder erforderlich, um den Änderungsmodus aufzurufen.
Ergebnis
Der Debugger schreibt den neuen Wert in das Programmfeld und das System zeichnet die Änderung im Systemprotokoll auf. Wenn Sie den Bleistift nicht betätigen , werden die eingegebenen Werte nicht übernommen.
Der Debugger akzeptiert die Werte genau so, wie Sie diese eingeben. Daher müssen Sie stets auf das korrekte Format achten, insbesondere Groß- oder Kleinschreibung bei zeichenartigen Feldern oder linksbündige Angabe bei hexadezimalen Zahlen.