Comment puis-je obtenir le nombre de lignes d'une table interne? Je suppose que je peux faire une boucle dessus. Mais il doit y avoir un moyen plus sain.
Je ne sais pas si cela fait une différence, mais le code devrait fonctionner sur la version 4.6c.
Vous pouvez utiliser la fonction suivante:
DESCRIBE TABLE <itab-Name> LINES <variable>
Après l'appel, la variable contient le nombre de lignes de la table interne.
Il existe également une fonction intégrée pour cette tâche:
variable = lines( itab_name ).
Tout comme la syntaxe ABAP "pure" décrite par IronGoofy , la fonction "lines ()" écrit le nombre de lignes de la table nom_lab dans la variable.
A côté du recommandé
DESCRIBE TABLE <itab-Name> LINES <variable>
il y a aussi la variable système SY-TFILL
.
De la documentation:
Après les instructions DESCRIBE TABLE, LOOP AT et READ TABLE, le nombre de lignes de la table interne accédée.
Exemple de script:
REPORT ytest.
DATA pf_exclude TYPE TABLE OF sy-ucomm WITH HEADER LINE.
START-OF-SELECTION.
APPEND '1' TO pf_exclude.
APPEND '2' TO pf_exclude.
APPEND '3' TO pf_exclude.
APPEND '4' TO pf_exclude.
WRITE: / 'sy-tfill = ', sy-tfill.
DESCRIBE TABLE pf_exclude.
WRITE: / 'sy-tfill = ', sy-tfill, 'after describe table'.
sy-tfill = 0. "Reset
READ TABLE pf_exclude INDEX 1 TRANSPORTING NO FIELDS.
WRITE: / 'sy-tfill = ', sy-tfill, 'after read table'.
sy-tfill = 0. "Reset
LOOP AT pf_exclude.
WRITE: / 'sy-tfill = ', sy-tfill, 'in loop with', pf_exclude.
sy-tfill = 0. "Reset
ENDLOOP.
Le résultat:
sy-tfill = 0
sy-tfill = 4 after describe tabl
sy-tfill = 4 after read table
sy-tfill = 4 in loop with 1
sy-tfill = 0 in loop with 2
sy-tfill = 0 in loop with 3
sy-tfill = 0 in loop with 4
Veuillez faire attention à la valeur 0 pour la 2e entrée: SY-TFILL
n'est pas mis à jour à chaque étape, uniquement après la première boucle.
Je recommande l'utilisation de SY-TFILL uniquement, si vous en avez besoin directement après la READ
(1) ... S'il existe d'autres commandes entre la READ
et l'utilisation de SY-TFILL, il y a toujours un risque de changement du système variable.
(1) ou décrire la table.
DATA : V_LINES TYPE I. "declare variable
DESCRIBE TABLE <ITAB> LINES V_LINES. "get no of rows
WRITE:/ V_LINES. "display no of rows
Refreance: http://www.sapnuts.com/courses/core-abap/internal-table-work-area.html
Le module fonctionnel EM_GET_NUMBER_OF_ENTRIES fournira également le nombre de lignes. Il faut 1 paramètre - le nom de la table.