Могу ли я проверить начальные или не равные значения с line_exists? - PullRequest
0 голосов
/ 27 сентября 2018

В ABAP 7.40 добавлена ​​функция предиката line_exists( ... ) для анализа внутренних таблиц.Но есть ли способ, которым я могу проверить наличие строки, в которой определенный столбец является начальным или отличается от целевого значения?

Например, как я могу проверить строку сисходный столбец материала, например третья строка в этой таблице?

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 голосов
/ 27 сентября 2018

Нет, вы не можете.

line_exists - простая функция предиката, которая принимает только табличные выражения tab[ a = b ].И, как мы знаем, табличные выражения - это просто новый синтаксис для READ TABLE, не более того.Все правила и ограничения, включая разрешенный тип сравнения, применяются и к выражениям.

Проверка H.Блог Келлера для более подробной информации.

0 голосов
/ 27 сентября 2018

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.
...