这就是问题所在。是否有快捷方式,或者我应该在桌子上循环检查?
我的意思是我正在使用内部表,我想检查一个值是否包含在内部表的一个字段中,我不想循环表来查找值。 (如果可能的话)
答案 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中的特定值。
希望它有所帮助。
塔尔哈