如何用ABAP CDS实现NOT EXISTS?

How to achieve NOT EXISTS with the ABAP CDS?

我想 select 所有在 MSEG table 中没有现有帖子的 EKPO 记录。

在 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 视图,第一个 select 所有在 MSEG 中有记录的订单,第二个是第一个的否定。但我希望有一个更清洁的解决方案,所以我想在这里问一下。

我们是这样做的:

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 永远不会为空。