资讯动态

ABAP CDS Path Expression 中的 Join Type,为什么默认是 LEFT OUTER JOIN,以及什么时候该使用 [inner]

发布时间:2026/10/7 2:50:27 来源:尧图企业网站定制
在 ABAP CDS 里写 association 时,有一个细节特别容易被忽略。代码表面上并没有出现JOIN关键字,只是在元素列表里沿着 association 取了一个字段,数据库执行层却已经悄悄生成了 join。更容易被忽略的是,这个 join 到底属于INNER JOIN还是LEFT OUTER JOIN,并不是无关紧要的实现细节,它会直接决定 CDS entity 最终返回多少行,以及找不到关联数据时原始业务记录会不会消失。SAP 官方对 association 的描述非常准确,association 可以理解为一种预先声明的数据关系。只有当 association 真正被路径表达式使用,需要从目标数据源读取字段时,它才会实例化为实际的 join。SAP 文档也把这种行为描述为 join-on-demand。也正因为如此,下面这样的 CDS 代码_Assoc.field看起来只是取一个关联字段,运行时却必须回答一个很实际的问题。如果当前 source 行在_Assoc的 target 里找不到匹配记录,那么当前 source 行到底还要不要保留。ABAP CDS 对这个问题给出了一个非常明确的默认答案。当 SQL path target field 出现在 CDS entity 的元素列表中时,默认生成LEFT OUTER

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑