Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos
1,992

在之前的的一篇文章里,简单探讨了ABAP直接调用HANA的视图而不必借助于旧的技术ADBC。那么这篇文章我们一起看看在NW 7.4里通过ABAP直接调用HANA的存储过程。

HANA的一个利器是各种模型视图,但是HANA的主要编程范式为将逻辑推向HANA一层,所以很多复杂的处理逻辑就要借助于存储过程。在NW 7.4之前,需要通过ADBC直接编写HANA的存储过程调用语法(SQLScript),这种方法晦涩,写起来比较麻烦。在NW 7.4,引入了一个新的数据字典对象叫做Database procedure proxies使得ABAP语言能够像与ABAP数据字典交互一样调用HANA的存储过程。

首先在HANA里创建一个测试的存储过程,而且具备输入和输出参数。
12

之后在HANA Studio的ABAP开发视图里,创建一个DB procedure proxy
22

31

41

这里有一点在开发体验上不是很方便的就是手动输入HANA存储过程。向导里并没有提供搜索或者选择的功能。

我们要注意系统为我们生成的parameter type interface,这是系统根据存储过程的输入输出参数在ABAP系统里建立的一个类型映射接口,以便ABAP编程时定义变量。

51

生成的类型接口代码为:

interface ZIF_ZSCN_DPP_001 public.
” This interface pool has been generated.
” It contains the type definitions for
” database procedure proxy ZSCN_DPP_001
types: iv_number                      type i.
types: begin of et_top,
company_name                   type c length 50,
gross_amount                   type p length 8 decimals 2,
end of et_top.
endinterface .

之后我们便可以在ABAP里面像调用一个函数模块一样使用这个HANA存储过程了:

REPORT ZSCN_DD_DDP.
PARAMETER pnumber TYPE i.
DATA: lv_number TYPE ZIF_ZSCN_DPP_001=>iv_number.
DATA: lt_top    TYPE STANDARD TABLE OF ZIF_ZSCN_DPP_001=>et_top.
lv_number = pnumber.
CALL DATABASE PROCEDURE ZSCN_DPP_001
EXPORTING   iv_number = lv_number
IMPORTING   et_top    = lt_top.

我们看到这样的集成对于ABAP ON HANA的开发来说进步了很多,让ABAP与HANA有了更好地结合。