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

01

前言

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

  1. DefineViewEntity

  2. defineRootViewEntity

  3. defineViewEntityWithToParentAssociation

  4. defineView

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

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

  • ViewEntity方式

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

a47eb98ffe8a8264747f392a1f5ea2ec.png

差异比较点

所有差异点

2178245fd250551352f83454b8d94b7d.png

01

定义差异

View 方式

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

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

b882ec00e0b402bd18ccc5fc7a135117.png

ViewEntity方式

ViewEntity两个名称,可以相同

a0094d74920f0028d79b82935f4339e8.png

02

缓存方式

View方式通过语句设置缓存

@AbapCatalog.buffering.status: #ACTIVE

@AbapCatalog.buffering.type: #SINGLE

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

5fce28060d7e835c29667416e53ba1c6.png

ViewEntity方式

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

@AbapCatalog.entityBuffer.definitionAllowed: true

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

0e85bce597ecc4b41ed18ab91367b59f.png

933938f317572c2d4ff9b4927cbcd4a2.png

03

集团支持

View方式

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

3a24b867fa70ac9fb118d12a084f73f9.png

ViewEntity方式

默认集团相关

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

5e67a69910703ca2ea1251756e551ef1.png

9083866d054b0b7ae0b6cf273c796235.png

04

数据字典对象

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

同时视图名会登记在表 DD02L 

视图字段登记在表 DD03L

fa99f0e2a9846764352140884573e145.png

ViewEntity方式

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

66b20f0730bf369243c37c6cb358c6aa.png

05

语法差异

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

4d0eacdcdd38b17f237a687e53cc6b92.png

具体已发现的语法差异

 View方式

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

9e6f3673b320316e27991ccd6168c4c8.png

ViewEntity方式

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

6a35e5ebc32a5facb9008ef6474474a0.png

06

外键表支持 

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

07

访问名称

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

  • sqlViewName

  • View name

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

bc550c04617776e47b4f924cd3885a2f.png

08

 字段集合

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

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

34090846499644e795552e887571935c.png

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

09

搜索帮助

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

bc8304ec5a74cee2010d2a0638c3b296.png

总结

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

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

THE

END

约定

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

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值