当前位置:  开发笔记 > 编程语言 > 正文

如何在abap中获取内部表的行数?

如何解决《如何在abap中获取内部表的行数?》经验,为你挑选了3个好方法。

如何获取内部表的行数?我想我可以循环播放它.但必须有一个更健全的方式.

我不知道它是否有所作为,但代码应该在4.6c版本上运行.



1> 小智..:

此任务还有一个内置函数:

variable = lines( itab_name ).

就像IronGoofy描述的"纯粹"ABAP语法一样,函数"lines()"将表itab_name的行数写入变量.


由于您可以将其用作内联操作,因此它远优于`describe`。例如:`if lines(itab)>0。itab [1] -text ='土豆'。endif.`或`coeff = lines(lt_relevant)/ lines(lt_all)`。

2> Thorsten..:

您可以使用以下功能:

 DESCRIBE TABLE  LINES 

调用之后,变量包含内部表的行数.



3> knut..:

除了推荐

DESCRIBE TABLE  LINES 

还有系统变量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)或描述表.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有