我有一个程序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。
我当然可以尝试动态的方法调用,而不关心任何事情,但是因为我在这里,我以为我先问这件事。
答案 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)
据我所知,这是不可能的。动态访问本地类很容易(相对容易),但静态地引用它 - 不是我所知道的。您可能需要动态调用这些方法。