小智 74
此任务还有一个内置函数:
variable = lines( itab_name ).
就像IronGoofy描述的"纯粹"ABAP语法一样,函数"lines()"将表itab_name的行数写入变量.
Tho*_*ten 48
您可以使用以下功能:
 DESCRIBE TABLE <itab-Name> LINES <variable>
调用之后,变量包含内部表的行数.
knu*_*nut 10
除了推荐
DESCRIBE TABLE <itab-Name> LINES <variable>
还有系统变量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)之后直接使用...如果在READSY-TFILL的使用和使用之间还有其他命令,则总是存在系统变量更改的危险.
(1)或描述表.