ABAP基础知识 两种CDS视图的差异

文摘   2024-08-21 18:18   北京  

01

前言

S4/HANA 定义CDS视图时,可以选择四种类型

  1. DefineViewEntity

  2. defineRootViewEntity

  3. defineViewEntityWithToParentAssociation

  4. defineView

其中的常用方法1,4 也可以称呼为

  • View方式 (DDIC-BASED )ABAP 7.57 后将不再支持

  • ViewEntity方式


本文主要比较这两种方法创建视图的差异



差异比较点

所有差异点


01

定义差异


View 方式

View方式有三个名称 其中1,2名称可以相同 1,3名称可以相同  2,3名称必须区分

ABAP语句中可以使用 2,3 名称 . 部分特殊SQL语法只能使用3名称



ViewEntity方式

ViewEntity两个名称,可以相同


02

缓存方式


View方式通过语句设置缓存

@AbapCatalog.buffering.status: #ACTIVE

@AbapCatalog.buffering.type: #SINGLE

其中缓存类型 #SINGLE  #GENERIC  #FULL



ViewEntity方式

缓存方式较复杂. 先通用语句激活缓存

@AbapCatalog.entityBuffer.definitionAllowed: true

再通过缓存对象设置缓存方式


03

集团支持


View方式

默认集团相关,生成的视图会自动补充集团字段,



ViewEntity方式

默认集团相关

ENTITY 视图没有补充集团字段, 但是默认在不同集团只能读取本集团的数据


04

数据字典对象


View方式 会在数据字典中生成一个对象名. 可以通过SE11查看视图中的字段.

同时视图名会登记在表 DD02L 

视图字段登记在表 DD03L



ViewEntity方式

VIEWENTITY方式则没有这种支持,只有数据类型定义


05

语法差异


关键字按F1获取语法帮助时, 可以看到二者的语法帮助入口不一样.



具体已发现的语法差异


 View方式

DDIC-BASED VIEW 不支持字符串函数中嵌套其它字符函数



ViewEntity方式


但VIEW ENTITY 支持这种嵌套函数的语法


06

外键表支持 


因为ViewEntity方式 没有对应的数据字典对象(仅有数据类型对象), 所以不能用于外键表.  而View方式可以作为外键表使用



07

访问名称


View方式 ( DDIC-BASED VIEW )有两个访问名称

  • sqlViewName

  • View name

部分新SQL语法仅支持 view name . 这会给动态SQL访问视图带来一些麻烦


08

 字段集合


二者都能通过 LVC_FIELDCATALOG_MERGE 获取字段名

区别在于VIEW ENTITY读取的 有一个额外字段 .NODE1

具体使用时,需要去掉DATATYPE = ‘NODE’的字段, 避免出现其它异常


09

搜索帮助


二者都可以作为搜索帮助的选择方法


总结

除非定义的视图要作为外键表, 则使用View方式(DDIC-BASED VIEW) . 否则都使用ViewEntity方式 .

因为它命名一致,更多的语法支持,后续会不断改进. SAP已经停止更新View方式了

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

码农干货铺
永远要保持一种无论何时何地都逼着自己更努力更优秀来享受更好生活的学习状态
 最新文章