ABAP/ASSIGN
Last-modified: 2016-01-08 (金) 12:34:52 (3024d)
ABAPの命令の一つで、データオブジェクトをフィールドシンボル?に割り当てる命令。
概要 †
用法 †
変数そのものでなく変数のメモリ上のアドレスを参照する取り扱いとする命令。
アドレス参照であり実態のある値そのものを取り扱わないため、パフォーマンスが向上する。
また、内部テーブルの更新をMODIFY?命令を書かずに実行できるなどコードの総量を削減する手段にもなるが、逆に言えば更新の可能性がゼロでなくなるとも言えるため留意すること。
サンプル †
ASSIGN a TO b. †
ASSIGN a TO b.
最もシンプルな使い方。
型の取り扱いにより、下記のオプションもあり。
ASSIGN a TO b CASTING TYPE C ASSIGN a TO b CASTING TYPE P DECIMALS 2 ASSIGN a TO b TYPE C ASSIGN a TO b RANGE wa
なお、
a = 'L_WA_HEADER-BUKRS'. ASSIGN (a) TO b.
という書き方をすることによって、参照元を動的に指定することもできる。
ASSIGN COMPONENT index OF STRUCTURE wa TO fs †
ASSIGN COMPONENT L_LOOP_COUNTER OF STRUCTURE L_WA_KNA1 TO <F_FIELDS>.
構造のn番目の項目にアクセスする、という方法。
例えばI/Fファイルなどにおいて、月別の項目が1~12月まで並んでいる場合など、それぞれに対する処理をベタ書きすると個別のバグなども出るが、まとまりごとに同じ処理にすることで不具合の発生とコード総量の削減を狙うことができる。
ASSIGN dataref->* TO fs †
CREATE DATA命令と併用する形で、データ型を任意に定義しつつ命令を使いまわすことができる。
ASSIGN a INCREMENT n TO fs. †
使ったことがない。
その他 †
ASSIGNが失敗した場合に代入しようとするとショートダンプが発生するため、例外処理はきっちりやること。
なお、必要に応じてUNASSIGN命令で参照を切るか、まとまりの良いサブルーチンでのみ使用するなど、トレーサビリティが低下しないようケアすべき。
【スポンサードリンク】
コメントはありません。 Comments/ABAP/ASSIGN?