abap - 如何使用 ABAP CDS 实现 NOT EXISTS?

标签 abap cds

我想选择 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/

相关文章:

abap - 从代码调用 PA30 事务后回滚数据库访问

string - 在 ABAP 调试器中查看长字符串的结尾

abap - 聚合字段根据条件使用 SUM/MIN?

odata - 如何访问 OData V2 服务的两级深层嵌套关联?

hana - CDS View 中的 READ_TEXT 类似功能

aggregate-functions - 从表中选择 MAX( ) 的最快方法

ide - ABAP IDE 中双击的键盘快捷键

abap - 从 ABAP CDS View 调用类方法?

abap - 调用 RFC_READ_TABLE 时出现 DATA_BUFFER_EXCEEDED 错误?

node.js - 为 SAP CAP 应用程序定义自定义 Express 端点