【ABAP】CLOSE DATASET命令を1分で解説

ABAP

CLOSE DATASET命令の使い方を1分で解説します。

CLOSE DATASET (ファイル名).

構文は非常に簡単ですが、前提となるOPEN DATASET命令などの知識も必要となる命令です。

処理の内容的には非常に簡単ですが、いくつか注意点もありますので、このページで一歩深い知識まで頭に入れておくようにしましょう。

このページで学べる内容
  • 前提:OPEN DATASET命令
  • CLOSE DATASET命令の使い方
  • CLOSE DATASET命令の留意点

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 .

詳しい構文ルールや使い方は下記のページで解説しております。

今回解説するCLOSE DATASET命令は、OPEN DATASET命令でオープンしたファイルを閉じる処理を行います。したがって、基本的にはOPEN DATASET命令とセットで用いる必要があるという点に注意しましょう。

ここから、CLOSE DATASET命令の解説です。

CLOSE DATASET命令

CLOSE DATASET (ファイル名).

CLOSE DATASET命令は、開かれているサーバ上のファイルを閉じます。

OPEN DATASET命令でファイルを開かれてから、CLOSE DATASET命令でファイルを閉じるまでの間、対象のファイルは常に参照・読み取り・書き込み可能な状態で掴まれている状態で存在しています。

尚、ファイルが既に閉じられている場合やファイルが存在しない場合、本命令は無視されます。その際、SY-SUBRCの値は「0」がリターンされます。

サーバ上のファイルオープンから、ファイルの読み込み、ファイルクローズまでの一連のサンプルコードがこちらです。

file = '/usr/sap/sample.txt'.

* ファイルオープン「sample.txt」
OPEN DATASET file.

* ファイルの内容を内部テーブルに格納
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.

* ファイルを閉じる
CLOSE DATASET file.
IF SY-SUBRC <> 0.
  ASSERT 1 = 2.
ENDIF.

ちなみに、CLOSE DATASET命令を用いてファイルを閉じなくても、プログラム終了時にファイルは自動的に閉じられます

したがって、サンプルコード最後の4行を記述しなくてもエラーが発生する確率は高くありません。が、ABAPのお作法の1つとしてCLOSE DATASET命令は必ず明示するようにしましょう。

READ DATASET命令
READ DATASET (ファイル名) INTO (変数).

READ DATASET命令は、(ファイル名)に指定したファイルからレコードを1行読み込み、(変数)にその内容を代入します。

詳細を以下の記事で解説しておりますので、合わせて学習しておきましょう。

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

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

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

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

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

タイトルとURLをコピーしました