ABAP入門(5/10):サブルーチン

2009年11月24日 Posted in ABAP Posted in SAP 技術トピック

今回は、サブルーチンに関してご説明したいと思います。

 

サブルーチンも、汎用モジュールと同様、プログラム内から呼び出せるプログラムなのですが、これも詳細はこちらを見て頂くとして、まずは、登録、実行してみましょう。

 

前回のレポートプログラムを編集モードで開きます。

最後のWRITE命令の直前に、

PERFORM TESTROUTINE.

と挿入した後、TESTROUTINEをダブルクリックします。

ここで、サブルーチンを生成する場所を聞いてきます。上を選ぶと、自動で新規INCLUDEを作成して登録することになるのですが、今回は下を選びます。

すると、レポートプログラムの最下部に、サブルーチンの定義が自動生成されます。

 

これも汎用モジュールの場合と同様、コーディングルールに特に定義が無い場合などは便利な手順ではと思います。もちろん、汎用モジュールと同様に、パターンボタンも使用可能です。この辺は要件と好みに合わせてやってみてください。

 

ご覧の通り、FORM <サブルーチン名>とENDFORMで囲まれた部分がサブルーチンで、それを呼び出すにはPERFORM命令を使用します。

 

さて、サブルーチンの処理そのものですが、以下のソースコードを挿入します。

WRITE P_TEXT.

では、レポートプログラムを有効化し実行します。

すると、最初のWRITE命令の出力結果の後に、もう一度出力されています。

 

このようにサブルーチン内では、レポートプログラム内で定義されている変数(ここではP_TEXT)が、明示的に引数の受け渡しを行わなくても参照可能です。また、サブルーチン内だけで使用するローカル変数も、DATA命令で定義可能です。このような変数定義のスコープも、詳細はヘルプをご覧頂ければと思います。

 

ちなみに、サブルーチンが定義されている状態で、オブジェクト一覧照会ボタンを押すと、

レポートプログラム内に定義されているサブルーチンが認識され、このようにツリーとして表示されます。このオブジェクト一覧照会も、サブルーチンに限らず開発オブジェクトの参照に便利ですのでご活用ください。

 

今回も最後にレポートプログラムのソースコードを以下にコピーしておきます。

************************************************************************

*&---------------------------------------------------------------------*

*& Report ZTESTPROG

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

 

REPORT ZTESTPROG.

 

 

PARAMETERS P_TEXT(20).

 

 

INITIALIZATION.

 

P_TEXT = 'DEFAULT VALUE'.

 

 

START-OF-SELECTION.

CALL FUNCTION 'Z_TESTFM'

EXPORTING

I_TEST = P_TEXT

IMPORTING

E_TEST = P_TEXT

EXCEPTIONS

ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID 'SABAPDOCU' TYPE 'E' NUMBER 888

WITH 'エラーが発生しました'.

ENDIF.

 

WRITE P_TEXT.

 

PERFORM TESTROUTINE.

*&---------------------------------------------------------------------*

*& Form TESTROUTINE

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

* --> p1 text

* <-- p2 text

*----------------------------------------------------------------------*

FORM TESTROUTINE .

WRITE P_TEXT.

ENDFORM. " TESTROUTINE

************************************************************************

 

 

 

REALTECH 藤川


このエントリーをはてなブックマークに追加
トラックバックURL:

コメントする

(コメントを表示する際、コメントの承認が必要になることがあります。承認されるまではコメントは表示されません。その時はしばらくお待ちください。)