【ABAP】汎用モジュールのテスト実行方法を1分で

ABAP

このページでは、汎用モジュールを単体でテストする方法(テストデータを保存する方法)や、汎用モジュールテスト機能を利用した裏技をご紹介します。

汎用モジュールはプログラムの部品ですので、それ単体で実行するにはSE37: 汎用モジュールビルダを利用する必要があります。このページでは、そのテスト方法をざっくり簡単に解説しつつ、いろいろな使い道・裏技もご紹介します。

汎用モジュールって何?という方も本ページで合わせて解説しておりますので、ご安心ください。

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

SAPエンジニアを目指す方やABAPerを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

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

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

blank

例えば「特定のファイルを開いてログを記録する」「会社独自の計算方法で支払額を算出する」といったように、同じような処理を何度も必要とする場合に用いることができる仕組みです。

本記事では、この汎用モジュールが何者であるか?を理解できている方向けの解説ページのため必ず復習してから以降の章を読み進めてください。

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

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

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

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

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

検索ヘルプを利用して汎用モジュール名を検索することも可能ですので、名称を覚えておく必要はありません。

汎用モジュールビルダ

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

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

テストデータの入力

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

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

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

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

ここには汎用モジュールに投入するインプットデータの入力項目が自動的に表示されます。本汎用モジュールの場合は「IMPORT」で定義されているのは1つ。

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

「F8」実行パターン

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

以下のような結果画面が表示されます。

汎用モジュール テスト結果

SAP標準の汎用モジュールは、リファレンス資料が少なく、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を前提とする機能など、データの用意が難しい場合に用いるとよいでしょう。

このページのまとめ
  • 汎用モジュールのテスト実行はSE37から行う
  • テストデータは保存可能なので何度もテストを行いたい場合に便利
  • 「テスト実行」と言えど結果はコミットされてしまう点に注意

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

SAP/ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。

特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。

ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。

是非、一度ご覧になってみてください。

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