【SAP】外部コマンドの実行方法を3分で解説―SM69

ABAP

外部コマンドとは、その名の通りSAP上からOSコマンド(LinuxやAIXなど)やバッチやシェルを動かすときに利用る機能です。

例えば、サーバー上に配置されているファイル名称を取得したい!(Linuxのlsコマンド)といった場合や、ABAPからFTP連携できる仕組みを実現したい!といった場合に外部コマンドが活躍します。

ここでは、外部コマンドの仕組みを初心者向けに1から分かりやすく解説し、ABAPプログラミングのサンプルまでをご紹介します。

このページで学べる内容
  • 外部コマンドとは?
    • SM69―外部コマンドの登録
  • ABAPからの呼び出し方法
  • 外部コマンドを利用したサンプルプログラム

ちょっとニッチな機能ですが、これを知っていればABAPerとしての幅が広がる便利な知識です。

是非最後までご覧ください。

スポンサーリンク

外部コマンドとは?

外部コマンドとは、その名の通りサーバ上で直接OSコマンド(もしくはバッチorシェル)を実行する仕組みのこと。

トランザクションコード:SM69で事前に定義しておき、ABAPプログラムから呼び出す形で利用します。

SM69,外部コマンド,外部OSコマンド

SAPはあくまでもソフトウェア製品の1つなので、あくまでも何かしらのサーバー上に乗っかっている状態。このサーバーに対して直接コマンドを受け渡す唯一の手段は外部コマンドです。

SM69―外部コマンドの登録方法

外部コマンドの事前定義はトランザクションコード:SM69から実行します。ここでは、外部コマンドの定義方法を必要最低限の項目に絞って解説。

外部コマンドというと何か難しいように感じますが、決して難しくはありませんので1個1個ゆっくり確認していきましょう。

コマンド定義

まずはじめにコマンド名を定義します。コマンド名は、特に制約なくどのような名称でも問題ありません。標準であらかじめ用意されているコマンドも存在するため、頭に「Z」を付与しておくのがお勧めです。

オペレーティングシステムの項目で、OSの種類を指定します。上の画像では「Linux」を指定していますが、他にUNIX系のサーバやWindowsなどを選択することができます。

オペレーティングシステムの選択

オペレーティングシステム項目の選択は、入力ミス防止の観点から検索ヘルプ経由の入力しか認められていません。

なお、ここで何も選択しないことも可能です。その場合、SAPは自動的に対象のオペレーティングシステムを選定する仕組みです。ただし、この自動選定には限界があるため、動作環境が確定している場合は明示的に対象のOSを指定するのがおすすめです。

OSコマンド定義

OSコマンド項目に外部コマンドを定義します。画像の例は、Linux上でファイル一覧を取得する「ls」コマンド定義です。

OSコマンドのパラメータに、例えば特定のディレクトリを指定しておけばそのディレクトリにあるファイル一覧を表示することができます。

OSコマンドのパラメータ

あえて何も設定せず、追加パラメータはABAPのプログラムから渡すようにするのが一般的です。

実際のコーディング方法はページ後半で。

これで、外部コマンド定義は完了。SM69の画面上で実行ボタンを押せば実際に外部コマンドをサーバー上に渡すことが可能で、結果も確認することが可能です。

ABAPプログラムからの外部コマンド実行

ここからはSM69で定義した外部コマンドをプログラム上で実行する方法を解説します。

SXPG_CALL_SYSTEM

外部コマンドの実行は、SAP標準の汎用モジュール「SXPG_CALL_SYSTEM」を利用します。

汎用モジュール「SXPG_CALL_SYSTEM」のサンプルプログラムはこちら。

  CALL FUNCTION 'SXPG_CALL_SYSTEM'
    EXPORTING
      COMMANDNAME                    = 'ZLS'
      ADDITIONAL_PARAMETERS          = '/test/test/test/'
    IMPORTING
      STATUS                         = LV_STATUS
      EXITCODE                       = LV_EXITCODE
    TABLES
      EXEC_PROTOCOL                  = LT_TBL
    EXCEPTIONS
      NO_PERMISSION                  = 1
      COMMAND_NOT_FOUND              = 2
      PARAMETERS_TOO_LONG            = 3
      SECURITY_RISK                  = 4
      WRONG_CHECK_CALL_INTERFACE     = 5
      PROGRAM_START_ERROR            = 6
      PROGRAM_TERMINATION_ERROR      = 7
      X_ERROR                        = 8
      PARAMETER_EXPECTED             = 9
      TOO_MANY_PARAMETERS            = 10
      ILLEGAL_COMMAND                = 11
      OTHERS                         = 12.
Exportパラメータ説明
COMMANDNAME外部コマンド名称(SM69で定義したコマンド名)
ADDITIONAL_PARAMETERS外部コマンドへ渡すパラメータ
Importパラメータ説明
STATUS外部コマンドが正常に実行できたかどうか?
EXITCODE外部コマンドから返却されるリターンコード
Tablesパラメータ説明
EXEC_PROTOCOL外部コマンドの出力結果

たったこれだけで、SAPにおける外部コマンドの利用はOKです。

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

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

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

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

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

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