Il existe plusieurs facons en SAP ABAP de determiner le nombre de lignes (entrees) dans une table interne. Voici les methodes les plus courantes :
1. La fonction lines() (Recommandee pour les versions ABAP recentes, depuis ABAP 7.02)
C’est la methode la plus moderne et souvent preferee, car elle peut etre utilisee directement dans des expressions et est tres lisible.
DATA lt_data TYPE STANDARD TABLE OF mara.DATA lv_nombre_lignes TYPE i.
" ... Logique pour remplir la table lt_data ...
lv_nombre_lignes = lines( lt_data ).
WRITE: / 'Nombre de lignes:', lv_nombre_lignes.2. L’instruction DESCRIBE TABLE
C’est la methode classique qui fonctionne dans toutes les versions ABAP. Elle assigne le nombre de lignes a une variable separee.
DATA lt_data TYPE STANDARD TABLE OF mara.DATA lv_nombre_lignes TYPE i.
" ... Logique pour remplir la table lt_data ...
DESCRIBE TABLE lt_data LINES lv_nombre_lignes.
WRITE: / 'Nombre de lignes:', lv_nombre_lignes.3. Champ systeme sy-tfill (Attention !)
Apres certaines operations qui modifient une table interne (comme APPEND, INSERT, COLLECT, DELETE), le champ systeme sy-tfill contient le nombre de lignes apres l’operation. Cependant, il n’est pas fiable de compter uniquement sur sy-tfill pour interroger le nombre de lignes, car il n’est pas garanti d’etre mis a jour pour toutes les operations de table (notamment les acces en lecture comme LOOP AT ou READ TABLE). L’utilisation de lines() ou DESCRIBE TABLE est plus explicite et plus sure pour determiner le nombre actuel de lignes.
En resume :
- Utilisez la fonction
lines()si vous travaillez avec ABAP 7.02 ou superieur. Elle est concise et bien lisible. - Utilisez l’instruction
DESCRIBE TABLE ... LINES ...pour les systemes plus anciens ou si vous avez besoin explicitement d’une variable separee et ne preferez pas la notation fonctionnelle. - Evitez de vous fier a
sy-tfillpour la simple interrogation du nombre de lignes.