《SAP ABAP面向对象程序设计:原则、模式及实践》
https://book.douban.com/subject/30317853/
http://www.duokan.com/shop/tbt/book/179473
https://item.jd.com/12423999.html
https://e.jd.com/30429611.html
2.3.9 HANA SQL Script简介
传统的ABAP开发,一般是将数据从数据库中读取到ABAP的应用服务器中,经过ABAP程序的计算后,进行前端展现并存回数据库。
而SAP平台升级到HANA之后,SAP S/4HANA的数据库固定为HANA内存数据库,随着数据库计算效率的极大地提高, SAP推荐将复杂的逻辑从ABAP的应用服务器下沉到数据库服务器端,以充分利用内存数据库的性能优势。
SAP S/4 HANA可以采用前端ABAP调用数据库端的程序进行业务逻辑计算,然后再通过ABAP程序直接读取计算结果,有效解决了数据输入输出瓶颈,提高了计算效率。
SAP的HANA数据库的采用的SQL实现称为SQL Script (SQL脚本),是SAP对标准 SQL语言的一种扩展实现。
这种本地SQL(Native SQL)支持用户将将复杂的逻辑下沉到到高性能的HANA数据库中,从而提高系统的计算能力。SQL Script 就是HANA数据库所支持的SQL语言的实现。
ABAP for HANA提供了AMDP接口用于调用HANA端的基于SQL Script的存储过程,或者ABAP可以调用CDS视图(CDS View)等预定义在HANA数据库端的视图,这样能够极大地提高运算效率。
使用SQL Script的好处主要是:
- 可以分利用内存数据库的性能优势,在SAP HANA数据库中执行复杂的计算和业务逻辑。
-
避免大批量的数据在数据库和ABAP应用层上传递,使用SQL Script脚本代替单个查询,可以同时返回多个值,降低I/O瓶颈。
-
可以在数据库层实现复杂的逻辑控制,一个SQL的函数或存储过程可以进一步分解为更小的函数。 SQL Script脚本可以提供在单个的SQL语句中不可实现的控制逻辑。
HANA中为了充分利用内存数据库的高性能,建议用户将逻辑下沉到数据库端,为此,SAP HANA提供了CDS (Core Data Services),CDS是可以预定义在HANA数据库端的视图。
CDS提供了一个基于SQL的层,其扩展了SQL-92的标准,可以对传统的OLTP和OLAP模型的进行统一的数据定义,数据查询和数据操作。
ABA程序中通过OPEN SQ语句可以访问CDS,从而更加容易地访问HANA数据库。
HANA中为了能够调用NATIVE SQL,也提供了ADBC (ABAP Database Connectivity) 接口,ADBC是一个基于面向对象的应用接口,用于HANA的数据库连接,SQL语句的执行和异常管理。
在SAP 的S/4 HANA开发中,对于一般的应用,ABAP for HANA开发有以下的建议:
-
如果需要查询的数据可重用,使用CDS和OPEN SQL又可以实现相同的功能,就选择使用CDS。
-
如果数据库中还没有创建相应的CDS,而且功能是不需要重用的,可以使用OPEN SQL。
-
如果前两项都不适用,则可以在HANA数据库中创建存储过程(SQL Script Stored Procedure)处理业务,然后ABAP采用AMDP接口调用HANA的存储过程。
简单来说,ABAP for HANA推荐的开发顺序为1. CDS > 2. OPEN SQL > 3. AMDP 调用HANA SQL Script存储过程 > 4. ADBC 调用 HANA Native SQL。
对于SAP HANA的开发,有机会我们再系统地讨论。本书注重的是在SAP ECC和S4/HANA平台上都适用的SAP ABAP面向对象程序设计。所以我们这里仅展示其中的一个ADBC调用HANA SQL Script查询语句的过程,如示例程序2.8 (系统环境为SAP HANA S/4 1610)。
SUBSTRING,LENGTH 等都是HANA SQL Script的内置的SQL 函数。
"示例程序2.8(HANA) |
"本程序为SAP HANA 1610版本 |
如图2-16所示,程序运行结果如下。