如何检查内部表是否包含ABAP中的特定值

时间:2012-09-13 05:45:25

标签: sap abap

这就是问题所在。是否有快捷方式,或者我应该在桌子上循环检查?

我的意思是我正在使用内部表,我想检查一个值是否包含在内部表的一个字段中,我不想循环表来查找值。 (如果可能的话)

2 个答案:

答案 0 :(得分:15)

要检查特定值而不进行循环或将值传输到工作区,您可以使用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,在以下博客文章中对此进行了描述:https://blogs.sap.com/2013/06/22/abap-news-for-release-740-new-internal-table-functions/

这是一个传递表表达式的内置函数。使用上面的例子:

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)。

答案 1 :(得分:0)

塞拉姆,

如果您要在算法中使用循环,那么您可以使用以下内容:

LOOP ITAB WHERE FIELD = 'X'.

"code sample

ENDLOOP.

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

希望它有所帮助。

塔尔哈