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

作者:ABAP技巧与实战 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, S/4HANA, SD, 开发, 数据工程, 销售分销
ABAP 基础知识两种 CDS 视图的差异 - 封面图
ABAP 基础知识两种 CDS 视图的差异 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

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

1. DefineViewEntity

2. defineRootViewEntity

3. defineViewEntityWithToParentAssociation

4. defineView

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

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

• ViewEntity方式

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

**

**

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

差异比较点

所有差异点

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

_**01** _

**定义差异**

View 方式

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

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

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

ViewEntity方式

ViewEntity两个名称,可以相同

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

_**02** _

**缓存方式**

View方式通过语句设置缓存

@AbapCatalog.buffering.status: #ACTIVE

@AbapCatalog.buffering.type: #SINGLE

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

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

ViewEntity方式

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

@AbapCatalog.entityBuffer.definitionAllowed: true

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

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

_**03** _

**集团支持**

View方式

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

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

ViewEntity方式

默认集团相关

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

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

_**04** _

**数据字典对象**

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

同时视图名会登记在表 DD02L

视图字段登记在表 DD03L

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

ViewEntity方式

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

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

_**05** _

**语法差异**

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

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

**具体已发现的语法差异**

View方式

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

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

ViewEntity方式

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

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

_**06** _

**外键表支持**

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

_**07** _

**访问名称**

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

• sqlViewName

• View name

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

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

_**08** _

**字段集合**

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

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

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

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

_**09** _

**搜索帮助**

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

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

总结

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

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

** THE **

** END **

**约定**

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

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP基础知识两种CDS视图的差异.md」整理生成,仅用于内部技术分享与学习交流。