ABAP CDS view 支持三种 join 方式:
- Inner Join
- Left Outer join
- Right outer join
我们使用 ABAP Development Tool 的 CDS view 向导创建一个 CDS view:

向导里包含的 $
和大括号就是占位符,需要开发人员自己指定:

我们把占位符替换成实际的 SFLIGHT 和 SPFLI.

激活 CDS view,可以预览数据了:

我们看到了 CDS 视图如何在 Join 的帮助下从 2 个表中获取数据。但是让我们想一想,为什么要创建这些 CDS 视图? 背后的目的是什么?
CDS 视图不会被业务用户直接访问,而是会被 ABAP 程序、Fiori 应用程序或 BI 前端工具使用。假设在 5 个不同的表上使用 JOINS 创建了 CDS 视图,则每次触发此 CDS 视图时都会执行此 JOIN 条件。即使业务用户只查看 2 个表中的字段,但 CDS 视图将首先运行所有 5 个表的连接条件,并且用户查看的字段数量无关紧要。 这种基于 JOIN 的 SQL 概念,在用户仅查看部分数据的情况下,会导致从 CDS 视图中提取数据的性能延迟。 为了克服这个问题,SAP 对这种获取数据的 SQL 方式进行了增强,引入了 JOIN 的概念。
使用 association,只有在用户想要查看数据时才会获取数据。让我们看看它是如何工作的。
association 也是一种 join,可以根据 join 条件从多个表中获取数据,但这些是按需连接,即它们只会在用户访问所需数据时触发。 例如 CDS 视图配置了 4 个关联,而用户仅获取 2 个表的数据,其他 2 个表上的关联将不会被触发,系统将快速返回结果。因此同常规 SQL JOINS 相比,association 的性能更优。
网友评论