关于abap:带继承的AMDP过程方法

27次阅读

共计 1786 个字符,预计需要花费 5 分钟才能阅读完成。

CLASS zcl_demo_003_amdp DEFINITION PUBLIC CREATE PUBLIC ABSTRACT.

  PUBLIC SECTION.
    INTERFACES: if_amdp_marker_hdb.
    METHODS: get_spfli_details ABSTRACT IMPORTING VALUE(iv_mandt) TYPE mandt
                                        EXPORTING VALUE(et_spfli) TYPE spfli_tab.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_demo_003_amdp IMPLEMENTATION.
ENDCLASS.
CLASS zcl_demo_004_amdp DEFINITION PUBLIC
INHERITING FROM zcl_demo_003_amdp FINAL CREATE PUBLIC .

  PUBLIC SECTION.
    METHODS: get_spfli_details REDEFINITION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_demo_004_amdp IMPLEMENTATION.
  METHOD get_spfli_details BY DATABASE PROCEDURE FOR HDB LANGUAGE
                           SQLSCRIPT OPTIONS READ-ONLY USING spfli.
    et_spfli = SELECT * FROM spfli WHERE mandt = :iv_mandt;
  ENDMETHOD.
ENDCLASS.
CLASS zcl_demo_005_amdp DEFINITION PUBLIC INHERITING FROM zcl_demo_003_amdp FINAL CREATE PUBLIC .

  PUBLIC SECTION.
    METHODS get_spfli_details REDEFINITION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_demo_005_amdp IMPLEMENTATION.
  METHOD get_spfli_details .
    SELECT * FROM spfli INTO TABLE et_spfli.
  ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Report ztest_amdp2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_amdp2.
CLASS lcl_test_amdp DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: run.
ENDCLASS.
CLASS lcl_test_amdp IMPLEMENTATION.
  METHOD run.

    NEW zcl_demo_005_amdp( )->get_spfli_details(EXPORTING iv_mandt = sy-mandt IMPORTING et_spfli = DATA(lt_spfli) ).
* AMDP Method call
    TRY.
        IF cl_abap_dbfeatures=>use_features(requested_features = VALUE #( ( cl_abap_dbfeatures=>call_amdp_method) ) ) = abap_true.
          NEW zcl_demo_004_amdp( )->get_spfli_details(EXPORTING iv_mandt = sy-mandt IMPORTING et_spfli = DATA(lt_spfli_amdp) ).
          BREAK-POINT.
        ENDIF.
      CATCH cx_abap_invalid_param_value.
    ENDTRY.

  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  lcl_test_amdp=>run().

正文完
 0