Как достичь НЕ СУЩЕСТВУЕТ с ABAP CDS? - PullRequest
3 голосов
/ 09 марта 2020

Я хотел бы выбрать все записи EKPO, у которых нет существующей публикации в таблице MSEG.

В ABAP SQL это можно сделать, как показано ниже:

SELECT ebeln, ebelp FROM ekpo INTO TABLE @DATA(orders)
  WHERE NOT EXISTS ( SELECT ebeln FROM mseg 
                                  WHERE ebeln = ekpo~ebeln
                                    AND ebelp = ekpo~ebelp ).

Единственное решение, которое я нашел, - это создать 2 представления CDS, первый из которых выбирает все ордера с записью в MSEG, а второй - отрицание первого. Но я бы ожидал более чистого решения, поэтому я хотел бы спросить здесь.

1 Ответ

3 голосов
/ 10 марта 2020

Вот как мы это делаем:

define view my_view as 
select from ekpo
association[0..1] to mseg
  on mseg.ebeln = ekpo.ebeln
  and mseg.ebelp = ekpo.ebelp
{
  ebeln,
  ebelp
}
where mseg.mandt is null

Если в mseg нет записи, соответствующей критериям, все поля ассоциации будут нулевыми. В противном случае mseg.mandt никогда не будет нулевым.

...