SAP Knowledge Wiki
ABAP/ASSIGN
の編集
Top
/
ABAP
/
ASSIGN
-- 雛形とするページ --
(no template pages)
[[ABAP]]の命令の一つで、[[データオブジェクト>アドオン/データオブジェクト]]を[[フィールドシンボル>ABAP/FIELD-SYMBOLS]]に割り当てる命令。 * 概要 [#j4d77dd6] ** 用法 [#m1e61e8f] [[変数>アドオン/変数]]そのものでなく[[変数>アドオン/変数]]のメモリ上のアドレスを参照する取り扱いとする命令。 アドレス参照であり実態のある値そのものを取り扱わないため、パフォーマンスが向上する。 また、[[内部テーブル>ABAP/内部テーブル]]の更新を[[MODIFY>ABAP/MODIFY]]命令を書かずに実行できるなどコードの総量を削減する手段にもなるが、''逆に言えば更新の可能性がゼロでなくなる''とも言えるため留意すること。 ** サンプル [#p8e30ede] *** ASSIGN a TO b. [#o56d4e18] 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 [#kcf144da] ASSIGN COMPONENT L_LOOP_COUNTER OF STRUCTURE L_WA_KNA1 TO <F_FIELDS>. 構造のn番目の項目にアクセスする、という方法。 例えばI/Fファイルなどにおいて、月別の項目が1~12月まで並んでいる場合など、それぞれに対する処理をベタ書きすると個別のバグなども出るが、まとまりごとに同じ処理にすることで不具合の発生とコード総量の削減を狙うことができる。 *** ASSIGN dataref->* TO fs [#v90d4f05] [[CREATE DATA>ABAP/CREATE DATA]]命令と併用する形で、データ型を任意に定義しつつ命令を使いまわすことができる。 *** ASSIGN a INCREMENT n TO fs. [#le5f9c69] 使ったことがない。 * その他 [#lb3435f1] ASSIGNが失敗した場合に代入しようとすると[[ショートダンプ>SAPの共通用語/ショートダンプ]]が発生するため、[[例外処理>アドオン/例外処理]]はきっちりやること。 なお、必要に応じて[[UNASSIGN>ABAP/UNASSIGN]]命令で参照を切るか、まとまりの良い[[サブルーチン>アドオン/サブルーチン]]でのみ使用するなど、トレーサビリティが低下しないようケアすべき。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
タイムスタンプを変更しない
[[ABAP]]の命令の一つで、[[データオブジェクト>アドオン/データオブジェクト]]を[[フィールドシンボル>ABAP/FIELD-SYMBOLS]]に割り当てる命令。 * 概要 [#j4d77dd6] ** 用法 [#m1e61e8f] [[変数>アドオン/変数]]そのものでなく[[変数>アドオン/変数]]のメモリ上のアドレスを参照する取り扱いとする命令。 アドレス参照であり実態のある値そのものを取り扱わないため、パフォーマンスが向上する。 また、[[内部テーブル>ABAP/内部テーブル]]の更新を[[MODIFY>ABAP/MODIFY]]命令を書かずに実行できるなどコードの総量を削減する手段にもなるが、''逆に言えば更新の可能性がゼロでなくなる''とも言えるため留意すること。 ** サンプル [#p8e30ede] *** ASSIGN a TO b. [#o56d4e18] 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 [#kcf144da] ASSIGN COMPONENT L_LOOP_COUNTER OF STRUCTURE L_WA_KNA1 TO <F_FIELDS>. 構造のn番目の項目にアクセスする、という方法。 例えばI/Fファイルなどにおいて、月別の項目が1~12月まで並んでいる場合など、それぞれに対する処理をベタ書きすると個別のバグなども出るが、まとまりごとに同じ処理にすることで不具合の発生とコード総量の削減を狙うことができる。 *** ASSIGN dataref->* TO fs [#v90d4f05] [[CREATE DATA>ABAP/CREATE DATA]]命令と併用する形で、データ型を任意に定義しつつ命令を使いまわすことができる。 *** ASSIGN a INCREMENT n TO fs. [#le5f9c69] 使ったことがない。 * その他 [#lb3435f1] ASSIGNが失敗した場合に代入しようとすると[[ショートダンプ>SAPの共通用語/ショートダンプ]]が発生するため、[[例外処理>アドオン/例外処理]]はきっちりやること。 なお、必要に応じて[[UNASSIGN>ABAP/UNASSIGN]]命令で参照を切るか、まとまりの良い[[サブルーチン>アドオン/サブルーチン]]でのみ使用するなど、トレーサビリティが低下しないようケアすべき。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
テキスト整形のルールを表示する