!--a11y-->
プログラムからの汎用モジュールの呼出 
以下の ABAP 命令を使用することで、ABAP プログラム内から汎用モジュールを呼び出すことができます。
CALL FUNCTION <function module>
[EXPORTING f1 =
a1.... fn = an]
[IMPORTING f1 =
a1.... fn = an]
[CHANGING f1 =
a1.... fn = an]
[TABLES f1 =
a1.... fn = an]
[EXCEPTIONS
e1 = r1.... en = rn
[ERROR_MESSAGE = rE]
[OTHERS = ro]].
汎用モジュール <function module> の名称をリテラルとして入力します 。 EXPORTING 、 IMPORTING 、 CHANGING 、および TABLES オプションに続く一覧で実際のパラメータを仮パラメータに明示的に割り当てることにより、パラメータを渡します。

パラメータは、<
仮パラメータ> = <
実際のパラメータ>
の形式で割り当てます。
オプション内で複数のパラメータを割り当てる場合は、パラメータをスペースで区切ります (
または改行によって区切ります)
。
キ EXPORTING オプションは、実際のパラメータ ai を仮入力パラメータ fi に渡します。仮パラメータは、汎用モジュールで import パラメータとして宣言されている必要があります。パラメータには任意のデータ型を使用することができます。参照項目を指定すると、そのパラメータがチェックされます。
キ IMPORTING オプションは、汎用モジュールの仮出力パラメータ fi を実際のパラメータ ai に渡します。仮パラメータは、汎用モジュールで export パラメータとして宣言されている必要があります。パラメータには任意のデータ型を使用することができます。
キ CHANGING オプションは、実際のパラメータ ai を仮入力パラメータ fi に渡します。汎用モジュールの処理が終わると、仮パラメータ fi の ( 変更) 値が実際のパラメータの値 ai に戻ります。仮パラメータは、汎用モジュールで CHANGING パラメータとして宣言されている必要があります。これらのパラメータにも任意のデータ型を使用することができます。
キ TABLES オプションにより、実際のパラメータと仮パラメータの間で内部テーブルが受け渡されます。内部テーブルは常に参照によって渡されます。このオプション内のパラメータは常に内部テーブルを参照する必要があります。
キ EXCEPTIONS オプションにより、汎用モジュールのエラーに対応することができます。例外は、汎用モジュールの処理中にエラーイベントに対応するための特殊パラメータとして用意されています。例外が発生すると、汎用モジュールの処理は終了します。たとえば、例外 ei がトリガされると、汎用モジュールの処理が停止され、プログラムには値が戻されません。呼出元プログラムは、値 ri をリターンコードとしてシステム項目 SY-SUBRC に割り当てることで、例外 ei を受け取ります。これはリターンコードとして機能します。ri は数字リテラルでなければなりません。ここで、呼出元プログラムでシステム項目を評価することができます。
EXCEPTIONS 一覧で ERROR_MESSAGE を指定することにより、汎用モジュールでのエラー処理を変更することができます。通常、メッセージは ( 汎用モジュール内の MESSAGE.....RAISING 命令または RAISE 命令を使用して) 例外処理でのみ呼び出されます。詳細については、汎用モジュールのコーディングの概要を参照してください。
ERROR_MESSAGE を使用すると、汎用モジュールで呼び出されるメッセージを、例外によって、明示的な処理なしで以下のように処理することができます。
クラス S 、I 、および W のメッセージは無視されます( ただし、プログラムをバックグラウンドで実行している場合はログに記録されます) 。
クラス E と A のメッセージは、ERROR_MESSAGE 例外がトリガされたかのように汎用モジュールを中断させます (SY-SUBRC の値が rE に設定されます) 。
EXCEPTION 一覧に OTHERS と入力すると、一覧表示されていないものを含むすべての例外に対応することができます。これは、デフォルトの例外として機能します。

例外の追加設定が必要ない場合は、異なる例外に同じ数値 ri を使用することができます。
ABAP エディタでパターン機能を使用して、プログラムから機能を呼び出すことができます。以下の手順を実行します。
...
1. コード内の機能を呼び出す位置にカーソルを合わせます。
2. パターン を選択します。
3.
表示されるダイアログボックスで、CALL FUNCTION
の前にある選択項目にフラグを設定します。

4. 汎用モジュールの名称を入力項目に入力します。
名称がわからない場合は、入力ヘルプキーを使って検索することができます。
5. 続行 を選択します。
インタフェースとともに汎用モジュールがコードに挿入されます。
6. 適切なパラメータを更新して、例外を処理します。

この例では、汎用モジュールは以下のように表示されます。

7.
汎用モジュールについての詳細情報が必要な場合は、情報アイコンを使用してこの情報を呼び出すことができます。ヘルプダイアログボックスが表示されます。
汎用モジュールを選択し、汎用モジュール名を入力します。続行を選択します。
汎用モジュールに対するインタフェース定義が表示されます。この画面から、その他の汎用モジュールエレメントをすべて照会することができます。

コメントエレメントとしてマークされていないパラメータには、プログラムで値を入力する必要があります。このために、固定値またはパラメータを使用することができます。
インポートインタフェースはコメントアウトされます。IMPORTING の前のアスタリスク (*) を削除し、汎用モジュールの必須データを変数に渡します。
機能が更新タスクまたはリモートホスト上で実行される場合は、CALL FUNCTION 命令で使用できるパラメータが他にもあります。
汎用モジュールが更新タスクで実行される場合、機能は非同期で処理されます。この呼出はすぐに実行されません。COMMIT WORK によってトリガされる次のデータベース更新によって処理されます。汎用モジュールをリモートホストで実行するということは、汎用モジュールを別の SAP システムまたは SAP 以外のシステム内から呼び出すことを意味します。
プログラムから汎用モジュールを呼び出す方法の追加情報については、
ABAP
ユーザガイド
の汎用モジュールのセクションを参照してください。