在SAP的ABAP CDS中,define view语句用于创建CDS视图。该对象具有CDS实体名称,这是它在编辑器和程序包中的显示方式,但是它也具有AbapCatalog.sqlViewName注释,该注释必须有所不同。 The documentation of the define view syntax具有一些信息:

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

  • 必须在批注@ AbapCatalog.sqlViewName之后用引号指定 CDS数据库视图的名称CDS_DB_VIEW。 ABAP词典视图的常规规则适用于此名称,并且不区分大小写(内部转换为大写字母)。关联的SQL视图以该名称在数据库上创建。
  • 在关键字DEFINE VIEW之后定义了 CDS实体的名称cds_entity(DEFINE是可选的)。无需指定引号。该名称遵循CDS数据库视图的规则,但长度可以为30个位置。

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

    它提到了一些其他差异,例如SAP的数据字典工具(SE11,SE16)中没有该实体,以及从该实体中选择的内容始终在strict mode中运行,但踢球者是:

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

    当我在一个简单的查询中同时运行两者时,我注意到从实体中选择时没有MANDT列,但从CDS数据库视图中选择时却存在此列。
    那么,开发人员在使用CDS视图时应记住的数据库视图和CDS实体之间的真正区别是什么?

    最佳答案

    您不应再查询ABAP CDS数据库视图,而应将查询限制为使用ABAP CDS实体。尽管在NetWeaver 7.40中可以查询数据库视图,但在更高版本中不建议使用。因此,不必担心数据库View :-)
    请参阅文档:Obsolete Access to CDS Views in Open SQL:

    为了保持行为的一致性并仅使用CDS视图的已定义属性,应仅使用来使用CDS实体的名称来访问CDS视图。
    从7.50版开始,在严格模式下禁止直接访问CDS数据库视图

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

    10-04 23:28