Skip to Content

在之前的的一篇文章里,简单探讨了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有了更好地结合。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply