2016-10-04 6 views
0

Die Antwort auf die Frage wird als 2. gegeben. Warum löscht Refresh nur die erste Zeile? Wird nicht erwartet, dass alle Zeilen einer internen Tabelle gelöscht werden?ABAP freie interne Tabelle

Was wird mit dem folgenden Code ausgegeben?

DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab. 

itab­-fval = 1. APPEND itab. 

itab­-fval = 2. APPEND itab. 

REFRESH itab. 

WRITE: /1 itab­-fval. 

A: 1

B: 2

C: blank

D: 0

Antwort: B

+1

E: Syntaxfehler –

+0

Was ist 'A: 1'? Erwarten Sie, dass es sich um einen ABAP-Befehl handelt? – knut

+0

Warum führen Sie den Code nicht selbst aus und sehen? – Jagger

Antwort

5

Wenn der Code enthielt keine Syntax Fehler, z das fehlende '-' bei der Zuweisung des Wertes 2 und beim Schreiben des Wertes, dann ist B die richtige Antwort, aber nicht aus dem von Ihnen angegebenen Grund. Es ist nicht so, dass die nur die erste Zeile aus der Tabelle entfernt, weil die Kopfzeile der Tabelle nicht löscht. Nach der REFRESH hat die Kopfzeile immer noch den letzten zugewiesenen Wert, der 2 ist. Dies kann leicht festgestellt werden, wenn das Programm im Debugger ausgeführt wird.

Beachten Sie, dass die Verwendung der internen Tabelle mit Kopfzeilen veraltet ist, wie in SAP help erwähnt.

+0

Das ist was ich vermisse. Danke vielmals. – Neschet

0

Sie können einen Löschbefehl verwenden, um die Kopfzeile zu löschen.

REFRESH itab. 
CLEAR itab.