如何获取内部表的行数?我想我可以循环播放它.但必须有一个更健全的方式.
我不知道它是否有所作为,但代码应该在4.6c版本上运行.
此任务还有一个内置函数:
variable = lines( itab_name ).
就像IronGoofy描述的"纯粹"ABAP语法一样,函数"lines()"将表itab_name的行数写入变量.
您可以使用以下功能:
DESCRIBE TABLELINES
调用之后,变量包含内部表的行数.
除了推荐
DESCRIBE TABLELINES
还有系统变量SY-TFILL
.
来自文档:
在语句DESCRIBE TABLE,LOOP AT和READ TABLE之后,访问的内部表的行数.
示例脚本:
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.
结果:
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
请注意第二个条目的值0:SY-TFILL
每个步骤都不会更新,仅在第一个循环之后.
我建议仅使用SY-TFILL,如果您需要在READ
(1)之后直接使用...如果在READ
SY-TFILL的使用和使用之间还有其他命令,则总是存在系统变量更改的危险.
(1)或描述表.