ローカルファイル

25.1 ローカルファイル

1. ローカルファイル

  • ローカルファイルとは
  • ローカルファイル操作
  • [ファイルを開く]ダイアログ(FILE OPEN DIALOG)
  • [ファイルを開く]ダイアログ(TMP_GUI_FILE_OPEN_DIALOG)
  • ファイルのアップロード(メソッドのGUI_UPLOAD)
  • ファイルのアップロード(汎用モジュールのGUI_UPLOAD)
  • [ファイルの保存]ダイアログ(FILE SAVE DIALOG)
  • [ファイルの保存]ダイアログ(GUI_FILE SAVE DIALOG)
  • ファイルダウンロード(メソッドのGUI_DOWNLOAD)
  • ファイルダウンロード(汎用モジュールのGUI_DOWNLOAD)

ローカルファイルとは

PCに保存されているファイルのことをローカルファイルと呼びます。
ここではローカルファイルの書き込みや読み込みを行うファイル操作について説明します。

ローカルファイル操作

他システムとデータのやり取りをするために、他システムから送信されたデータをSAPに取り込む際にデータをアップロードしたり、SAPからデータを送信するためにダウンロードすることがあります。
ファイル操作で使用するファイル形式として、項目と項目の間にタブ文字を挿入したテキストであるTSV形式、「,」(カンマ)で区切るCSV形式、区切り文字を使用せず《決まった位置に隙間なくデータを配置していく固定長形式があります。

ローカルファイル操作をする場合、クラスのCL_GUI_FRONTEND_SERVICESを使用します。
使用頻度が高いファイルの照会や、対応する汎用モジュールも存在します。

「ファイルを開く」ダイアログ(FILE OPEN DIALOG)

メソッドのFILE OPEN DIALOG を使用すると、 [ファイルを開く]ダイアログを表示することができます。汎用モジュールのように、テスト、実行も可能です。

[ファイルを開く]ダイアログ(FILE OPEN DIALOG)

1REPORT ZTEST_PROGRAM_FILE_OP_DAIALOG.
2 
3* ローカル変数定義
4  DATA:
5        LW_RC TYPE I,
6        LTD_FILETABLE TYPE FILETABLE.
7 
8CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
9    EXPORTING
10      WINDOW_TITLE        = 'TEST TITLE'
11      FILE_FILTER         = '.TEXT'
12      INITIAL_DIRECTORY   = 'C:\'
13    CHANGING
14      FILE_TABLE          = LTD_FILETABLE
15      RC                  = LW_RC.

「ファイルを開く」ダイアログ(TMP_GUI_FILE_OPEN_DIALOG)

汎用モジュールのTMP_GUI_FILE_OPEN_DIALOGでも、 [ファイルを開く]ダイアログを表示することができます。

[ファイルを開く]ダイアログ(TMP_GUI_FILE_OPEN_DIALOG)

1REPORT ZTEST_PROGRAM_FILE_OP_DAIALOG2.
2* ローカル変数定義
3  DATA:
4        LW_RC TYPE I,
5        LTD_FILETABLE TYPE FILETABLE.
6 
7CALL FUNCTION 'TMP_GUI_FILE_OPEN_DIALOG'
8    EXPORTING
9      WINDOW_TITLE         = 'TEST TITLE'
10      FILE_FILTER          = '.TEXT'
11      INIT_DIRECTORY       = 'C:\'
12    IMPORTING
13      RC                   = LW_RC
14    TABLES
15      FILE_TABLE           = LTD_FILETABLE.

ファイルのアップロード(メソッドのGUI_UPLOAD)

メソッドのGUI_UPLOADを使用すると、指定したファイルパスからローカルファイルをアップロードし、内部テーブルに格納できます。

ファイルアップロード

1REPORT ZTEST_PROGRAM_FILE_UPLOAD2.
2TYPES: BEGIN OF T_FILE,
3         VAL1(10) TYPE C,
4         VAL2(10) TYPE C,
5         VAL3(10) TYPE C,
6       END OF T_FILE.
7DATA: IT_FILE TYPE TABLE OF T_FILE. " 内部テーブル
8DATA: ST_FILE TYPE T_FILE.                " データ格納用
9DATA: W_FILE TYPE STRING.
10*ファイルパスを指定(選択画面上でユーザーが指定できるようにする方が良い)
11W_FILE = 'C:\User\kanda-it\TEST.txt’.
12CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
13EXPORTING
14  FILENAME  = W_FILE
15  FILETYPE  = 'ASC'
16  HAS_FIELD_SEPARATOR = 'X'
17CHANGING
18 DATA_TAB = IT_FILE
19EXCEPTIONS
20 FILE_OPEN_ERROR = 1
21 FILE_READ_ERROR = 2
22 OTHERS = 3.
23LOOP AT IT_FILE INTO ST_FILE.
24  WRITE: / ST_FILE-VAL1.
25ENDLOOP.
26 
27MESSAGE S001(ZTEST2021).

出力結果

内部テーブルにアップロードした内容

アップロードする内容

ファイルのアップロード(汎用モジュールのGUI_UPLOAD)

汎用モジュールのGUI_UPLOADでも同様にできます。

ファイルアップロード

1REPORT ZTEST_PROGRAM_FILE_UPLOAD.
2* 入力レイアウト
3TYPES: BEGIN OF T_FILE,
4         VAL1(10) TYPE C,
5         VAL2(10) TYPE C,
6         VAL3(10) TYPE C,
7       END OF T_FILE.
8DATA: IT_FILE TYPE TABLE OF T_FILE. " 内部テーブル
9DATA: ST_FILE TYPE T_FILE.               " データ格納用
10DATA: W_FILE TYPE STRING.
11 
12*ファイルパスを指定(選択画面上でユーザーが指定できるようにする方が良い)
13W_FILE = 'C:\Users\kanda-it\TEST.txt'.
14 
15CALL FUNCTION 'GUI_UPLOAD'
16  EXPORTING
17    FILENAME                = W_FILE        " 入力ファイル名
18    FILETYPE                = 'ASC'         " ファイルタイプ
19    HAS_FIELD_SEPARATOR     = 'X'           " セパレータ(TAB)
20  TABLES
21    DATA_TAB                = IT_FILE.      " 内部テーブル
22 
23LOOP AT IT_FILE INTO ST_FILE.
24  WRITE: / ST_FILE-VAL1.
25ENDLOOP.
26 
27MESSAGE S001(ZTEST2021).

出力結果

内部テーブルにアップロードした内容

アップロードする内容

[ファイルの保存]ダイアログ(FILE SAVE DIALOG)

メソッドのFILE SAVE DIALOGを使用すると、[ファイル保存]ダイア ログを表示することができます。

[ファイルの保存]ダイアログ

1REPORT ZTEST_PROGRAM_FILE_SAVE_DIALOG.
2  DATA:
3        LW_RC TYPE I,
4        LTD_FILETABLE TYPE FILETABLE.
5  DATA:
6        ST_FILENAME TYPE STRING,
7        ST_FULLPATH TYPE STRING,
8        ST_PATH TYPE STRING.
9CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
10  EXPORTING
11    WINDOW_TITLE = '保存ダイアログ'
12    DEFAULT_FILE_NAME = 'デフォルトファイル名'
13  CHANGING
14    FILENAME = ST_FILENAME
15    FULLPATH = ST_FULLPATH
16    PATH        = ST_PATH
17  EXCEPTIONS
18   CNTL_ERROR           = 1
19    ERROR_NO_GUI         = 2
20    NOT_SUPPORTED_BY_GUI = 3
21    OTHERS               = 4.
22 
23MESSAGE S001(ZTEST2021).

出力結果

[ファイルの保存]ダイアログ(GUI_FILE_SAVE_DIALOG)

汎用モジュール GUI_FILE_SAVE_DIALOGでも同様です。

[ファイルの保存]ダイアログ

1REPORT ZTEST_PROGRAM_FILE_SAVE_DLOG2.
2* ローカル変数定義
3  DATA:
4        LW_RC TYPE I,
5        LTD_FILETABLE TYPE FILETABLE.
6  DATA:
7        ST_FILENAME TYPE STRING,
8        ST_FULLPATH TYPE STRING,
9        ST_PATH TYPE STRING.
10 
11CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'
12  EXPORTING
13    WINDOW_TITLE = '保存ダイアログ'
14    DEFAULT_FILE_NAME = 'デフォルトファイル名'
15  IMPORTING
16    FILENAME  = ST_FILENAME
17    FULLPATH = ST_FULLPATH
18    PATH        = ST_PATH
19  EXCEPTIONS
20   CNTL_ERROR           = 1
21    ERROR_NO_GUI         = 2
22    NOT_SUPPORTED_BY_GUI = 3
23    OTHERS               = 4.
24 
25MESSAGE S001(ZTEST2021).

出力結果

ファイルダウンロード(メソッドのGUI_DOWNLOAD)

メソッドのGUI_DOWNLOADを使用すると、内部テーブルのデータを指定した
ファイルパスのローカルファイルにダウンロードすることができます。

ファイルダウンロード

1REPORT ZTEST_PROGRAM_FILE_DOWNLOAD2.
2“ 出力レイアウト
3TYPES: BEGIN OF T_FILE,
4         VAL1(10) TYPE C,
5         VAL2(10) TYPE C,
6         VAL3(10) TYPE C,
7       END OF T_FILE.
8 
9DATA: IT_FILE TYPE TABLE OF T_FILE, ” 内部テーブル
10      WA_FILE TYPE T_FILE.
11DATA: W_FILE TYPE STRING.
12 
13* テスト用にデータを一行だけ格納
14WA_FILE-VAL1 = ‘1’.
15WA_FILE-VAL2 = ‘2’.
16WA_FILE-VAL3 = ‘3’.
17APPEND WA_FILE TO IT_FILE.
18 
19*ファイルパスを指定(選択画面上でユーザーが指定できるようにする方が良い)
20W_FILE = 'C:\Users\kanda-it\TESTDOWNLOAD.txt'.
21 
22CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
23  EXPORTING
24    FILENAME              = W_FILE  " 出力ファイル名
25    FILETYPE              = 'ASC'   " ファイルタイプ
26    WRITE_FIELD_SEPARATOR = 'X'     " タブ区切りで出力
27  CHANGING
28    DATA_TAB              = IT_FILE. " 内部テーブル
29 
30LOOP AT IT_FILE INTO WA_FILE.
31  WRITE: / WA_FILE-VAL1, WA_FILE-VAL2, WA_FILE-VAL3.
32ENDLOOP.
33 
34MESSAGE S001(ZTEST2021).

出力結果

ファイルダウンロード(汎用モジュールのGUI_DOWNLOAD)

汎用モジュールのGUI_DOWNLOADでも同様にできます。

ファイルダウンロード

1REPORT ZTEST_PROGRAM_FILE_DOWNLOAD.
2“ 出力レイアウト
3TYPES: BEGIN OF T_FILE,
4         VAL1(10) TYPE C,
5         VAL2(10) TYPE C,
6         VAL3(10) TYPE C,
7       END OF T_FILE.
8 
9DATA: IT_FILE TYPE TABLE OF T_FILE, ” 内部テーブル
10      WA_FILE TYPE T_FILE.
11DATA: W_FILE TYPE STRING.
12 
13* テスト用にデータを一行だけ格納
14WA_FILE-VAL1 = ‘1’.
15WA_FILE-VAL2 = ‘2’.
16WA_FILE-VAL3 = ‘3’.
17APPEND WA_FILE TO IT_FILE.
18*ファイルパスを指定(選択画面上でユーザーが指定できるようにする方が良い)
19W_FILE = 'C:\Users\kanda-it\TESTDOWNLOAD.txt'.
20 
21CALL FUNCTION 'GUI_DOWNLOAD'
22  EXPORTING
23    FILENAME              = W_FILE  " 出力ファイル名
24    FILETYPE              = 'ASC'   " ファイルタイプ
25    WRITE_FIELD_SEPARATOR = 'X'     " タブ区切りで出力
26  TABLES
27    DATA_TAB              = IT_FILE. " 内部テーブル
28 
29LOOP AT IT_FILE INTO WA_FILE.
30  WRITE: / WA_FILE-VAL1, WA_FILE-VAL2, WA_FILE-VAL3.
31ENDLOOP.
32 
33MESSAGE S001(ZTEST2021).

出力結果


NEXT>> 25.2 サーバーファイル

f