SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析

我的技术交流群里今天又有朋友提到这个问题。

其实我之前在 2020 年时,曾经发过一篇微信图片推送解释过。不过微信公众号的图片推送,在搜索结果里权重很低,所以我干脆重新写一篇文章发布出来。

d4d9ae6999cdd0d860bbb72ab68200db.png

2020 年发送过的图片推送的地址

这两种视图的名称相似,目的相似,但是实现的具体技术和应用场合不同。

SAP ABAP CDS View

SAP ABAP CDS View 是 SAP 实现 Code Push Down(也称 Code to Data) 的一种技术手段,即将部分取数逻辑,从应用服务器推送到数据库层,从而充分发挥 SAP HANA 强大的数据处理能力。

70ba49935b887420c8ec22d0f83a14de.png

值得一提的是,虽然如上图所示,大多数时候提到 CDS View 时,都伴随着 HANA 数据库,然而 CDS View 并未和 HANA 深度绑定;ABAP 7.40 SP05 加上 SAP 支持的数据库上,都能正常使用 ABAP CDS View.

9b456a62d9fd10a1d5cd7407d9280119.png

SAP 旗舰级产品 SAP S/4HANA,是 CDS View 技术的重度使用者,在其前身 SAP ECC 四万多张核心数据库表的基础上,开发了分别位于 Basic,Composite 和 Comsumption 三层的 CDS View:

5b00f585109a5120b82087bba2aafb23.png

SAP S/4HANA 系统中 CDS View 总数,在 2005 这个版本里超过了四万个。虽然从总数上来看和 ECC 核心四万多张表持平,但 SAP S/4HANA 通过引入 CDS View,借助 Fiori Elements 框架,提供了对 OData 和 Fiori 界面的自动生成功能,同时消除了 ECC 中用于 Analytics 报表应用消费而创建的临时表和聚合表(Aggregation),使得 SAP S/4HANA 能通过单一系统,同时完成 OLTP 和 OLAP 应用的运行

0b712bd0141532987889d1bc23fbb60a.png

大学上《数据结构》专业课时,教材将程序定义为数据结构 + 算法

而以前传统的 SAP ERP 产品,可以理解成海量的底层数据库表 + ABAP 代码的组合。散落在各个数据库表内的业务数据,通过 OPEN SQL 或者 Function Module 从数据库层读取到 ABAP 应用层,存储在 ABAP 内表变量里,然后由各种 ABAP 关键字对这些内表变量进行处理,将结果展现在 UI 或者写回到数据库里。

如下图所示,使用了 CDS View 的 SAP S/4HANA,对于 SAP 标准开发而言,并不意味着减少了开发量——总的开发复杂度保持不变,只不过开发复杂度,在之前传统产品里主要集中在 ABAP 应用层,而在 SAP S/4HANA 里随着 Code Push Down,开发复杂度转移到了数据库层。

c45b511148357377318aebf0fc770d1b.png

对于我个人来说,我其实更喜欢在 ABAP 应用层做开发,而非在 ABAP Development Tool 里编辑 CDS View. SAP S/4HANA 标准产品里这些动辄四五百行源代码起步的 CDS View,有不少都是我在 SAP 成都研究院的 SAP S/4HANA 开发团队的同事们负责开发的,对于同事们开发这些复杂度极高的视图的功力,我非常佩服。

5b1c3fcc96690c3f50ef48bfe3681896.png

下图是 SAP S/4HANA 2005 里各 Business Area 对应的 CDS View 数量排行表,可以看出 FIN 凭借其业务本身的复杂度而遥遥领先。

19e3dff01d144c3158a4f2db6b92b0b8.png

CDS View 源代码里大量的注解,用于 Fiori UI 以及 OData 服务的自动生成。我之前的微信公众号文章,也写过很多这种注解的工作原理:

f1c5a0d030159e54634d7c0d62a5254a.png

SAP HANA CDS View

SAP HANA CDS View 在 SAP HANA XS(HANA Extended Application Services)数据库中存储的 DDL 文件里进行创建和维护。

HANA CDS View 为 SAP HANA 原生应用程序开发服务,它们与 SAP HANA 数据库深度绑定,只能与 HANA 数据库一起使用。

当从头开始开发一个新的 HANA 原生应用时,SAP 推荐使用所谓的 SAP HANA 2-tier Architecture. 在这个架构下,承载应用程序与控制流逻辑的 XS Services 已经位于 HANA 内,所以应用程序能获得相较传统三层架构更高的性能。

99b64cd743e72f0fda0844acf2b20c4e.png

因此,从实现 Code Push Down 这个目的来看,SAP ABAP CDS View 和 HANA CDS View 殊途同归,二者都是致力于将部分逻辑,从传统的应用服务器下推到数据库层的技术手段之一。

二者的区别也很明显:

1. ABAP CDS View 位于 ABAP 应用服务器中。使用 ABAP Development Tool 登录应用服务器,编写 CDS View 源代码。激活之后,会在应用服务器上生成并保存一个 Data Definition Entity(用于存储 CDS View 源代码)和一个 DDL SQL View(能用 SE11 打开,但是不能编辑)。

而 HANA CDS View 位于 HANA XS Services 内。

2. ABAP CDS View 能在所有 SAP 支持的数据库上使用,前提是 ABAP 版本大于等于 7.40 SP05. 而 HANA CDS View 只能在 HANA 上使用。

7d96a2d9ae71b2a483770a15bdd3d236.png

3. ABAP CDS View 的数据仍然采用 ABAP OPEN SQL,而 HANA CDS View 的数据读取采用 Native SQL 完成。

4. ABAP CDS View 用于开发 ABAP 技术栈的应用程序,HANA CDS View 用于开发 HANA 原生应用。

本文全部基于人工编辑,没有使用 ChatGPT 辅助。感谢阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值