9

是否有捷径,或者我应该在桌子上循环并检查?

我的意思是我正在使用一个内部表,我想检查一个值是否包含在内部表的一个字段中,我不想循环表来查找该值。是否可以?

4

2 回答 2

23

要在不执行循环或将值传输到工作区的情况下检查特定值,可以使用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

于 2012-09-13T07:33:59.823 回答
2

塞拉姆,

如果你打算在你的算法中使用循环,那么你可以使用这样的东西:

LOOP ITAB WHERE FIELD = 'X'.

"code sample

ENDLOOP.

如果您不打算在代码中使用循环,那么我认为没有特定的方法可以检查 itab 中的特定值。

希望它有帮助。

塔尔哈

于 2012-09-13T06:55:36.127 回答