可以将变量定义为对另一个程序中定义的本地类的引用吗?

时间:2013-08-07 09:52:50

标签: reflection casting sap abap

我有一个程序ZPROG1_TEST,我定义了一个本地类LCL_PROG1_HELPER

我有第二个程序ZPROG2_TEST,我想在这个类中定义一个变量引用。

我有没有语法上的可能性来做这件事?

或者这在理论上可以用于像CL_ABAP_CLASSDESCR这样的RTTI类吗?

EXTRA
为什么我要这样做是因为我有一个自定义表单ZMM_MEDRUCK,需要知道ME32N文档的打印是否已更改但未保存。 我已经确定了我需要交互的属性的确切对象,但其中一些在设计时被定义为常见接口,如IF_SERIALIZABLE_MM,我需要将它们转换为实例I的本地类知道这些物体将会是,如\ FUNCTION-POOL = MEGUI \ CLASS = LCL_APPLICATION。

我当然可以尝试动态的方法调用,而不关心任何事情,但是因为我在这里,我以为我先问这件事。

2 个答案:

答案 0 :(得分:2)

你可以这样做。

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').

答案 1 :(得分:1)

据我所知,这是不可能的。动态访问本地类很容易(相对容易),但静态地引用它 - 不是我所知道的。您可能需要动态调用这些方法。