Question

I have a program ZPROG1_TEST where I define a local class LCL_PROG1_HELPER.

I have a second program ZPROG2_TEST where I'd like to define a variable reference to this class.

Isn't there a syntactic possibility for me to do this?

Or could this be in theory doable with the RTTI classes like CL_ABAP_CLASSDESCR ?

EXTRA
Why I'd like to do this is because I have a custom form ZMM_MEDRUCK that needs to know if the ME32N Document it's printing has been changed but not saved. I've figures out the exact objects whose properties I need to interogate, but some of them are defined at design time as common interfaces, like IF_SERIALIZABLE_MM, and I need to cast them to the local classes whose instances I know these objects are going to be, like \FUNCTION-POOL=MEGUI\CLASS=LCL_APPLICATION.

I could of course try a dynamic method call and not care about anything, but since i'm here i thought i'd ask this thing first.

Was it helpful?

Solution 2

As far as I know, this is not possible. Accessing the local class dynamically is easy (well, relatively easy), but referring to it statically - not as far as I know. You'll probably have to call the methods dynamically.

OTHER TIPS

You could do it like that.

REPORT  ZPROG1_TEST.

INTERFACE lif_prog1_helper.
  METHODS:
    test.
ENDINTERFACE.

CLASS LCL_PROG1_HELPER DEFINITION.
  PUBLIC SECTION.
    INTERFACES:
      lif_prog1_helper.
    ALIASES:
      test FOR lif_prog1_helper~test.
ENDCLASS.

CLASS LCL_PROG1_HELPER IMPLEMENTATION.
  METHOD test.
    WRITE / sy-repid.
  ENDMETHOD.
ENDCLASS.

REPORT ZPROG2_TEST.

DATA: g_test TYPE REF TO object.

START-OF-SELECTION.
  CREATE OBJECT g_test TYPE ('\PROGRAM=ZPROG1_TEST\CLASS=LCL_PROG1_HELPER').
  CALL METHOD g_test->('TEST').
  CALL METHOD g_test->('LIF_PROG1_HELPER~TEST').
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top