Suite on HANA[SoH]之ABAP直接调用HANA存储过程

阅读更多

在之前的的一篇文章里,简单探讨了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里创建一个测试的存储过程,而且具备输入和输出参数。

 

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

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

 

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

 

生成的类型接口代码为:

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有了更好地结合。

你可能感兴趣的:(abap,on,hana)