Zum Hauptinhalt springen

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.

tip

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.

tip

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).