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

Abap 从CDS实体选择与从CDS数据库视图选择,abap,hana,cds,Abap,Hana,Cds,在SAP的ABAP CDS中,define view语句用于创建CDS视图。此对象有一个CDS实体名称,这是它在编辑器和包中的显示方式,但它还有一个必须不同的AbapCatalog.sqlViewName注释。有一些信息: 为使用定义视图定义的CDS视图(ABAP CDS)创建两个对象。必须为两个对象中的每一个指定名称: CDS数据库视图的名称CDS\u DB\u必须在注释@AbapCatalog.sqlViewName后的引号中指定。ABAP字典视图的常规规则适用于此名称,且不区分大小写(它

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

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

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

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

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

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

在CDS的DDL和ABAP中,CDS视图可以作为CDS数据库视图和CDS实体来处理。但是,强烈建议只使用CDS实体

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


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

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

请参阅以下文档:

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

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

关于客户处理,您应该相应地关注CDS实体的客户行为。下面介绍了不同的选项。

“希望有帮助。”确实如此,感谢您的输入和链接。我已经复制编辑了你的答案,并添加了相关的文档部分,以避免链接腐烂。顺便说一句,欢迎访问该网站。