【ABAP】1分で理解できる!汎用モジュールのテスト実行

ABAP

汎用モジュールはあくまでもプログラムの中の1つの「部品」です。

そのため、汎用モジュール単体でテストを行うには、普通のプログラムと少しだけ異なる処理を行う必要があります。

このページでは、汎用モジュールのテスト方法を画面付きで初心者向けに分かりやすく解説します。

このページで学べる内容
  • 前提:汎用モジュールとは?
  • 汎用モジュールのテスト実行手順
  • 汎用モジュールテストの裏技・注意点

ABAPerであれば知らないと恥ずかしい超基本知識です。是非最後までご覧ください。

早速解説を始めます。

スポンサーリンク
スポンサーリンク

前提:汎用モジュールとは?

汎用モジュールとは、再利用可能なプログラムの部品です。「部品」ですので、事前にロジックを実装しておき、後から汎用モジュールを「呼び出す」形で利用します。

blank

汎用モジュールの作り方・呼び出し方/実装方法については、以下のページで詳しく解説しております。

復習を兼ねて再度理解を深めたい方は、以下の記事をご覧になってから次の章にお進みください。

汎用モジュールのテスト方法

汎用モジュールのテストはトランザクションコード「SE37(汎用モジュールビルダ)」もしくは「SE80(オブジェクトナビゲータ)」から実行します。

ここでは、SE37からの実行方法で解説しますが、操作手順はSE80でもほぼ同様の手順でテストを行うことが可能です。

トランザクションコード:SE37

トランザクションコード「SE37」で対象の画面に遷移し、テスト実行したい「汎用モジュール」名称を入力します。

※下記画像の通り、項目にカーソルを合わせれば汎用モジュールを検索することも可能ですので、名称を覚えておく必要はありません。

今回、行いたいのは汎用モジュールの「テスト」なので「照会」ボタンを押下し次の画面に遷移します。

ちなみに、余談ですが画像にある汎用モジュールは標準の汎用モジュールです。この汎用モジュールは年月日を入力すると、その月の最後の日を返す処理を行ってくれます。

テストデータの入力

「照会」ボタンを押下すると、汎用モジュールのコード画面に移ります。

テストを行うには、該当の画面で「F8(実行)」ボタンを押下するか、メニューの「汎用モジュール ⇒ テスト」で実行できます。

F8」ボタンを押下した結果がこちらです。

ご覧のように、インポートデータをマニュアルで入力する画面に遷移します。

「IMPORT」で指定した項目が自動的に表示されます。本汎用モジュールの場合は「IMPORT」で定義されているのは1つだけです。

入力をしたら、更に「F8」を押下するか、「Ctrl + F7」を押下して実行します。

「F8」実行パターン

「F8」実行はデバッグせずに、そのまま実行するモードです。

実行した結果がすぐに分かるため、バグの調査に利用するのではなく、「どのような動きをするのか?」を知りたい場合に利用することが多いです。

特に標準の汎用モジュールは、リファレンス資料が少なく、Web上にもあまり詳細情報が載っていないことが普通です。

Aを入力したら、何がでるのか?インプットに対するアウトプットが知りたい場合など、単純な動作確認を行う際には「F8」実行パターンがおすすめです。

もちろん、事前にブレイクポイントを設置しておけば通常のデバッグと同様に処理がストップします。

「Ctrl + F7」実行パターン

デバッグモードに移行します。こちらは、バグの調査で使われることが普通です。

ロジック不備の調査など、コードを直接読む必要がある場合に用います。

結果の確認

上記2つの実行モードが終了すると、結果画面に遷移します。

blank

EXPORTの結果だけではなく、例外処理が走った場合は「エラーメッセージ」が出力されます。

デバッグ

デバッグ(DEBUG)とは、一言でいえば「プログラムバグを発見する作業の1つ」です。

プログラムを1行1行実行しながら、ロジックの不備を検知していきます。

デバッグとは何か?どのようにデバッグするのか?については以下の記事をご確認ください。

【裏技】テストデータの保存

テスト結果画面で保存ボタンを押せば、テストデータの保存が可能です。

今回の例では、IMPORTは1項目のみでしたが、例えば他システムからのインターフェースで用いられている場合などは項目が数十個~の場合もあります。

この場合に、テストデータを毎回入力するのは大変ですよね。

保存ボタンを押せば、テストデータに名称を付けたうえで保存が可能です。保存したデータは、実行前画面の「テストデータ一覧」ボタンを押せば呼び出すことができます。

注意点

最後に、汎用モジュールテストの注意点です。汎用モジュールテストでは、デバッグ同様、基本的に結果は全てコミットされます。

易しい言い方をすれば、結果がシステムに反映されてしまいます。例えば、伝票登録の汎用モジュールをテストした場合、伝票が実際に登録されるということです。

(テストという言葉に騙されて「データが実際に登録されることはない。」と誤解している方がたまにいらっしゃるため念のための補足です。)

伝票登録系の汎用モジュール(BAPI)については、その中でコミットまで行われない場合があります。(BAPIで伝票登録の一歩前まで実行し、コミットは" BAPI_TRANSACTION_COMMIT " で行われる場合があります。)

もし、この場合伝票が登録できるところまでを確認したい場合は以下の手順で BAPI_TRANSACTION_COMMIT を実行する必要があります。

  • トランザクションコード:SE37
  • 「汎用モジュール」メニューをクリック
  • 「テスト」をクリック
  • 「テスト順序」の後ろに ”BAPI_TRANSACTION_COMMIT” を指定

ちなみに登録系の汎用モジュール使い方次第で実は様々な方法で利用可能です。

テストデータ作成時に威力を発揮します。テストのために伝票を100件登録したい場合、画面から1つずつ登録していくのは大変です。

① テストデータの保存

② 必要に応じて値を変えて実行

他システムからのIFを前提とする機能など、データの用意が難しい場合に用いるとよいでしょう。

ABAPを1から勉強したい方は

ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。

現在、完全無料で公開しておりますので、是非ご覧ください!

タイトルとURLをコピーしました