ABAPのTRANSFER命令の使い方・仕組みを解説します。
TRANSFER命令はサーバー上のファイルへのレコード書き込み処理を行います。主にインターフェースファイルの作成、ダウンロードファイルの作成等で利用されます。
このページでは、TRANSFER命令の構文ルール・使い方・注意点をサンプルコード付きで解説します。
ABAPerであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
前提:OPEN DATASET命令
前提となる内容ですが、サーバー上に存在するファイルを読み込んだり書き込んだりするためには、あらかじめOPEN DATASET命令を用いてファイルを開いておく必要があります。
OPEN DATASET命令は、サーバー上のファイル操作を行う命令です。
OPEN DATASET (ファイル) FOR (アクセスタイプ) IN (格納タイプ).
OPEN DATASET FILE_PATH FOR INPUT IN TEXT MODE .
詳しい構文ルールや使い方は下記のページで解説しております。
今回解説するTRANSFER命令は、OPEN DATASET命令でオープンしたファイルに対してレコードを書き込む処理を行います。したがって、基本的にはOPEN DATASET命令とセットで用いる必要があるという点に注意しましょう。
TRANSFER命令
TRANSFER (レコード) TO (ファイル名).
TRANSFER命令は、(ファイル名)に指定したファイルに(レコード)の内容を書き込む処理を行います。
以下のように記述した場合、「sample.txt」には ”Hello World!” が書き込まれます。
DATA file TYPE STRING. file = '/usr/sap/sample.txt'. CONSTANTS AAA TYPE STRING VALUE 'Hello World!' TRANSFER AAA TO sample.txt.
ただし、単に1つの項目だけをファイルに書き込むような処理はあまりイメージがつかないと思いますのでより実践的な使い方で説明すると、以下のような形になります。
LOOP AT lT_sample INTO LS_sample. CONCATENATE LS_sample-AAA LS_sample-BBB LS_sample-CCC """"""""""""" LS_sample-ZZZ INTO LT_line SEPARATED BY SPACE. TRANSFER LT_line TO file. ENDLOOP.
内部テーブルに取得したレコードを1行1行書き込み、ファイルに内部テーブルの値を書き込むように使用します。
上記サンプルコード中で用いているLOOP命令/CONCATENATE命令の使い方が分からない、という方はこちらの記事をご覧ください。
TRANSFER命令:LENGTHオプション
TRANSFER (レコード) TO (ファイル名) LENGTH (項目長).
あまり利用頻度は高くありませんが、LENGTHオプションを利用することでファイルに書き込む長さを指定することができます。
TRANSFER命令:留意点
TRANSFER命令利用時には、必ずOPEN DATASET命令でファイルを開いておくようにしましょう。
場合によっては、OPEN DATASETを利用しなくてもTRANSFER命令によってファイルオープンも暗黙的に実行される場合がありますが、例外処理が走る可能性があるためそのようなコーディング方法は回避すべきです。
TRANSFER命令とOPEN DATASET命令は必ずセットで。可読性も安全性もあがります。
SAP / ABAPを1から学習したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!