*&---------------------------------------------------------------------*
*& Report ZFACTORY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZFACTORY.
CLASS Financial_Document DEFINITION ABSTRACT.
PUBLIC SECTION.
CLASS-METHODS: factory
IMPORTING ccode TYPE bukrs
RETURNING value(ro_obj) TYPE REF TO Financial_Document.
METHODS: process_output ABSTRACT.
ENDCLASS.
CLASS Financial_Document1 DEFINITION INHERITING FROM Financial_Document.
PUBLIC SECTION.
METHODS: process_output REDEFINITION.
ENDCLASS.
CLASS Financial_Document2 DEFINITION INHERITING FROM Financial_Document.
PUBLIC SECTION.
METHODS: process_output REDEFINITION.
ENDCLASS.
CLASS Financial_Document IMPLEMENTATION.
METHOD factory.
if ccode = 'CC01'.
CREATE OBJECT ro_obj TYPE Financial_Document1.
ELSEIF ccode = 'CC02'.
CREATE OBJECT ro_obj TYPE Financial_Document2.
endif.
ENDMETHOD.
ENDCLASS.
*
CLASS Financial_Document1 IMPLEMENTATION.
METHOD process_output.
WRITE: / 'Processing balancesheet'.
ENDMETHOD. "process_output
ENDCLASS.
*
CLASS Financial_Document2 IMPLEMENTATION.
METHOD process_output.
WRITE: / 'Processing income statement'.
ENDMETHOD. "process_output
ENDCLASS.
START-OF-SELECTION.
DATA: lo_output TYPE REF TO Financial_Document.
lo_output = Financial_Document=>factory( 'CC02' ).
lo_output->process_output( ).