前言部分
大家可以關注我的公眾號,公眾號里的排版更好,閱讀更舒適。
正文部分
什么是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( ).