CDS Association with where condition containing a SELECT

CDS Association with where condition containing a SELECT

我有两种看法:

ZC_PurRequisitionFs 和 ZMM_ONAYT005.

第一个视图扩展自 C_PurRequisitionFs。

第二个视图从 Z* 获取数据 table。

如何才能只获取第一个视图中不存在的数据?



@AbapCatalog.sqlViewAppendName: 'ZCPURREQUISFS'
@EndUserText.label: 'Sat belgeleri'
extend view C_PurRequisitionFs with ZC_PurRequisitionFs {
    *
} where ZC_PurRequisitionFs.object_id not in( SELECT * FROM ZMM_ONAYT005 ).



据我所知,ABAP CDS 视图不支持子查询,因此您需要将其包含在主查询中。

请检查这个guide

虽然 CDS 视图不支持子查询,但它们支持 JOIN。

通常您会使用 JOIN 来仅获取在两个 table 中都存在的那些条目。但是,当您想要 table A 中 不存在 的所有条目都存在于 table B 中时,您可以执行 left outer join 然后添加 where-条件仅适用于 table is null.

正确的条目
define view Z_TEST as select 
from table_a
left outer join table_b on 
    table_a.object_id = table_b.object_id
{
    ... fields....
}
where table_b.object_id is null;