フィールドシンボル(FS)への構造のコンポーネント(COMP)の割当

構造化データオブジェクト struc については、以下の命令を使用して、

ASSIGN COMPONENT comp OF STRUCTURE struc TO <fs>.

    コンポーネントの 1 つである comp をフィールドシンボル <fs> に割り当てることができます。コンポーネント comp をリテラルまたは変数として指定することができます。comp が c 型であるか、コンポーネントとして内部テーブルを持たない構造である場合には、comp によってコンポーネントの名称が指定されます。comp が他の基本データ型を持つ場合には i 型へと変換され、comp によりコンポーネントの番号が指定されます。割当が成功すると sy-subrc に 0 が設定されます。失敗すると 4 が返されます。

    この命令は、構造化データオブジェクトのコンポーネントを動的にアドレス指定する際に特に重要です。フィールドシンボルに対してデータオブジェクトをジェネリックな方法で割り当てるか、キャスティングを使用するか、プロシージャのパラメータインタフェースにジェネリックな方法で受け渡す場合には、静的または動的にそのコンポーネントをアドレス指定することはできません。その代わりに上記の命令を使用しなければなりません。その場合には、コンポーネント名または索引番号を使用した間接的なアクセスが可能になります。

REPORT demo_field_symbols_stat_assign .

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) TYPE c VALUE 'COL3'.

FIELD-SYMBOLS: <f1> TYPE ANY, <f2> TYPE ANY, <f3> TYPE ANY.

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> に割り当てられます。ループの後で、コンポーネント col3 がその名称により指定され、<f3> に割り当てられます。<f1> のコンポーネントをアドレス指定するために使用できる唯一の手段が ASSIGN COMPONENT であることに注意してください。<f1>-col1 のような式は構文的に誤っています。“

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值