外部システムとのデータ連携方法は色々あり、以前にSAPシステム間の連携に使える「IDOC」の設定方法を紹介した。
今回は、ファイル連携を行うときにはほぼ必ず使用するであろう「論理ファイル名」について解説する。
論理ファイル名の設定方法
はじめに:論理ファイル名とは
論理ファイル名とは、サーバー上のディレクトリ、およびファイルIDを保持しておくためのパラメータのことで、カスタマイズ(Tr:FILE)から定義する。
論理ファイル名はクライアント非依存の設定だ。(サーバの物理的なディレクトリを参照するので、クライアントというアプリケーション上の仕切りとは関係が無い)
どういうことかイメージしづらい場合は、具体的には下記のように想像頂きたい。
こういったものと同様にサーバ上のディレクトリ、ファイル名を変数として保持するのが論理ファイル名、とイメージすれば良い。
論理ファイル名の用途
外部システムとのデータ連携をファイルによって行う場合、サーバ上の所定位置に置いてあるファイルを読み込んだり、所定位置に所定の名前のファイルを書き出したりする。
ディレクトリやファイル名を保持する変数を定義しておけば、この「所定位置」をプログラム中にハードコーディングせずに済む。
使用例として、データファイルの出力や読込を行うABAPプログラムを作成するときに、画面上に「論理ファイル名」という項目を設けておく。プログラム実行の都度、画面指定された論理ファイル名を読み込んで、論理ファイル名に格納されているディレクトリに所定のファイル名で書き出しにいけばいい。
書き出し先を変えたりファイル名を変えたい場合、画面指定を変えるだけなので容易だ。
ファイル名も固定文字列に加え日時などを変数定義出来るので、ファイル名末尾にタイムスタンプを付与するなども出来る。
論理ファイル名の設定手順
まずTr:FILEを起動し、以下手順で設定していく
論理ファイルパス定義
論理ファイルパスでは以下を定義する。
・構文グループ
・物理パス
構文グループはSAPが走っているサーバのOSに応じて適切なものを選ぶ。
だいたいUNIXかWINDOWSだと思う。
物理パスは、先ほどの例で言えば【Server¥Users¥残業ペンギン¥KyuuyoMeisai¥<FILENAME>】として定義する。
この物理パスがサーバ上の特定ディレクトリを指し示しており、<FILENAME>はファイル名の変数だ。
ファイル名は次に解説する論理ファイル名で定義する。
論理ファイル名定義
論理ファイル名では以下を定義する。
・物理ファイル
・データ書式、アプリケーションエリア
・論理パス
項目「論理パス」には先ほど定義した論理パスのIDを設定する。
物理ファイルは、ファイル名を定義する。
例えば物理ファイル名に「給与明細.pdf」を定義したとする。
こうすることで、ファイル出力の際にこの論理ファイル名を使えば、以下のように所定位置に所定ファイルを作成できる。
変数定義
論理ファイル名の物理ファイルの項目には、実は以下のような変数を設定できる。
<CLIENT> SY-MANDTから取得したクライアントID
<YEAR> SY-DATUMの年
<MONTH> SY-DATUMの月
<DATE> SY-DATUMの日
<TIME> SY-UZEITの時刻
※沢山あるので一部のみ紹介。詳しくは実機F1ヘルプで。
この変数を使って、単に「給与明細.pdf」とするのではなく年月を入れた「2020年6月給与明細.pdf」としたい場合は、以下のように物理ファイルを定義する。
こうすることで年月が読み込まれる。ただしあくまでSY変数の中の数値になるので注意。
この変数を使って色々なファイル名が組めるはずだ。
その他:サーバ上のディレクトリの参照方法
サーバ上のディレクトリをSAP GUIのトランザクションから参照する場合、Tr:AL11から参照可能。
ただ、SAP GUIから見るより、別途ツールを使って参照する方が良い。
Tr:AL11からだとディレクトリを作成しづらかったり、ファイルをドラッグ&ドロップできないため。
より詳しく学びたい方へ(参考書、専門書のご紹介)
・ファーストステップABAP入門 (Espresso Tutorials)
ABAPを勉強したい人向けの入門書。めずらしく日本語で書かれており、図表付きで初学者の導入にはかなり良いカンジの参考書となっている。
・ABAP to the Future (3rd edition updated and expanded)
次世代のSAP動向を勉強したいのであれば、ABAP to the Future (3rd edition updated and expanded)もおススメできる。
これも英語だが、2025年問題(現2027年問題)以降のSAP業界を技術者として生きていくのであれば、押さえておくべき重要知識が詰まっている。