外部OSコマンドとは?
外部コマンドとは、サーバ上で直接OSコマンド(もしくはバッチorシェル)を実行する仕組みのことで、SAP上からOSコマンド(LinuxやAIXなど)やバッチやシェルを動かすときに利用する機能です。
「サーバー上に配置されているファイル名称を取得したい」、「サーバー上のファイル名を変更したい」といった要件を実装する場合、外部コマンドを使用して実装可能です。
使用頻度は高くありませんが、ABAP側でどの部分まで機能実装できるかは理解しておいた方がよいと思います。
トランザクションコード(TCD:SM69)
SM69で事前に定義しておき、ABAPプログラムから呼び出す形で利用します。標準で既に作成済みの定義を使用して、呼び出す事も可能です。
使用例
例えば上記の「LIST_DB2DUMP」を使用する場合、コマンドプロンプトのdir命令を動作することが可能になります。
この外部OSコマンドを呼び出すことで、コマンドプロンプトのdir命令を使用してファイル属性情報を取得することが可能です。
CMDのDIR命令
DIR コマンドを使用することでディレクトリにあるファイルとサブディレクトリの一覧を表示することが可能。
上記を応用して、サーバー上に格納されたファイルの最新ファイル名称の取得ロジックを組む事もできます。標準に存在しない場合でも、外部OSコマンドを定義することで、使用することも可能です。
例えばren命令などは標準定義されていないので、名称変更をしたい場合には、新規作成でTCD:SM69から定義する必要があります。
CMDのREN命令
REN コマンドまたは RENAME コマンドを使用するとファイル名の変更を行うことが可能。
OSコマンド定義
コマンド
コマンド名は、特に制約なくどのような名称でも問題ありませんが、標準であらかじめ用意されているコマンドも存在するため、頭に「Z」を付与しておくのがお勧めです。
オペレーティングシステムの項目で、OSの種類を指定します。上の画像では「Linux」を指定していますが、他にUNIX系のサーバやWindowsなどを選択することができます。
OSコマンド
OSコマンド項目に外部コマンドを定義します。画像の例は、Linux上でファイル一覧を取得する「ls」コマンド定義です。
OSコマンドのパラメータ
何も設定せず、追加パラメータはABAPのプログラムから渡すようにするのが一般的ですが、OSコマンドのパラメータに、特定のディレクトリを指定してすると、そのディレクトリにあるファイル一覧を表示することができます。