SAP ABAP さまざまなデバッグの仕方

  その他

概要

デバッグ(DEBUG)とは、ABAPプログラムを1行1行実行しながら動きを確認する作業を指す。
障害やテストにおいて想定通り処理が動かない場合、なぜ期待通りの結果にならないのかを確認する手段として用います。
実際のプログラムを1ステップずつ実行しながら、その時の変数の値・構造/内部テーブルに格納されているレコードを確認していきます。
今回はデバッグする為の手順を記載します。

ブレークポイント

予め確認したいプログラムが明確になっている場合に使用します。
SE38等プログラムソースを見る事ができるトランザクションで、ABAPエディタからストップさせたい行にカーソルを置きセッションブレークポイント(CTRL+SHIFT+F12)を設定します。次回プログラム実行時に設定ポイントで処理が中断し、デバッガーが起動されます。

また、外部ブレークポイント(CTRL+SHIFT+F9)で設定する事もできます。「ユーティリティ」->「設定」->「ABAP Editor」->「デバッグ」で設定したユーザーIDの処理を中断して確認する事ができます。外部からリモートコールで呼び出された汎用モジュールの確認等に用いられます。

ソースコードを変更できるのであれば「BREAK-POINT」と直接記述する事ができます。気をつけなければいけないのが、全ユーザーに対して機能してしまう為、間違えて本番環境へ移送されてしまわないように気をつける必要があります。「BREAK ユーザーID」を指定すると対象のユーザーにのみ機能するようにする事も可能です。どちらの方法をとるにせよ、確認後の消し忘れには注意する必要有り。

標準処理のデバッグ

多くのインクルードプログラムによって構成されている標準処理から確認したいプログラム・場所を予め確認するのは至難です。そんな時によく利用するのが、
「ユーティリティ」->「ABAPデバッグ」です。予め発生したエラーのメッセージ番号、又、確認したい画面変数を確認しておき、保存等の処理を実行する直前に「ABAPデバッグ」を起動します。その後処理を実行するとデバッガが起動されるので、ウォッチポイントに中断したい条件を設定して再度実行すると期待している場所で止まってくれます。エラーの原因を探るのであれば、ほぼこの方法で解決できるのではないだろうか。

実行中プログラムのデバッグ

Tr-CD:SM50で実行中のプログラムを選択し、「プログラム/セッション」->「プログラム」->「デバッグ」を選択すると、処理が中断しデバッグが起動される。
注意しないといけないのが、SQL実行中は処理が止まらない(実行後に止まる)事だ。無限ループをしてしまっている原因を探りたい機能だろう。

SAPSCRIPTのデバッグ

Tr-CD:SE71でフォーム名を入力後、「ユーティリティ」->「アクティブデバッガー」を選択する事で次回帳票出力時にデバッガーが起動される。デバッガー自体もSAPSCRIPT専用で一行一行ステップの確認は可能だが、次のエレメントまで飛んだりできず、使い方もいまいち不明。