该LOOP语句的输出是什么?

2020-08-15 16:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我遇到了以下代码,这让我感到困惑...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我遇到了以下代码,这让我感到困惑。 请看下面的代码:

数据:itab发生0的开始,
    字母TYPE C,
 Itab的结尾。

 itab-letter ='a'。
 附加itab。

 itab-letter ='b'。
 附加itab。

 itab-letter ='c'。
 附加itab。

 itab-letter ='d'。
 附加itab。

 在itab上。
   sy-tabix = 2。
   写Itab字母。
   出口。
 ENDLOOP。

在调试模式下运行此命令时,在到达循环之前,所有4个字母都附加在内部表itab中,并且SY-TABIX的值为4

当我们执行loop语句时,即使SY-TABIX的值为 2。它也应打印b。 为什么只打印一次。

2.jpg (52.7 kB)
4条回答
独立观察员
2020-08-15 16:41

HS

SY-TABIX 是一个系统字段,其中包含正在处理的行号。

如果您从程序的开头开始在调试器中跟踪SY-TABIX的值,则在每个append语句中其值将增加1。 在这里,由于您添加了4个条目,因此循环前的值为4。

循环开始后,进程处的行号将为1,因为它已开始处理表的第一行项目。

根据 Sandra Rossi 的正确建议,您不应更改这些系统字段的值。

在进入解决方案之前,让我解释一下该程序作为循环的一部分正在做的事情:

如下图所示,在内部表上循环播放,请按照以下说明了解功能 。

关于您的问题:"当我们遍历loop语句时,为什么退出循环 即使仅在SY-TABIX的值为2时运行一次,它也应该打印b。为什么只打印一次。"

上面的解释也回答了您上面提到的问题。

如果您希望程序仅打印前2个条目并退出,则您的程序应如下所示,请确保 您的WRITE语句位于EXIT命令之前。

数据:itab开头为0,
         字母TYPE C,
       Itab的结尾。

 itab-letter ='a'。
 附加itab。

 itab-letter ='b'。
 附加itab。

 itab-letter ='c'。
 附加itab。

 itab-letter ='d'。
 附加itab。

 在itab上。
   写Itab字母。  *注意您的Write语句必须在EXIT命令之前。
   如果sy-tabix = 2。
     出口。
   万一。
 ENDLOOP。

希望您现在一切都清楚了。

致谢!

一周热门 更多>