是否有捷径,或者我应该在桌子上循环并检查?
我的意思是我正在使用一个内部表,我想检查一个值是否包含在内部表的一个字段中,我不想循环表来查找该值。是否可以?
要在不执行循环或将值传输到工作区的情况下检查特定值,可以使用READ
带有添加的语句,TRANSPORTING NO FIELDS
如下所示:
READ TABLE itab WITH KEY FIELD = 'X' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
"Read was successful.
ENDIF.
更新:从 740 版开始,ABAP 包含此博客文章LINE_EXISTS
中描述的谓词函数。
它是一个内置函数,您可以将表表达式传递给它。使用上面的例子:
IF line_exists( itab[ field = 'X' ] ).
"Do stuff
ENDIF.
该谓词中表表达式的完整语法请参见此处:https ://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abentable_expressions.htm
塞拉姆,
如果你打算在你的算法中使用循环,那么你可以使用这样的东西:
LOOP ITAB WHERE FIELD = 'X'.
"code sample
ENDLOOP.
如果您不打算在代码中使用循环,那么我认为没有特定的方法可以检查 itab 中的特定值。
希望它有帮助。
塔尔哈