OOPS ABAP: Final Class with Example
Final Class:
The class which can not be inherited i.e we can not create sub classes for that final class.
We can make the class as final by simply checking the checkbox 'Final' in SE24 while creating the class.
We need to use FINAL keyword to create final class locally.
Example:
*&---------------------------------------------------------------------*
*& Report ZVB_USUALABAP_CLS
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_usualabap_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 FINAL.
PUBLIC SECTION.
METHODS display IMPORTING p_vbeln TYPE vbeln_va
EXPORTING it_final TYPE ztt_so
EXCEPTIONS wrong_input.
ENDCLASS.
CLASS class1 IMPLEMENTATION.
METHOD display.
SELECT vbeln erdat erzet
FROM vbak
INTO TABLE it_vbak
WHERE vbeln = p_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 it_final.
ENDLOOP.
IF sy-subrc <> 0.
RAISE wrong_input.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA:lo_object TYPE REF TO class1.
CREATE OBJECT lo_object.
CALL METHOD lo_object->display
EXPORTING
p_vbeln = p_vbeln
IMPORTING
it_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.
ELSE.
MESSAGE 'No data available for the input' TYPE 'E'.
ENDIF.
Comments
Post a Comment