2

ローカル クラスを定義するプログラム ZPROG1_TEST がありますLCL_PROG1_HELPER

このクラスへの変数参照を定義したい 2 番目のプログラム ZPROG2_TEST があります。

私がこれを行う構文上の可能性はありませんか?

または、これは理論的には次のような RTTI クラスで実行可能CL_ABAP_CLASSDESCRでしょうか?


追加 なぜこれをしたいのかというと、印刷している ME32N ドキュメントが変更されたが保存されていないかどうかを知る必要があるカスタム フォーム ZMM_MEDRUCK があるからです調査する必要があるプロパティを持つ正確なオブジェクトを把握しましたが、それらの一部は設計時に などの共通インターフェイスとして定義されておりIF_SERIALIZABLE_MM、これらのオブジェクトが次のようになることがわかっているインスタンスを持つローカル クラスにそれらをキャストする必要があります。 、\FUNCTION-POOL=MEGUI\CLASS=LCL_APPLICATION のように。

もちろん、何も気にせずに動的メソッド呼び出しを試すこともできますが、ここにいるので、最初にこのことを尋ねようと思いました。

4

2 に答える 2

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').
于 2013-08-07T23:41:36.337 に答える
1

私の知る限り、これは不可能です。ローカル クラスに動的にアクセスするのは簡単ですが (比較的簡単です)、静的に参照することは、私の知る限りではありません。おそらく、メソッドを動的に呼び出す必要があります。

于 2013-08-07T11:21:19.340 に答える