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
无法做到这一点,那么最简洁的替代方法是什么?
答案 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.