以下为正文
什么是AMDP ......
ABAP托管数据库过程是AS ABAP中的一项新功能,允许开发人员直接在ABAP中编写数据库过程。您可以将数据库过程视为在数据库中存储和执行的函数。实现语言因数据库系统而异。在SAP HANA中,它是SQL脚本。使用AMDP允许开发人员使用ABAP方法和ABAP数据类型在ABAP环境中创建和执行这些数据库过程。
AMDP流程的优势
- 该方法的主要优点是只有AMDP类必须使用ABAP传输机制进行传输。
- 此过程中不需要HANA交付或HANA传输系统。
- 开发人员只需要ABAP开发工具来构建和管理CDS视图。无需其他HANA开发工具。
ABAP托管数据库过程(AMDP)的功能
- 为嵌入式SQLScript提供静态检查代码和语法着色
- 用户可以设置背景颜色,以便在类中更好地查看AMDP方法。
- 用户可以在AMDP方法中访问其他AMDP方法,ABAP字典视图和ABAP表。
- 像其他常规ABAP方法一样调用AMDP方法。
- 用户可以在事务ST22中的运行时期间执行各种错误的详细分析
- 用户可以对常规ABAP类进行修改或增强。
AMDP类定义的示例
CLASS CL_AMBP_EXAMPLE定义。
公共部分。
INTERFACES IF_AMDP_MARKER_HDB。// HANA DB的标记界面//
METHODS过程//只能使用ABAP代码//
IMPORTING it_param TYPE type1
EXPORTING et_param TYPE type2。
方法执行//可以使用SQLScript或ABAP代码//
IMPORTING VALUE(it_param)TYPE type1
EXPORTING VALUE(et_param)TYPE type2。//需要特定的参数接口//
CHANGING VALUE(ch_param)TYPE type3
ENDCLASS。
AMDP类的实现
CLASS CL_AMDP_EXAMPLE IMPLEMENTATION METHODS process // Write ABAP source code here// … ENDMETHOD METHOD execute BY DATABASE PROCEDURE //AMDP method marker// FOR HDB //Database platform// LANGUAGE SQLScript //Database language// [OPTIONS READ-ONLY] //Database-specific options// USING name1 name2 etc… //List of used DDIC entities and AMDPs// //Write here the SQLScript coding// select * from dummy; … ENDMETHOD. ENDCLASS.
让我们举一个例子:用输入,输出参数创建AMDP
首先转到HANA Studio中的ABAP建模透视图
Windows-> Perspective-> Open Perspective-> ABAP
创建ABAP类:
CLASS ztestk DEFINITION public. PUBLIC SECTION. types : tt_mara type table of mara. interfaces : if_amdp_marker_hdb. methods : my_method importing value(im_matnr) type mara-matnr exporting value(et_mara) type tt_mara. ENDCLASS. CLASS ztestk IMPLEMENTATION. method my_method by database procedure for HDB language sqlscript options read-only using MARA. et_mara=SELECT * from MARA where MATNR= IM_MATNR; endmethod. ENDCLASS.
保存(Control + S)
打开SAP GUI
输入TCODE:SE24(要查看是否创建了您的类)
我们也可以看到我们的方法和代码。
单击“显示”
输入TCODE:SE38(创建报告)
在Report中我们调用class(创建对象的类)
点击创建
在这里输入你的代码来调用类
REPORT ZTESTK_REP. PARAMETERS : p_matnr TYPE matnr DEFAULT ‘000000000000001109’. DATA : r_amdp TYPE REF TO ztestk, et_mara TYPE TABLE OF mara, r_salv TYPE REF TO cl_salv_table. CREATE OBJECT r_amdp. r_amdp->my_method( EXPORTING im_matnr = p_matnr IMPORTING et_mara = et_mara ). TRY. CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = r_salv CHANGING t_table = et_mara . CATCH cx_salv_msg . ENDTRY. r_salv->display( ).