Es gibt in SAP ABAP mehrere Möglichkeiten, die Anzahl der Zeilen (Einträge) in einer internen Tabelle zu ermitteln. Hier sind die gängigsten Methoden:
1. Die lines()
Funktion (Empfohlen für neuere ABAP-Versionen, ab ABAP 7.02)
Dies ist die modernste und oft bevorzugte Methode, da sie direkt in Ausdrücken verwendet werden kann und sehr lesbar ist.
DATA lt_data TYPE STANDARD TABLE OF mara.DATA lv_anzahl_zeilen TYPE i.
" ... Logik zum Füllen der Tabelle lt_data ...
lv_anzahl_zeilen = lines( lt_data ).
WRITE: / 'Anzahl der Zeilen:', lv_anzahl_zeilen.
2. Das DESCRIBE TABLE
Statement
Dies ist die klassische Methode, die in allen ABAP-Versionen funktioniert. Sie weist die Anzahl der Zeilen einer separaten Variablen zu.
DATA lt_data TYPE STANDARD TABLE OF mara.DATA lv_anzahl_zeilen TYPE i.
" ... Logik zum Füllen der Tabelle lt_data ...
DESCRIBE TABLE lt_data LINES lv_anzahl_zeilen.
WRITE: / 'Anzahl der Zeilen:', lv_anzahl_zeilen.
3. Systemfeld sy-tfill
(Vorsicht!)
Nach bestimmten Operationen, die eine interne Tabelle modifizieren (wie APPEND
, INSERT
, COLLECT
, DELETE
),
enthält das Systemfeld sy-tfill
die Anzahl der Zeilen nach der Operation. Es ist jedoch nicht zuverlässig,
sich nur für die Abfrage der Zeilenanzahl auf sy-tfill
zu verlassen, da es nicht bei allen Tabellenoperationen (
insbesondere Lesezugriffen wie LOOP AT
oder READ TABLE
) garantiert aktualisiert wird. Die Verwendung von
lines()
oder DESCRIBE TABLE
ist expliziter und sicherer, um die aktuelle Zeilenzahl zu ermitteln.
Zusammenfassend:
- Verwende die
lines()
Funktion, wenn du mit ABAP 7.02 oder höher arbeiten. Sie ist prägnant und gut lesbar. - Verwende das
DESCRIBE TABLE ... LINES ...
Statement für ältere Systeme oder wenn Sie explizit eine separate Variable benötigen und die funktionale Schreibweise nicht bevorzugen. - Vermeide es, sich für die reine Abfrage der Zeilenzahl auf
sy-tfill
zu verlassen.