可以将变量定义为对其他程序中定义的本地类的引用



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

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

我这样做难道不存在句法上的可能性吗?

或者,这在理论上对像CL_ABAP_CLASSDESCR这样的RTTI类是可行的吗?

额外
我之所以要这样做,是因为我有一个自定义表单ZMM_MEDRUCK,它需要知道它打印的ME32N文档是否已更改但未保存。我已经计算出了确切的对象,我需要对其属性进行互操作,但其中一些对象在设计时被定义为公共接口,如IF_SERIALIZABLE_MM,我需要将它们强制转换为本地类,我知道这些对象的实例将是这些类的实例,如\ FUNCTION-POOL=MEGUI\ CLASS=LCL_APPLICATION。

我当然可以尝试动态方法调用,而不关心任何事情,但既然我在这里,我想我应该先问这个问题。

你可以这样做。

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_TESTCLASS=LCL_PROG1_HELPER').
  CALL METHOD g_test->('TEST').
  CALL METHOD g_test->('LIF_PROG1_HELPER~TEST').

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

相关内容

  • 没有找到相关文章

最新更新