点击此处---> 群内免费提供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)
您好 HS
SY-TABIX在循环前为4,因为字母D被添加到了 内部表的第四行(如 APPEND SAP帮助中所述)。
SY-TABIX在LOOP中为2,因为将其设置为2(LOOP开始后的第一行代码)。
在LOOP结束于第一条记录之后,由于 退出关键字。 这也是为什么只在结果中打印字母A的原因。
亲切的问候,Mateusz
hi HS ,
您做错了。
*如果您只想打印" b",那么您的代码应该像这样。
*如果只想打印" a"和" b"。 然后
*如果要写入存储在" itab"中的所有字母,请使用此代码。
谢谢。
Navneet
SY-TABIX只是有关最后访问的行的信息(未为所有操作设置,请参阅每个语句的ABAP帮助以查看是否已设置) )。
更改SY-TABIX不允许您访问内部表的另一行,更改SY-TABIX时变量(在您的情况下为ITAB)不会更改。
无论如何,您不得更改SYstem字段的值(尽管允许)。 它是 SAP官方职位:
< pre>除了一个字段(sy-repid)外,系统字段是变量,但是 但是,它们仅应用于读取,因为否则很重要 用于执行后续程序的信息可能会丢失。 系统 ABAP程序中的字段只能在极少数情况下被覆盖,以控制 系统行为。HS ,
SY-TABIX 是一个系统字段,其中包含正在处理的行号。
如果您从程序的开头开始在调试器中跟踪SY-TABIX的值,则在每个append语句中其值将增加1。 在这里,由于您添加了4个条目,因此循环前的值为4。
循环开始后,进程处的行号将为1,因为它已开始处理表的第一行项目。 p>
根据 Sandra Rossi 的正确建议,您不应更改这些系统字段的值。
在进入解决方案之前,让我解释一下该程序作为循环的一部分正在做的事情:
如下图所示,在内部表上循环播放,请按照以下说明了解功能 。
关于您的问题:"当我们遍历loop语句时,为什么退出循环 即使仅在SY-TABIX的值为2时运行一次,它也应该打印b。为什么只打印一次。"
上面的解释也回答了您上面提到的问题。
如果您希望程序仅打印前2个条目并退出,则您的程序应如下所示,请确保 您的WRITE语句位于EXIT命令之前。
希望您现在一切都清楚了。
致谢!
一周热门 更多>