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

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


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

お名前: