4

在 SAP 的 ABAP CDS 中,该define view语句用于创建 CDS 视图。该对象有一个 CDS 实体名称,这就是它在编辑器和包中的显示方式,但它也有一个AbapCatalog.sqlViewName必须不同的注释。语法的文档define view有一些信息:

为使用 DEFINE VIEW 定义的 CDS 视图(ABAP CDS)创建了两个对象。必须为两个对象中的每一个指定一个名称:

  • CDS 数据库视图的名称CDS_DB_VIEW必须在注解@AbapCatalog.sqlViewName 后用引号指定。ABAP 字典视图的常用规则适用于此名称,并且不区分大小写(在内部转换为大写字母)。关联的 SQL 视图在数据库上以该名称创建。

  • CDS 实体的名称 cds_entity在关键字 DEFINE VIEW 之后定义(DEFINE 是可选的)。不需要指定引号。此名称遵循 CDS 数据库视图的规则,但长度可以为 30 位。

这两个名称都位于 ABAP 字典中数据类型的命名空间中,并且每个名称都必须是唯一的。这两个名称可用于其他 DDL 语句或 ABAP 程序中以访问 CDS 视图。

它提到了一些其他差异,例如实体在 SAP 的数据字典工具(SE11、SE16)中不可用以及从实体中选择始终以严格模式运行的事实,但关键是:

在 CDS 的 DDL 和 ABAP 中,可以将 CDS 视图寻址为 CDS 数据库视图CDS_DB_VIEW和 CDS 实体 cds_entity。但是,强烈建议只使用 CDS 实体

当我在一个简单的查询中运行两者时,我注意到从实体中选择时没有 MANDT 列,但从CDS 数据库视图中选择时存在此列。

那么,开发人员在使用 CDS 视图时应该牢记数据库视图和 CDS 实体之间的真正区别是什么?

4

1 回答 1

5

您不应再查询 ABAP CDS 数据库视图并将查询限制为使用 ABAP CDS 实体。尽管在 NetWeaver 7.40 中可以查询数据库视图,但在更高版本中已弃用。所以不用担心数据库视图 :-)

请参阅文档:Open SQL 中对 CDS 视图的过时访问

为了保持行为一致并仅使用 CDS 视图的已定义属性,应仅使用 CDS 实体的名称来访问 CDS 视图。

从 7.50 版开始,在严格模式下禁止直接访问 CDS 数据库视图。

关于客户端处理,您应该相应地关注 CDS 实体的客户端行为。ABAP CDS 客户端处理描述了不同的选项。

于 2016-12-23T12:39:38.843 回答