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
9 回答
此任务还有一个内置函数:
就像IronGoofy描述的"pure" ABAP语法一样,函数"lines( )"将表itab_name的行数写入变量 .
您可以使用以下功能:
调用之后,变量包含内部表的行数 .
除了推荐
还有系统变量
SY-TFILL
.来自文档:
示例脚本:
结果:
请注意第二个条目的值0:
SY-TFILL
不会在每个步骤更新,仅在第一个循环之后 .我建议仅使用SY-TFILL,如果你需要在
READ
(1)之后直接使用...如果READ
和SY-TFILL的使用之间还有其他命令,则总是存在系统更改的危险变量 .(1)或描述表 .
Refreance:http://www.sapnuts.com/courses/core-abap/internal-table-work-area.html
功能模块EM_GET_NUMBER_OF_ENTRIES也将提供行计数 . 它需要1个参数 - 表名 .
您还可以使用OPEN Sql查找使用COUNT Grouping子句的行数,还有系统字段SY-LINCT来计算表的行数(ROWS) .
如果我正确理解你的问题,你想知道在内部表的条件循环期间的行号 . 如果使用内部表,则可以使用系统变量sy-tabix . 如果您需要更多信息,请参阅ABAP文档(特别是关于internal table processing的章节) .
例:
答案是
3. (vcnt = 3).
我认为这种结果没有SAP参数 . 虽然下面的代码将提供 .