OOPS ABAP: Inheritance with Example
Inheritance: Creating Sub classes or child classes from parent class.
or
Deriving the new classes from existing classes.
Note: Multiple inheritance is not possible in ABAP, but we can achieve with the help of Interfaces.
Example:
In the below example we are creating the subclass1 for class1 so that we can call the methods of class1 using Subclass1
*&---------------------------------------------------------------------*
*& Report ZVB_INH_CLS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_inh_cls.
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
END OF ty_vbap,
BEGIN OF ty_final,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
posnr TYPE vbap-posnr,
END OF ty_final.
DATA:it_vbak TYPE TABLE OF ty_vbak,
is_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
is_vbap TYPE ty_vbap,
it_final TYPE TABLE OF ty_final,
is_final TYPE ty_final.
PARAMETERS : p_vbeln TYPE vbak-vbeln.
CLASS class1 DEFINITION.
PUBLIC SECTION.
METHODS display IMPORTING pv_vbeln TYPE vbeln_va
EXPORTING pt_final TYPE ztt_so.
ENDCLASS.
CLASS class1 IMPLEMENTATION.
METHOD display.
SELECT vbeln erdat erzet
FROM vbak
INTO TABLE it_vbak
WHERE vbeln = pv_vbeln.
IF it_vbak IS NOT INITIAL.
SELECT vbeln posnr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
ENDIF.
LOOP AT it_vbap INTO is_vbap.
is_final-vbeln = is_vbap-vbeln.
is_final-posnr = is_vbap-posnr.
READ TABLE it_vbak INTO is_vbak WITH KEY vbeln = is_vbap-vbeln.
is_final-erdat = is_vbak-erdat.
is_final-erzet = is_vbak-erzet.
APPEND is_final TO pt_final.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
CLASS subclass1 DEFINITION INHERITING FROM class1.
ENDCLASS.
START-OF-SELECTION.
DATA:LO_OBJ TYPE REF TO subclass1.
CREATE OBJECT lo_obj.
lo_obj->display( EXPORTING
pv_vbeln = p_vbeln
IMPORTING
pt_final = it_final ).
IF it_final IS NOT INITIAL.
LOOP AT it_final INTO is_final.
WRITE: / is_final-vbeln,
10 is_final-posnr,
30 is_final-erdat,
50 is_final-erzet.
ENDLOOP.
ENDIF.
Comments
Post a Comment