【ABAP系列】SAP ABAP 帶有參數的AMDP的創建


公眾號: matinal
本文作者: matinal
 

 

前言部分

大家可以關注我的公眾號,公眾號里的排版更好,閱讀更舒適。

正文部分

什么是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( ).

​

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM