如何用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
永远不会为空。
我想 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
永远不会为空。