AMDP Procedure Methods with Inheritance
Abstract Super Class with AMDP Marker Tag Interface.
Subclass with AMDP Procedure Method redefining the abstract method of super class.
Subclass with normal method redefining the abstract method of super class.
Report to test.
Output:
Abstract Super Class-
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.
Subclass with AMDP ProcedureMethod
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.
Subclass with normal redefined method
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_amdp.
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( ).