4

構造をインポートし、構造から内部テーブルを作成して、このテーブルを返すメソッドがあります。

エクスポートメソッドとして実装しましたが、戻りパラメーターとして実装したいと思います。アイデアの一部は、実行時まで渡される構造について何も知らないので、かなりの量のジェネリックを使用しているということです。ただし、「戻る」メソッドはジェネリックスが好きではありません。

method Parameters:
  Importing struct_data TYPE any 
  Returning table_data TYPE STANDARD TABLE 

method STRUCT_TO_TABLE_R.

  FIELD-SYMBOLS:
    <f_fs>    TYPE any,
    <table>   TYPE STANDARD TABLE .

  DO.

    ASSIGN COMPONENT sy-index OF STRUCTURE struct_data TO <f_fs>.

    IF NOT sy-subrc EQ 0.
      EXIT.
    ENDIF.

    APPEND <f_fs> TO <table>.

  ENDDO.

  table_data = <table>.

endmethod.

これを修正するには何を変更する必要がありますか?

4

2 に答える 2

17

適切な応答が遅れている可能性がありますが、数分前に同じ問題に直面しました。

内部テーブルを RETURNING パラメータとして送信するには、クラスで完全に型指定されたテーブルを定義する必要があります。クラスの public セクションのサンプル コードを次に示します。

PUBLIC SECTION.
    TYPES:
      type_table_A TYPE STANDARD TABLE OF T001, //<----- NOT FULLY SPECIFIED
      type_table_B TYPE STANDARD TABLE OF T001 WITH DEFAULT KEY. //<---- FULLY SPECIFIED

標準テーブルに関して:

TYPE_TABLE_A は、EXPORTING、IMPORTING、および CHANGING パラメータのパラメータとしてのみ使用できます。

TYPE_TABLE_B は、主に RETURNING など、メソッドのシグネチャで考えられるすべての種類のパラメーターで使用できます。

そのため、適切な方法として、完全に指定された標準テーブル型を宣言することを決定できます。

敬具、

セザール・シェック

于 2014-06-20T13:29:28.290 に答える