从CDS实体中选择与从CDS数据库视图中选择

时间:2016-12-15 14:26:24

标签: abap hana cds

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

  

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

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

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

  •   
     

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

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

  

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

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

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

1 个答案:

答案 0 :(得分:3)

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

请参阅以下文档:Obsolete Access to CDS Views in Open SQL

  

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

     

从版本7.50 严格模式禁止禁止直接访问CDS数据库视图。

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