在SAP的ABAP CDS中,define view
语句用于创建CDS视图。该对象具有CDS实体名称,这是它在编辑器和程序包中的显示方式,但是它也具有AbapCatalog.sqlViewName
注释,该注释必须有所不同。 The documentation of the define view
syntax具有一些信息:
为使用DEFINE VIEW定义的(ABAP CDS的)CDS视图创建了两个对象。必须为两个对象分别指定一个名称:
这两个名称都在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描述了不同的选项。