コンテンツフレーム起動

構造のコンポーネントのフィールドシンボルへの割当 文書を SAP ライブラリストラクチャに組み込む

構造化データオブジェクト <s> に対して、

   ASSIGN COMPONENT <comp> OF STRUCTURE <s> TO <FS>.

を使って、コンポーネントの 1 <comp> をフィールドシンボル <FS> に割り当てることができます。コンポーネント <comp> は、リテラルまたは変数として指定することができます。<comp> のデータ型が C の場合、または構造がコンポーネントとして内部テーブルを持たない場合は、コンポーネントの名前を指定します。<comp> が別の基本データ型の場合は、データ型 I に変換され、コンポーネントの数を指定します。割当が正常に行われると、SY-SUBRC 0 に設定されます。正常に行われなかった場合は、4 に設定されます。

この命令は、構造化データオブジェクトのコンポーネントを動的にアドレスする場合に特に重要です。ジェネリックデータ型またはキャストを使ってデータオブジェクトをフィールドシンボルに割り当てる場合、データオブジェクトをジェネリックデータ型 ( またはキャスト) を使ってプロシージャのパラメータインタフェースに渡す場合は、コンポーネントを静的にも動的にもアドレスすることができません。この場合は、上の命令を使用してください。上の命令を実行すると、コンポーネント名や索引番号を使った間接的なアクセスが可能になります。

 例

DATA: BEGIN OF LINE,
        COL1 TYPE I VALUE '11',
        COL2 TYPE I VALUE '22',
        COL3 TYPE I VALUE '33',
      END OF LINE.

DATA COMP(5) VALUE 'COL3'.

FIELD-SYMBOLS: <F1>, <F2>, <F3>.

ASSIGN LINE TO <F1>.
ASSIGN COMP TO <F2>.

DO 3 TIMES.
  ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F1> TO <F3>.
  WRITE <F3>.
ENDDO.

ASSIGN COMPONENT <F2> OF STRUCTURE <F1> TO <F3>.
WRITE / <F3>.

出力は次のようになります。

11         22         33

33

フィールドシンボル <F1> は構造 LINE を、<F2> は項目 COMP を指しています。DO ループ では、LINE のコンポーネントは番号で指定され、1 つずつ <F3> に割り当てられます。ループ後、LINE のコンポーネント COL3 は、名前で指定され、<F3> に割り当てられます。ASSIGN COMPONENT が、<F1> のコンポーネントをアドレスする唯一の方法です。<F1>-COL1 といったデータ型は、正しい構文ではありません。

 

 

 

 

 

コンテンツフレーム終了