SAPの必須知識 汎用モジュール「CALL FUNCTION」の基礎知識
INDEX LINK
はじめに
汎用モジュールは、SAP ERP内の様々なプログラムに対応できるよう設計されたモジュールのことを指します。
汎用性と再利用性が高く、開発者は汎用モジュールを活用することで、コードの重複を避け、開発時間を短縮し、全体的な開発コストを削減できます。
ここでは、ABAPerの必須知識「汎用モジュール」の基礎知識を解説します。
1.汎用モジュールとは?
汎用モジュールとは、SAP ERP内において「再利用可能」であり、なおかつ「汎用性」を持ったプログラムの部品です。
いわゆるサブルーチンのような形式なのですが、サブルーチンとは明確に異なります。(詳細は後述します)
あらかじめ親(呼び出し元)となるプログラムを用意し、そこから任意のデータを渡しつつ呼び出して使うのが一般的です。
「事前に定義し、親プログラムの中で呼び出す」という点ではサブルーチンと全く同じですが、呼び出すプログラムが固定されていないという点が大きな違いですね。
サブルーチン…定義したプログラム内でのみ利用可能
汎用モジュール…SAP内に存在するプログラムであれば、どこでも利用可能
さらに、サブルーチンはすべての項目や要素を自分で定義する必要があります。
一方で汎用モジュールは、SAPが標準で用意したツールを使って定義を簡略化できるというメリットがあります。
したがって、「データとして何を入れ」「何を吐き出し」「どこからデータを調達するか」さえ理解できていれば、それなりに形になってしまうのです。
1-1.汎用モジュールとサブルーチンの使い分け
次に、サブルーチンと汎用モジュールの使い分けについて確認しておきましょう。
簡単にまとめると、以下のように使い分けます。
・サブルーチン…単体のプログラム内の処理を構造化する
・汎用モジュール…複数のプログラムの処理を構造化(共通化)する
ほかにも様々な違いがあるのですが、最もわかりやすいのは上記の使い分けですね。
ただし、プロジェクトによってはサブルーチンをすべて汎用モジュールとして定義してしまう場合もあります。
同じ処理を実装するにしても、「再利用性」と「汎用性」を確保しておいたほうが、後々の開発工数を減らせる可能性があるからです。
このあたりはプロジェクトの性質や開発チームの方針によりますので、随時確認しておきましょう。
1-2.汎用モジュールの実装方法
では実際に、汎用モジュールを利用する手順を見ていきましょう。
汎用モジュールは、自分で「定義」と「呼び出し」を行うことができれば、簡単に実装できます。
汎用モジュールの実装方法は以下の3ステップで行います。
ステップ1:汎用グループへの登録
ステップ2:汎用モジュールの登録
ステップ3:IMPORT/EXPORTの定義・ロジックの実装
順にみていきましょう。
・汎用グループへの登録
汎用グループとは、汎用モジュールを任意の基準でまとめたグループです。
汎用モジュールがファイルならば、汎用グループはフォルダですね。
例えば、経費精算に関する汎用グループがあるとすると、その中に「出張用汎用モジュール」「日当計算汎用モジュール」「交通費精算汎用モジュール」などがまとまっているイメージになります。
汎用モジュールを新しく登録する場合は、既存の汎用グループに登録するか、新たな汎用グループを登録しておかなくてはなりません。
汎用グループへの登録は、トランザクションコード「SE37」で行います。
SE37の画面から、汎用グループ名と内容説明を記入し、保存を押せば完了です。
・汎用モジュールの登録
汎用グループの登録が完了したら、汎用モジュールを登録しましょう。
SE37の画面から、先ほど登録した汎用グループに紐づける形で汎用モジュールを登録します。
汎用モジュールの名称については、汎用グループで共通化されているものを使用するのが一般的です。
開発チームごとに設けられている開発標準などに記載がないかをチェックしましょう。
次に、インプットデータ・アウトプットデータを指定します。
SE37の「汎用モジュールビルダ」のインポートおよびエクスポートのタブを埋めていきます。
汎用モジュールのIMPORTINGとEXPORTINGは、サブルーチンで言えばUSING,CHANGINGに相当するものと考えれば良いでしょう。
タブの中身を埋めたら、実際の汎用モジュールのロジックを記入していきます。
これは「ソースコードタブ」で実装可能です。
コーディングに関する詳細は割愛しますが、この3つのステップは全く難しくないので、初心者でも画面に従えば簡単に実装できるはずです。
2.汎用モジュールの呼び出し
作成した汎用モジュールは、命令「CALL FUNCTION」で呼び出し可能です。
書式:
CALL FUNCTION (汎用モジュール名)
EXPORTING
IMPORTING
TABLES
入出力と使用するテーブルを指定すれば動作するので、とてもシンプルですね。
2-1.汎用モジュールの動かし方
汎用モジュールは単体で動かすことができず、「呼び出し元のプログラム」が必要です。
なのでテスト用のアドオンプログラムを用意するか、SAP標準機能の「汎用モジュールテスト」を用意しましょう。
ここでは汎用モジュールテストでの動作確認方法を紹介します。
・SE37を実行し、画面上で「F8」を押下
・インポートパラメータを手動で入力
・実行ボタンを押下
たったこれだけですが、しっかりと実装されていればエクスポートパラメータに任意の値が出力されます。
2-2.テストの入力作業を効率化するコツ
上の例を見てもわかるように、SE37からのF8実行の場合、インポートパラメータを手動で入力する手間があります。
インタフェースプログラムの場合、インポートパラメータは膨大な量になるので、毎回手動入力するのは面倒です。
ミスの温床になりますし。
そこでテスト画面上部にある「テストデータ一覧」でデータを保存してしまいましょう。
テストデータ一覧を押下すると、テストデータに名前を付けたうえでパラメータ情報の保存が可能です。
数十個におよぶインポートパラメータを何パターンもテストするような場合には、この「テストデータ一覧からの保存」が便利ですね。
まとめ
今回は汎用モジュールの実装方法と、呼び出し命令「CALL FUNCTION」について解説しました。
ABAPerとしては非常に入門的な内容ですが、頻繁に使用する知識でもあります。
汎用モジュールを使いこなせるようになると、開発効率がかなり上昇します。
また、汎用モジュール自体を組み合わせてサービス化しているベンダーも多いので、極めて行くとかなり強力な武器になります。
基礎知識と侮ることなく、しっかり使いこなせるようにしておきましょう。