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
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的精简博客系统,源码+数据库+毕业论文+视频演示 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前企业对于博客信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于Springboot开发的精简博客系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本系统主要使用B/S开发模式,在idea开发平台上,运用Java语言设计相关的系统功能模块,MySQL数据库管理相关的系统数据信息,SpringBoot框架设计和开发系统功能架构,最后通过使用Tomcat服务器,在浏览器中发布设计的系统,并且完成系统与数据库的交互工作。本文对系统的需求分析、可行性分析、技术支持、功能设计、数据库设计、功能测试等内容做了较为详细的介绍,并且在本文中也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高企业的工作效率,提升用户的使用体验,因此在现实生活中运用本系统具有很大的使用价值。 关键词:博客管理;Java语言;B/S结构;MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值