【ABAP】TRANSFER命令を1分で解説(ファイルへの書き込み)

ABAP

ABAPのTRANSFER命令の使い方・仕組みを解説します。

TRANSFER命令はサーバー上のファイルへのレコード書き込み処理を行います。主にインターフェースファイルの作成、ダウンロードファイルの作成等で利用されます。

このページでは、TRANSFER命令の構文ルール・使い方・注意点をサンプルコード付きで解説します。

このページで学べる内容
  • 前提:OPEN DATASET命令(ファイルオープン)
  • TRANSFER命令の使い方
    • LENGTHオプション
  • TRANSFER命令の注意点

ABAPerであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

前提:OPEN DATASET命令

OPEN DATASET命令を理解している方は本章は読み飛ばしていただいてOKです。

前提となる内容ですが、サーバー上に存在するファイルを読み込んだり書き込んだりするためには、あらかじめOPEN DATASET命令を用いてファイルを開いておく必要があります。

OPEN DATASET命令とは?

OPEN DATASET命令は、サーバー上のファイル操作を行う命令です。

OPEN DATASET (ファイル) FOR (アクセスタイプ) IN (格納タイプ).
OPEN DATASET命令の基本
  • 開くファイルを指定
  • アクセスタイプの指定(読み取りモード?上書きモード?)
  • 格納タイプの指定(バイナリで開く?テキストで開く?)
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行書き込み、ファイルに内部テーブルの値を書き込むように使用します。

TRANSFER命令:LENGTHオプション

TRANSFER (レコード) TO (ファイル名) LENGTH (項目長).

あまり利用頻度は高くありませんが、LENGTHオプションを利用することでファイルに書き込む長さを指定することができます。

TRANSFER命令:留意点

TRANSFER命令利用時には、必ずOPEN DATASET命令でファイルを開いておくようにしましょう。

場合によっては、OPEN DATASETを利用しなくてもTRANSFER命令によってファイルオープンも暗黙的に実行される場合がありますが、例外処理が走る可能性があるためそのようなコーディング方法は回避すべきです。

TRANSFER命令とOPEN DATASET命令は必ずセットで。可読性も安全性もあがります。

SAP / ABAPを1から学習したい方は

SAP / ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。

特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。

ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。

是非、一度ご覧になってみてください。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    アウトプットは「最強のインプット」である!
  2. 備忘:忘れたとしても後から見返せるように。
    未来の自分への「お手紙」を書いています。
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    あなたの知識は誰かにとっての「価値ある情報」です。

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました