ABAP: Anzahl Zeilen einer internen Tabelle ermitteln
Der DESCRIBE TABLE
-Befehl bestimmt einige Eigenschaften der internen Tabelle und weist sie den angebbaren Zielfeldern zu. Hierzu können Inline-Deklarationen (z.B.: DATA(lv_var)
) aber auch vorhandene Variablen, in die der Rückgabewert konvertiert wird, angegeben werden. Ermittelt wird die Tabellenart, die Anzahl der aktuell gefüllten Zeilen und den initialen Speicherbedarf zu bestimmen.
Zusätzlich werden auch die Systemfelder sy-tfill
und sy-tleng
mit der aktuellen Anzahl von Tabellenzeilen und der Länge einer Tabellenzeile in Bytes versorgt.
Ohne Angabe eines Zusatzes (KIND, LINES oder OCCURS) setzt der Befehl DESCRIBE TABLE
lediglich die Systemfelder sy-tfill
und sy-tleng
.
Sollten weitere Informationen der internen Tabelle zur Laufzeit ermittelt werden, so sollten die Klassen des Run Time Type Services (RTTS) genutzt werden (z.B.: cl_abap_tabledescr
oder cl_abap_typedescr
)
Syntax
DESCRIBE TABLE <itab> [ KIND <char1> ] [ LINES <int> ] [ OCCURS <int> ].
Beispiel:
DESCRIBE TABLE lt_itab.
IF sy-tfill > 0.
...
ENDIF.
Zusätze
KIND
Die Tabellenart der internen Tabelle <itab>
wird bestimmt. Der Rückgabewert ist eine einstellige zeichenartige Kennung. Bei einer Inline-Deklaration wird eine Variable vom Typ c der Länge 1 deklariert.
T
: Standard Tabelle (Konstante: sydes_kind-standard)S
: sortierte Tabelle (Konstante: sydes_kind-sorted)H
: Hashed Tabelle (Konstante: sydes_kind-hashed)
LINES
Die aktuelle Anzahl von Tabellenzeilen der internen Tabelle <itab>
wird bestimmt. Der Rückgabewert ist vom Typ i. Bei einer Inline-Deklaration wird eine Variable vom Typ i deklariert.
Die aktuelle Anzahl der Zeilen einer internen Tabelle lässt sich auch mit der eingebauten Funktion lines
bestimmen.
Beispiel:
SELECT carrid FROM scarr
INTO TABLE @DATA(lt_scarr)
.
DESCRIBE TABLE lt_scarr LINES DATA(lv_lines).
ASSERT lv_lines = lines( lt_scarr ).
OCCURS
Der mit dem Zusatz INITIAL SIZE beim Anlegen der internen Tabelle definierte initiale Speicherbedarf wird bestimmt. Der Rückgabewert ist vom Typ i. Bei einer Inline-Deklaration wird eine Variable vom Typ i deklariert.
Beispiel:
DATA lt_itab TYPE TABLE OF i INITIAL SIZE 10 WITH EMPTY KEY.
DESCRIBE TABLE lt_itab OCCURS DATA(lv_occ).