!--a11y-->

システムにより、汎用グループとその汎用モジュールに対するオブジェクトの構成が事前に定義されています。汎用グループを登録すると、ワークベンチによりメインプログラム、グローバルデータ、およびソースコードが自動的に生成されます。書式
SAPL<fgrp> を使って、 メインプログラムの名前が自動的に設定されます。 <fgrp> 変数は、汎用グループの名前です。汎用グループ内の連続する汎用モジュールごとに、ワークベンチはインクルードファイルを自動的に登録します。汎用モジュールビルダの第一画面でソースコードを選択することで、このインクルードファイルを表示することができます。書式 L<functgrp> U<nn> を使って、このインクルードファイルの名前が自動的に設定されます。たとえば、汎用グループ FGRP の最初の汎用モジュールは、インクルードファイル LFGRPU01 になります。後続の汎用モジュールは、 LFGRPU02 、 LFGRPU03 、 LFGRPU04 というようなインクルードファイルになります。
メインプログラム
汎用モジュールビルダにより、メインプログラムのインクルードが生成されます。書式 L<functgrp> UXX を使って、 メインプログラムの名前が自動的に設定されます。汎用グループ FGRP の場合、メインプログラムのインクルードは LFGRPUXX となります。
汎用モジュールの書込
汎用モジュールのインタフェースを定義したら、汎用モジュールコードの書込を開始することができます。
汎用モジュールビルダの第一画面で、ソースコードを選びます。
ABAP
エディタが表示されます。ここから、
FUNCTION
命令から
EDNFUNCTION
命令までの間に汎用モジュールのコードを書き込むことができます。
汎用モジュールのパラメータと例外は、コメント行としてエディタに表示されます。

汎用モジュールを作成するときに考慮すべき新しい点
汎用モジュールでのデータ処理
汎用モジュールからのサブルーチンの呼出
さまざまなサブルーチンを汎用モジュールから呼び出すことができます。
例外の開始
汎用モジュール内で、インタフェースで定義した名前を使って、すべての例外にアドレス指定を行うことができます。例外は、システムまたは呼出元プログラムのいずれかから処理することができます。これは、自分で処理する例外に数値を割り当てることで、汎用モジュールを呼び出すときに決定します。追加情報については、
プログラムからの汎用モジュールの呼出しを参照してください。
例外は明示的に開始されなければなりません。
構文
RAISE <
例外 >.MESSAGE ..... RAISING <
例外 >.これらの命令の効果は、例外を呼出元プログラムで処理するか、システムに処理させるかによって異なります。
呼出元プログラムで例外を処理することができない場合は、システムが実行時エラーを開始します。
SY-MSGID
(メッセージ ID )SY-MSGTY
(メッセージタイプ)SY-MSGNO
(メッセージ番号)SY-MSGV1
から SY-MSGV4 (メッセージに組み込まれる項目 <f1> から <f4> までの内容)追加情報については、
MESSAGE 命令のキーワード文書を参照してください。

以下の汎用モジュールがあるとします。
N1
がゼロでない場合、 Z1 が N1 で除算されます。 N1 が0の場合は、例外 DIV_ZERO が開始されます。例:プログラム
MDTEST が、以下のように汎用モジュール MY_DIVIDE を呼び出します。
このプログラムを実行すると、出力は以下のようになります。
Result = 1,500000
EXPORTING
一覧で N1 = 4 を N1 = 0 に置換すると、プログラム MDTEST は値1を SY-SUBRC に割り当てて例外 DIV_ZERO を処理します。この出力は、ゼロ除算になります。