サーバー上のファイルを読み込む命令―READ DATASET命令について解説します。
READ DATASET命令は、OPEN DATASET命令で開いたファイルの中身を1行1行読み込み指定した変数に格納する処理です。
このページでは、READ DATASET命令の使い方や注意点をサンプルコード付きでご説明します。
ABAPerであれば知らないと恥ずかしい基本知識です。是非最後までご覧ください。
前提:OPEN DATASET命令
前提となる内容ですが、サーバー上に存在するファイルを読み込んだり書き込んだりするためには、あらかじめOPEN DATASET命令を用いてファイルを開いておく必要があります。
OPEN DATASET命令は、サーバー上のファイル操作を行う命令です。
OPEN DATASET (ファイル) FOR (アクセスタイプ) IN (格納タイプ).
OPEN DATASET FILE_PATH FOR INPUT IN TEXT MODE .
詳しい構文ルールや使い方は下記のページで解説しております。
今回解説するREAD DATASET命令は、OPEN DATASET命令でオープンしたファイルに対してレコードを書き込む処理を行います。したがって、基本的にはOPEN DATASET命令とセットで用いる必要があるという点に注意しましょう。
READ DATASET命令
READ DATASET (ファイル名) INTO (変数).
READ DATASET命令は、(ファイル名)に指定したファイルからレコードを1行読み込み、(変数)にその内容を代入します。
(変数)に代入された値は、構造化されたデータではない(フラット)なので、タブやスペースなどを目印に文字分割等を行う必要があります。
READ DATASET命令を1度実行しただけでは、ファイルの1行しか読み込まれませんので、ファイルの内容をすべて読み込みたいような場合は以下のようにコーディングします。
* ファイルの内容を内部テーブルに格納 WHILE SY-SUBRC = 0. READ DATASET file INTO LS_file. IF SY-SUBRC = 0. APPEND LS_FILE TO LT_FILE. CLEAR LS_FILE. ELSE. EXIT. ENDIF. ENDDO.
READ DATASET命令を実行すると、システム項目「SY-SUBRC」は以下のように設定されます。
上記サンプルコードでは、SY-SUBRCをうまく利用しています。理解が進むよう追加でサンプルコードを載せておきます。
DO. READ DATASET file INTO LS_file. " 最終行まで読み込んだら処理を抜ける CASE SY-SUBRC. WHEN 0. APPEND LS_file TO LT_file. WHEN 4. EXIT. ENDCASE. ENDDO.
サンプルコードで用いられているIF文/CASE文・DO文/WHILE文については以下の記事で詳しく解説しております。
理解に自信がない方は合わせて学習しておくことをおすすめします。
「MAXIMUM LENGTH」オプション
READ DATASET (ファイル名) INTO (変数) MAXIMUM LENGTH (項目長).
MAXIMUM LENGTH を指定することでファイルから読み込む最大桁長を定義することができます。
ただし、読み込むレコードの最大桁超を定義しなくてはならない場合。
かなり複雑な処理となってしまうため、個人的にはあまりおすすめしないオプションの1つです。
(ACTUAL)LENGTHオプション
READ DATASET (ファイル名) INTO (変数) ACTUAL LENGTH (変数i).
LENGTHオプションを利用することで、(変数i)に読み込んだ文字数を代入することができます。
例えば、読み込み対象のファイルに思わぬ空白行がある場合にエラーハンドリングをかけたいような場合で利用することができます。
DATA LEN TYPE i. * ファイルの内容を内部テーブルに格納 WHILE SY-SUBRC = 0. READ DATASET file INTO LS_file LENGTH LEN. " 読み込んだレコードが0件の場合は処理を抜ける IF LEN = 0. EXIT. ENDIF. IF SY-SUBRC = 0. APPEND LS_FILE TO LT_FILE. CLEAR LS_FILE. ELSE. EXIT. ENDIF. ENDDO.
これでREAD DATASET命令の理解はOK!
SAP / ABAPを1から学習したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!