SAP ABAP CDS View
SAP ABAP CDS View 是 SAP 实现 Code Push Down(也称 Code to Data) 的一种技术手段,即将部分取数逻辑,从应用服务器推送到数据库层,从而充分发挥 SAP HANA 强大的数据处理能力。
值得一提的是,虽然如上图所示,大多数时候 提到 CDS View 时,都伴随着 HANA 数据库,然而 CDS View 并未和 HANA 深度绑定;ABAP 7.40 SP05 加上 SAP 支持的数据库上,都能正常使用 ABAP CDS View.
SAP 旗舰级产品 SAP S/4HANA,是 CDS View 技术的重度使用者,在其前身 SAP ECC 四万多张核心数据库表的基础上,开发了分别位于 Basic,Composite 和 Comsumption 三层的 CDS View:
SAP S/4HANA 系统中 CDS View 总数,在 2005 这个版本里超过了四万个。虽然从总数上来看和 ECC 核心四万多张表持平,但 SAP S/4HANA 通过引入 CDS View,借助 Fiori Elements 框架,提供了对 OData 和 Fiori 界面的自动生成功能,同时消除了 ECC 中用于 Analytics 报表应用消费而创建的临时表和聚合表(Aggregation),使得 SAP S/4HANA 能通过单一系统,同时完成 OLTP 和 OLAP 应用的运行。
大学上《数据结构》专业课时,教材将程序定义为数据结构 + 算法。
而以前传统的 SAP ERP 产品,可以理解成海量的底层数据库表 + ABAP 代码的组合。即散落在各个数据库表内的业务数据,通过 OPEN SQL 或者 Function Module 从数据库层读取到 ABAP 应用层,存储在 ABAP 内表变量里,然后由各种 ABAP 关键字对这些内表变量进行处理,将结果展现在 UI 或者写回到数据库里。
如下图所示,使用了 CDS View 的 SAP S/4HANA,对于 SAP 标准开发而言,并不意味着减少了开发量——总的开发复杂度保持不变,只不过开发复杂度,在之前传统产品里主要集中在 ABAP 应用层,而在 SAP S/4HANA 里随着 Code Push Down,开发复杂度转移到了数据库层。
对于我个人来说,我其实更喜欢在 ABAP 应用层做开发,而非在 ABAP Development Tool 里编辑 CDS View. SAP S/4HANA 标准产品里这些动辄四五百行源代码起步的 CDS View,有不少都是我在 SAP 成都研究院的 SAP S/4HANA 开发团队的同事们负责开发的,对于同事们开发这些复杂度极高的视图的功力,我非常佩服。
下图是 SAP S/4HANA 2005 里各 Business Area 对应的 CDS View 数量排行表,可以看出 FIN 凭借其业务本身的复杂度而遥遥领先。
CDS View 源代码里大量的注解,用于 Fiori UI 以及 OData 服务的自动生成。我之前的微信公众号文章,也写过很多这种注解的工作原理:
- OData 和 SAP注解(Annotations)入门级的介绍
- 揭开 SAP Fiori 编程模型规范里注解的神秘面纱 - @OData.publish 工作原理解析
- 揭开 SAP Fiori 编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly 工作原理解析
- 一份最近国内外 SAP 从业者在技术交流群里讨论的记录分享:为什么选 UI5 而不选 React
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 内,所以应用程序能获得相较传统三层架构更高的性能。
因此,从实现 Code Push Down 这个目的来看,SAP ABAP CDS View 和 HANA CDS View 殊途同归,二者都是致力于将部分逻辑,从传统的应用服务器下推到数据库层的技术手段之一。
二者的区别也很明显:
- ABAP CDS View 位于 ABAP 应用服务器中。使用 ABAP Development Tool 登录应用服务器,编写 CDS View 源代码。激活之后,会在应用服务器上生成并保存一个 Data Definition Entity(用于存储 CDS View 源代码)和一个 DDL SQL View(能用 SE11 打开,但是不能编辑)。
而 HANA CDS View 位于 HANA XS Services 内。
- ABAP CDS View 能在所有 SAP 支持的数据库上使用,前提是 ABAP 版本大于等于 7.40 SP05. 而 HANA CDS View 只能在 HANA 上使用。
- ABAP CDS View 的数据仍然采用 ABAP OPEN SQL,而 HANA CDS View 的数据读取采用 Native SQL 完成。
- ABAP CDS View 用于开发 ABAP 技术栈的应用程序,HANA CDS View 用于开发 HANA 原生应用。