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.
TYPESBEGIN 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->displayEXPORTING
                   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

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction