ABAP のモジュール化: マクロ、サブルーチン、関数モジュール
ソース コードをモジュール化する場合は、一連の ABAP ステートメントをモジュールに配置します。 次に、すべてのステートメントをメイン プログラムに配置する代わりに、モジュールを呼び出すだけです。プログラムが生成されると、モジュール化ユニット内のソース コードは、メイン プログラム内に実際に物理的に存在するかのように扱われます。
モジュール化の必要性
- プログラムの構造を改善します。
- コードが読みやすい
- コードのメンテナンスが簡単
- 冗長性を避け、コードの再利用を促進する
さまざまなモジュール化手法
- マクロの使用
- インクルードファイルの使用
- サブルーチン
- 機能モジュール
それぞれを詳しく見てみましょう。
SAP- ABAPマクロ
プログラム内で同じステートメントのセットを複数回再利用したい場合は、それらをマクロに含めることができます。
マクロは、それが定義されているプログラム内でのみ使用でき、定義に続くプログラム行でのみ呼び出すことができます。
マクロは、長い計算や複雑な WRITE ステートメントに役立ちます。
構文
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
マクロでパラメータを使用できる &N ここで、N = 1,2,3、XNUMX、XNUMX…
例:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
出力:2
インクルードプログラム
インクルード プログラムはソース コードをモジュール化するためだけのものであり、パラメータ インターフェイスはありません。
インクルード プログラムを使用すると、異なるプログラムで同じソース コードを使用できます。 これらは、別のプログラムで使用する長いデータ宣言がある場合に便利です。
構文
Include <include program Name>
注意すべき点
- インクルード プログラムは自分自身を呼び出すことができません。
- インクルード プログラムには完全なステートメントが含まれている必要があります。
例:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
サブルーチン
サブルーチンは、任意の関数で定義できるプロシージャです。 ABAPプログラム また、任意のプログラムから呼び出すこともできます。サブルーチンは通常、内部的に呼び出されます。つまり、サブルーチンには、ローカルで頻繁に使用されるコードまたはアルゴリズムのセクションが含まれています。関数をシステム全体で再利用できるようにするには、関数モジュールを使用します。
構文-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= サブルーチンの名前
= 渡されるパラメータ
サブルーチンの種類
- インナー
- 同じプログラム内で定義されたサブルーチンが呼び出されます。
- メインの ABAP/4 プログラムで宣言されたすべてのデータ オブジェクトにアクセスできます。
- 外部
- 呼び出されるプログラムの外部で定義されたサブルーチン。
- を使用する必要がありますオプションを使用するか、メモリの共通部分でデータ オブジェクトを宣言します。
サブルーチンの呼び出し
内部サブルーチン
PERFORM <subroutine> [<pass>]
= サブルーチンの名前
= 渡されるパラメータ
メインプログラムで宣言されたデータは自動的に利用可能になります。
外部サブルーチン
PERFORM <subroutine>(<Program>) [<pass>]. PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND]. PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND]. PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
注意すべき点
- ネストされた呼び出しはサブルーチン内で許可されます (つまり、 FORM … ENDFORM 内の PERFORM )。
- 再帰呼び出しも可能です。
- ローカル データを定義するには、 FORM の後に DATA ステートメントを使用します。 サブルーチンに入るたびに、データが (初期値で) 再作成され、最後に (スタックから) 解放されます。
- サブルーチン内で使用されるグローバル データを定義するには、 FORM の後に LOCAL ステートメントを使用します。 値はサブルーチンに入ると保存され、最後に (スタックから) 解放されます。
機能モジュール
関数モジュールは、誰でも使用できる汎用の ABAP/4 ルーチンです。 実際、利用可能な標準関数モジュールが多数あります。
機能モジュールは、論理的に関連する機能の集合である機能グループに編成されます。 汎用モジュールは常に汎用グループに属します。
構文-
FUNCTION <function module> <Statements> ENDFUNCTION.
機能モジュールに関連する重要な情報
- 管理部門
- パラメータのインポート/変更/エクスポート。
- テーブルパラメータ/例外。
- ドキュメント
- ソースコード – L U01 。 は関数グループです
- グローバルデータ – L TOP . 汎用グループのグローバルデータ - 汎用グループ内の汎用モジュール間でアクセス可能。
- メインプログラム – SAPら. その関数グループのすべてのインクルードファイルのリストが含まれます
汎用モジュールの呼び出し
汎用モジュールを呼び出すには、CALL FUNCTION ステートメントを使用します。
CALL FUNCTION <module> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E] [OTHERS = ro]].
機能グループ
汎用グループは汎用モジュールのコンテナです。 実際、多数の標準関数グループがあります。
汎用グループ内のすべての汎用モジュールは、グループのグローバル データにアクセスできます。
実行可能プログラム (タイプ 1) や モジュールプール (タイプ M)、機能グループには画面、選択画面、およびリストを含めることができます。
注意すべき点
- 機能グループは実行できません。
- 関数グループの名前の長さは最大 26 文字です。
- 汎用グループまたは汎用モジュールを作成すると、メインプログラムとインクルードプログラムが自動的に生成されます。
- 関数グループはデータをカプセル化します。
関数グループの作成方法
- トランザクション SE80 に移動します。
- ドロップダウンでプログラムを選択します。
- 作成したい関数グループの名前を書きます。 通常、ユーザーが作成した機能グループは「Z」で始まります。 例 – 。 Enter キーを押します。
- ユーザーが TOP インクルードを作成するオプションをオンにすると、TOP インクルードがデフォルトで作成されることに注意してください。
汎用モジュールの作成方法
- 関数グループを作成します (「ZCAL」とします)。
- 汎用モジュールを作成し、(機能グループ、アプリケーション、短テキスト、プロセス タイプ) などの属性を設定して保存します。
- インクルードファイル「LZCALU01」には、最初の機能モジュールのソースコードが含まれます。
- インクルードファイル「LZCALTOP」にはグローバルデータが含まれます。
- メインプログラム「SAP「LZCAL」には
- グローバルデータ インクルードファイル「LZCALTOP」
- 機能モジュールにはファイル「LZCALUXX」が含まれます
- ユーザー定義のインクルード ファイル「LZCALF..」、「LZCALO..」、および「LZCALI..」
- インターフェースパラメータと例外を定義する
- ソースコードを書く
- 機能モジュールのアクティブ化
- 機能モジュールのテスト - 単一のテストとデバッグ
- 汎用モジュールの文書化とリリース
ABAP のモジュール性については以上です。