我可以使用line_exists检查初始值或不相等值吗?

时间:2018-09-27 14:55:14

标签: abap

ABAP 7.40添加了line_exists( ... )谓词函数来分析内部表。但是,有什么方法可以检查特定列是初始行还是与目标值不同的行?

例如,如何检查带有初始Material列的行(如该表中的第三行)?

Document        Country     Material    
9001287         US          198572111
9001296         FR          160023941       
9001297         EG                      
9001299         DK          873001102   

我可以使用line_exists( lt_itab[ Country = 'DK' ] )line_exists( lt_itab[ Material = '' ] )检查丹麦条目,但是<>NE似乎都没有被接受。似乎也没有办法检查例如国家/地区不是“ FR”的行?

如果line_exists无法做到这一点,那么最简洁的替代方法是什么?

2 个答案:

答案 0 :(得分:3)

不,你不能。

line_exists 是简单的谓词函数,仅接受表表达式tab[ a = b ]。而且,众所周知,表表达式只是READ TABLE的新语法,仅此而已。包括允许的比较类型在内的所有规则和约束也都将应用于表达式。

查看H. Keller's blog了解更多详细信息。

答案 1 :(得分:2)

LOOP是一种检查方法,我不知道还有什么更好的方法:

LOOP AT itab
     TRANSPORTING NO FIELDS
     WHERE country NE 'FR'.
  EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
" line exists
ELSE.
" line does not exist
ENDIF.