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

01

前言

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

  1. DefineViewEntity

  2. defineRootViewEntity

  3. defineViewEntityWithToParentAssociation

  4. defineView

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

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

  • ViewEntity方式

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

3f3f885565b75a4065807de6d1f503a9.png

差异比较点

所有差异点

dce0c69e07ab2c1fb45da0200998de10.png

01

定义差异

View 方式

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

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

742b61ee74273eaeb70c3a81aab808fe.png

ViewEntity方式

ViewEntity两个名称,可以相同

c4399cdb5f9bd4d6287dbd5db6fb0b90.png

02

缓存方式

View方式通过语句设置缓存

@AbapCatalog.buffering.status: #ACTIVE

@AbapCatalog.buffering.type: #SINGLE

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

4ad90c811da5895a92d643f9e4788ed6.png

ViewEntity方式

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

@AbapCatalog.entityBuffer.definitionAllowed: true

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

1ca44aa2a47f738708c4a5356bb1604d.png

a2d7f9bcdaa24c848992110c73e18dd5.png

03

集团支持

View方式

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

f19cfa2e3f5ba69ec6e2422accaf6f9e.png

ViewEntity方式

默认集团相关

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

cb71e5f8e99b32aa48c18ba472236734.png

fefce279b3fa926d8195227c26349c89.png

04

数据字典对象

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

同时视图名会登记在表 DD02L 

视图字段登记在表 DD03L

6e3f6fa294176024fd032a4e7d79596e.png

ViewEntity方式

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

69590040d0831f3ebe8569fcd8457d9c.png

05

语法差异

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

ae740bba4308b375d40348ad8813e31f.png

具体已发现的语法差异

 View方式

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

46dbd62bde2dcb60ff4273cf74a8ef34.png

ViewEntity方式

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

90a08ee6d186955b48e9e6c97ed78e1d.png

06

外键表支持 

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

07

访问名称

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

  • sqlViewName

  • View name

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

ba78b60e946250820229586ea7aaa933.png

08

 字段集合

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

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

75a3126493ca7b7165a17ffb85896dde.png

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

09

搜索帮助

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

b80d167e2b8bf5e4d25d8994f83bc8fc.png

总结

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

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

THE

END

约定

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

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值