我想选择 MSEG 表中没有现有过帐的所有 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 View ,第一个选择在 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
永远不会为空。
关于abap - 如何使用 ABAP CDS 实现 NOT EXISTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601013/