原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
前言
S4/HANA 定义CDS视图时,可以选择四种类型
3. defineViewEntityWithToParentAssociation
其中的常用方法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
申请进入公众号讨论群提问或者参与话题讨论