文章翻译自Tushar Sharma的文章,转载请注明原作者和译者!
文章目录
1. CDS Views类型
让我们来看看在真实的开发场景下基于ABAP的不同类型的CDS Views。为了创建一个CDS View,我们需要用到安装了SAP开发组件的Eclipse。(例如,ABAP开发工具,即ADT)。 [安装Eclipse ADT组件 详见文档的6.1.3部分/若链接失效可输入提取码hxyo以下载]
定义不同类型的CDS Views
- 定义视图
- Define View with Join.
- Define View with Association.
- Define View with Parameters.
2)扩展视图
3)定义带有参数的表函数
1.1 定义视图
使用CDS源代码在ABAP CDS中定义一个CDS View。这个CDS通过查取语句实现。AbapCatalog.sqlViewName必须在视图本身被语句DEFINE VIEW定义之前就声明好。
当使用DEFINE VIEW定义一个CDS View后,有两个对象会被创建。我们必须为这两个对象指定一个名称:
- CDS数据库视图的名称CDS_DB_VIEW必须在声明语AbapCatalog.sqlViewName之后用引号指定。该视图是ABAP字典中的CDS视图的技术基础。命名规则遵从常规的ABAP字典视图的规则,不区分大小写(它会在内部自动转化为大写)。在数据库中会以这个名称创建关联的SQL视图。在此CDS View传输到后续系统后,就不能再更改这个数据库视图名称了。
- CDS Entity的名称cds_entity是通过关键字DEFINE VIEW定义的(DEFINE是可选的),不需要用引号括起来。该名称同样遵循常规的CDS数据库视图命名规则,但是不能超过char30。CDS Entity表示CDS View的所有属性。
上图:视图定义示例
1.1.1 Define View with Joins.
在ABAP CDS中定义CDS视图的两个数据源之间的连接。使用连接表达式。
内连和外连都可以:
- 通过inner join或直接join语句,将两个数据源满足字段ON条件的选择字段选取出来。
- 左连接:left outer join;右连接:right outer join;都通过ON条件选取字段。当在Open SQL中使用CDS视图时,不满足ON条件的左侧或右侧元素会被友好的设置为初始NULL值。
在这个嵌套连接表达式里,查询结果由ON条件来指定。不管是左连接亦或右连接,紧邻ON的条件是对于每个连接数据源的,它被隐式的括号括起来。当然,你也可以使用实际的括号( )将其括起来,这是可选的。
对于一个连接表达式,连接条件cond_expr必须跟在ON后面。它适用于一下规则:
ABAP CDS View的连接ON条件cond_exp
- 允许使用所有的关系表达符
- 等式左边的字段是属于join连接左边的数据源的
- 两个数据源连接的等式右边的字段,可以是具有可选域的文本、参数、会话变量(但不适用于运算符like)
- 必须对联接的左侧数据源的字段和右侧数据源的字段进行至少一次相等性比较。
- 不能指定路径表达式或其他表达式或函数调用。
1.1.2 Define View with Associations.
在CDS View的SELECT语句中为表定义一个关联名称_assoc。这个关联连接了第一个基础数据源(被指定为初始数据源,在ON条件之后)到目标数据源(在关联定义中的)。不能使用join构建目标数据源。
通过路径表达式中指定的关联名称,