ABAP/CREATE DATA のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ABAP/CREATE DATA へ行く。
- 1 (2014-06-26 (木) 11:02:35)
- 2 (2015-09-25 (金) 16:59:00)
データ型を作るABAP命令。
概要 †
データ型を作る。 ここに価値を見出すとしたら、汎用性しかない。
つまり、データ型には依存するものの同じような処理を行う場合に「ソースをコピペして一部だけ手直しする」という知性のかけらもない行為をしたくない場合に利用する。
つまり、コピペしまくって「5kのプログラム書いたよ!大変だったよ!」なんていう手合いには縁のない命令である。
オプション †
CREATE DATA xxx (データ型) †
用法 †
サンプル †
# TYPES :
# T_TABLE_ORFER TYPE TABLE OF VBAK.
# DATA :
# REF_ORDER TYPE REF TO T_TABLE_ORDER.
#
# CREATE DATA REF_ORDER.
#
# LOOP AT REF_ORDER->*.
# WRITE / REF_ORDER->*.
# ENDLOOP.
CREATE DATA xxx TYPE (ABAPデータ型) †
用法 †
DESCRIBEを併用するとええかも。
サンプル †
# DATA :
# L_DATA TYPE REF TO DATA.
#
# CREATE DATA L_DATA TYPE C LENGTH L_FIELD_LENGTH.
# CREATE DATA L_DATA TYPE P LENGTH L_FIELD_LENGTH DECIMALS L_DECIMAL_LENGTH.
CREATE DATA xxx TYPE (テーブル項目)、CREATE DATA xxx LIKE (データオブジェクト) †
用法 †
下記は、レンジテーブルへの動的セット例。
サンプル †
# FORM F_FUNC_SET_RANGE_TABLE TABLES E_RANGE
# USING I_SIGN TYPE ANY
# I_OPTION TYPE ANY
# I_LOW TYPE ANY
# I_HIGH TYPE ANY.
# DATA :
# L_DATA TYPE REF TO DATA,
# L_COUNTER TYPE I.
# FIELD-SYMBOLS :
# <F_RANGE> TYPE ANY,
# <F_FIELD> TYPE ANY.
#
# * レンジテーブルの型を取得し、構造へアサイン
# CREATE DATA L_DATA LIKE LINE OF E_RANGE.
# ASSIGN L_DATA->* TO <F_RANGE>.
#
# * 失敗時は抜ける
# IF ( SY-SUBRC <> 0 ).
# EXIT.
# ENDIF.
#
# * 構造の終わりまでループ
# DO.
# * カウンタのインクリメント
# L_COUNTER = L_COUNTER + 1.
# * 構造の項目を順次アサイン
# ASSIGN COMPONENT L_COUNTER OF STRUCTURE <F_RANGE> TO <F_FIELD>.
#
# * 項目の順序ごとに引数を転記
# CASE L_COUNTER.
# WHEN 1.
# <F_FIELD> = I_SIGN.
# WHEN 2.
# <F_FIELD> = I_OPTION.
# WHEN 3.
# <F_FIELD> = I_LOW.
# WHEN 4.
# <F_FIELD> = I_HIGH.
# * ※レンジテーブル以外が引数の場合も抜ける
# WHEN OTHERS.
# EXIT.
# ENDCASE.
# ENDDO.
# ENDFORM.
CREATE DATA TYPE HANDLE (Handler) †
用法 †
サンプル †
CREATE DATA xxx TYPE REF TO yyy †
用法 †
サンプル †
CREATE DATA xxx TYPE TABLE OF (Table), LIKE TABLE OF (Data Object) †
用法 †
内部テーブルを動的に作るとき。 SE16みたいなこともできて、汎用モジュールGUI_DOWNLOADと併用すれば落とせる。
サンプル †
# PARAMETERS :
# P_TABNAME TYPE DD02L-TABNAME.
#
# DATA :
# L_DATA TYPE REF TO DATA.
# FIELD-SYMBOLS :
# <F_INTERNAL_TABLE> TYPE ANY TABLE.
#
# CREATE DATA L_DATA TYPE STANDARD TABLE OF (P_TABNAME).
# ASSIGN L_DATA->* TO <F_INTERNAL_TABNAME>.
#
# SELECT *
# FROM P_TABNAME
# INTO TABLE <F_INTERNAL_TABNAME>.
CREATE DATA xxx AREA HANDLE yyy †
用法 †
サンプル †
コメントはありません。 Comments/ABAP/CREATE DATA