トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/CREATE DATA のバックアップ(No.2)


データ型を作る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

お名前: