我在循环语句中遇到了这个问题。
我有一个循环:
loop at lt assigning <ls> where <condition> (im using loop instead of reaf table coz i need to use GE and LE logical statements)
if sy-subrc = 0.
result = <ls>-FIELD.
else.
result = ''.
endif.
endloop.
所以问题是它跳过了sy-subrc检查。当循环执行并且没有找到记录(sy-subrc = 4)时,它不会将''分配给结果字段并改为使用初始语句。
问题是什么?
答案 0 :(得分:3)
返回代码在循环之后设置(对于select
和其他循环结构相同)。所以你需要这样的东西:
loop at lt assigning <ls> where <condition>"(im using loop instead of reaf table coz i need to use GE and LE logical statements)
endloop.
if sy-subrc = 0.
result = <ls>-FIELD.
else.
result = ''.
endif.
在这种情况下,您应该使用read
- 声明(您提到GE / LE的问题 - 这可能值得另一个问题)。
现在循环所有条目。
作为替代方案,您可以在第一次进入后停止:
result = ''. "Initialize for not-found-entry.
loop at lt assigning <ls> where <condition>.
result = <ls>-FIELD. "Take the found entry
exit. "Stop after first entry
endloop.
如果没有exit
,您将获得最后一个条目。如果订单相关,您还可以添加相关的排序。