5

ZCL_RM_SPREADSHEETMLという名前のクラスがあります。

[タイプ]タブには、可視性が「パブリック」のTY_STYLEというタイプがあり、直接タイプ入力で定義されます。

発信者コードで次のように宣言しようとすると、次のようになります。

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml-ty_style.

私は次のようになります:

The type "ZCL_RM_SPREADSHEETML" has no structure and therefore no
component called "TY_STYLE". .

ZCL_RM_SPREADSHEETMLはクラスであるため、これはある程度意味があります。また、ダブルクリックTY_STYLEしてもまったく何も起こりません。

それから私はティルダで次のことを試みました:

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml~ty_style.

私は次のものを手に入れました:

Type "ZCL_RM_SPREADSHEETML~TY_STYLE" is unknown

TY_STYLEをダブルクリックすると、TY_STYLEの定義にたどり着くので、近くにいる必要があります。前回同様の問題が発生したのは、プライベートメソッドにアクセスしていたためですが、タイプをパブリックとして明確にマークしました。

私が間違っていることについて何か考えはありますか?

編集

コメントごとにもやってみました

DATA : wa_blue_style TYPE ref to zcl_rm_spreadsheetml->ty_style. "and
DATA : wa_blue_style TYPE zcl_rm_spreadsheetml->ty_style. 

これは

Field "ZCL_RM_SPREADSHEETML" is unknown. It is neither in one of the
specified tables nor defined by a "DATA" statement.

これは私にこれを「クラス」の方法で試すというアイデアを与えました、

DATA : wa_blue_style TYPE zcl_rm_spreadsheetml=>ty_style.

これは動作します

4

2 に答える 2

7

適切なコンポーネントセレクターを使用する必要があります。

上位ユニットのコンポーネントをアドレス指定するために使用できる定義済みの文字。構造コンポーネントセレクター(-)、クラスコンポーネントセレクター(=>)、インターフェイスコンポーネントセレクター(~)、およびオブジェクトコンポーネントセレクター(->)があります。

この場合、クラスのタイプ(コンポーネント)にアクセスしているため、を使用する必要があります=>

于 2013-03-09T09:04:49.943 に答える
1

あなたはこれを意味しましたね?

report  zstructsob.

*&---------------------------------------------------------------------*
*&       Class MYCLASS
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
class myclass definition.
  public section.

    types: begin of mystruct, " ------------> The public type
      field1 type i,
      field2 type string,
    end of mystruct.

    methods print_data importing data type mystruct.

  private section.
    data mydata type mystruct.
endclass.               "MYCLASS

*&---------------------------------------------------------------------*
*&       Class (Implementation)  MYCLASS
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
class myclass implementation.
  method print_data.
    write:/ data-field1, data-field2.
  endmethod.

endclass.               "MYCLASS

start-of-selection.

data ztype type myclass=>mystruct. " ------------> The public type of the class
data zclass type ref to myclass.

create object zclass.

ztype-field1 = 1.
ztype-field2 = 'Field2'.

zclass->print_data( ztype ).
于 2013-03-11T16:34:14.033 に答える