‎2008 Aug 19 9:55 AM
i write the following code in my Netweaver abap trival version to test the inheritance of object:
REPORT z_object.
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
CREATE OBJECT:ref1,ref2.
then the error message says: the statement "CREATE OBJECT:ref1,ref2." is not accessible.
how does this happen and how can i correct it? thanks in advance.i checked everything but found there should be no errors.
‎2008 Aug 19 10:06 AM
Hi,
When you are declaring Data i.e referenec variable just write
START-OF-SELECTION.
Check this
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
start-of-selection." -> Here**************
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
CREATE OBJECT: ref1,ref2.
Regards,
Sujit
‎2008 Aug 19 10:06 AM
Hi,
When you are declaring Data i.e referenec variable just write
START-OF-SELECTION.
Check this
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
start-of-selection." -> Here**************
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
CREATE OBJECT: ref1,ref2.
Regards,
Sujit
‎2008 Aug 19 10:15 AM
Hii
Check this code
REPORT z_sdn.
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
START-OF-SELECTION.
CREATE OBJECT:ref1.
Regards
Abhijeet
‎2008 Aug 19 10:29 AM
when i add the statement "START-OF-SELECTION." to the report it actually works.
another issue occurs:
REPORT z_object.
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
SUPER->M2.
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
START-OF-SELECTION.
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
CREATE OBJECT:ref1,ref2.
The error message says: SUPER->M2 is not defined.
but in fact we can use the pseudoreference super-> to access the same superclass method in the redifinited method..
Edited by: Daixiong Jiang on Aug 19, 2008 5:29 PM
‎2008 Aug 19 10:38 AM
Super-m2( ). You forgot the brackets. I do this all the time!
matt
‎2008 Aug 19 10:54 AM
Hi,
Check the code you have written-I have changed-
CLASS zclass DEFINITION.
PUBLIC SECTION.
METHODS:m1,m2.
ENDCLASS. "zclass DEFINITION
CLASS zclass_sub DEFINITION INHERITING FROM zclass.
PUBLIC SECTION.
METHODS m2 REDEFINITION.
ENDCLASS. "ZCLASS_SUB DEFINITION
CLASS zclass IMPLEMENTATION.
METHOD m1.
CALL METHOD me->m2.
ENDMETHOD. "m1
METHOD m2.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD. "m2
ENDCLASS. "zclass IMPLEMENTATION
CLASS zclass_sub IMPLEMENTATION.
METHOD m2.
SUPER->M2( ). "<----------------Here Brackets
MESSAGE 'WORLD HELLO' TYPE 'I'.
ENDMETHOD. "M2
ENDCLASS. "ZCLASS_SUB IMPLEMENTATION
START-OF-SELECTION.
DATA: ref1 TYPE REF TO zclass,
ref2 TYPE REF TO zclass_sub.
CREATE OBJECT:ref1,ref2.
Regards,
Sujit