1. 程式人生 > 其它 >SAP 02-AMDP Functions for CDS Table Functions

SAP 02-AMDP Functions for CDS Table Functions

本文轉載:https://blog.csdn.net/qq_30797051/article/details/123843806

1. 建立一個Core Data Service Table Functions

    • 新建 Core Data Service Table Function

    • 定義CDS Table Functions

@EndUserText.label: 'a simple AMDP for CDS Table Functions'
@ClientDependent: true                              //開啟 Open SQL 的自動客戶端處理
define table 
function ZAMDP_CDS_TABFUNC_01 with parameters @Environment.systemField: #CLIENT //Open SQL 通過將sy-mandt的值隱式傳遞給該引數來處理 ip_clnt:abap.clnt, //入參client ip_matnr:matnr returns { MANDT:abap.clnt; //Field:ref elements MATNR:matnr; ERSDA:ersda; ERNAM:ernam; MTART:mtart; MATKL:matkl; SPRAS:spras; MAKTX:maktx; } implemented by method
zamdp_demo002
=>GET_MARA;

 

2. 實現CDS Table Functions中的AMDP Class

  • 新建ABAP Class
  •  

  • 實現ABAP Class

  

CLASS zamdp_demo002 DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

PUBLIC SECTION.
    interfaces: IF_AMDP_MARKER_HDB.

    class-methods:
        GET_MARA
            for table function zamdp_cds_tabfunc_01.
PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zamdp_demo002 IMPLEMENTATION. method GET_MARA by database function for hdb language sqlscript options read-only using mara makt. *可以多表連線 也可以單表查詢 return with makt_tmp as ( select * from makt ) select t1.MANDT, t1.MATNR, t1.ERSDA, t1.ERNAM, t1.MTART, t1.MATKL, t2.SPRAS, t2.MAKTX from mara as t1 inner join makt_tmp as t2 on t1.matnr = t2.matnr where t1.mandt = :ip_clnt --Use Table Function Parameter and t1.MATNR = :ip_matnr; endmethod. ENDCLASS.

3. ABAP中呼叫AMDP Functions for CDS Table Functions

  • ABAP中呼叫CDS Table Functions
*&---------------------------------------------------------------------*
*& Report ZTMP_TEST_IT029
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTMP_TEST_IT029.


START-OF-SELECTION.
  SELECT *
    FROM zamdp_cds_tabfunc_01( ip_matnr = '000000000100000001' )
    INTO TABLE @DATA(result) ##db_feature_mode[amdp_table_function].

  cl_demo_output=>display( result ).