セクション 11 / 11

デバッグとエラー処理

デバッガの使い方とブレークポイントの種類、ショートダンプの読み方、メッセージによるエラー通知の設計を解説します。

目次を開く

ABAP開発では、デバッガを使いこなせるかどうかで生産性が大きく変わります。標準プログラムのソースを読める環境では、SAPの内部処理を追いかけることもできます。

デバッガの起動方法

デバッガを起動する
方法操作
ブレークポイントソースコードで停止位置を指定
コマンド欄に /h次の処理からデバッガが起動する
BREAK-POINT文ソースに直接書く(本番へ移送しないこと)
BREAK ユーザー名特定ユーザーのみ停止する
SE38から実行デバッグ実行を選択

ブレークポイントの種類

種類内容
セッションブレークポイントログオン中だけ有効。最も一般的
外部ブレークポイントRFCやWeb Dynproなど別プロセスの処理でも停止
ステートメントブレークポイント特定のABAP命令(例:SELECT)で停止
例外ブレークポイント特定の例外クラスが発生したときに停止
サブルーチン/メソッドブレークポイント特定の処理単位の入口で停止

ステートメントブレークポイントは、「どこかでMESSAGE文が発行されているが、場所が分からない」という調査に有効です。MESSAGE文で停止する設定にすれば、エラーメッセージの発生箇所を特定できます。

ウォッチポイント

ウォッチポイントは、変数の値が変わったときに停止する仕組みです。「この変数がいつの間にか変わっている」という調査に使います。

条件を指定することもできます。「lv_countが100になったら停止」といった設定により、大量のループの中の特定の状況だけを捕まえられます。

ショートダンプの読み方

プログラムが異常終了すると、ショートダンプ(実行時エラー)が記録されます。ST22で確認します。

ショートダンプで確認すべき項目
項目内容
実行時エラー名エラーの種類。原因の分類
エラー分析何が起きたかの説明
ソースコード抜粋エラーが発生した行とその周辺
ユーザーと端末誰が実行したか
アクティブ呼出コールスタック。どこから呼ばれたか
内部注記システム内部の詳細情報
頻出する実行時エラー
エラー名原因
CX_SY_CONVERSION_NO_NUMBER数値に変換できない文字列を計算に使った
CX_SY_ZERODIVIDEゼロで除算した
CX_SY_ITAB_LINE_NOT_FOUNDテーブル式で行が見つからなかった
CX_SY_REF_IS_INITIAL初期値の参照変数でメソッドを呼んだ
TIME_OUT実行時間が上限を超えた
DBIF_RSQL_SQL_ERRORSQLの実行に失敗した
MESSAGE_TYPE_XタイプXのメッセージが発行された

メッセージによるエラー通知

MESSAGE文は、ユーザーにメッセージを表示する命令です。タイプによって挙動が大きく異なります。

メッセージタイプ
タイプ意味挙動
S成功ステータスバーに表示。処理は続行
I情報ダイアログ表示。OKで続行
W警告入力画面へ戻る。修正すれば続行可
Eエラー入力画面へ戻る。修正必須
A中止処理を打ち切る
X終了ショートダンプを発生させる
メッセージの発行
" メッセージクラスから発行
MESSAGE e001(zmm) WITH lv_matnr.

" 変数に受け取る(表示しない)
MESSAGE e001(zmm) WITH lv_matnr INTO DATA(lv_msg).

" 例外として送出
MESSAGE e001(zmm) WITH lv_matnr
  RAISING material_not_found.

性能分析のツール

Tコード用途
ST05SQLトレース。実行されたSQLと所要時間を記録
SAT(旧SE30)ABAPランタイム分析。処理時間の内訳を可視化
ST22ショートダンプの一覧と詳細
SM50 / SM66プロセスの状態監視。長時間処理の特定
SLG1アプリケーションログの参照
ST12統合トレース(SQLとABAPを同時に)

📖 わからない用語は SAP用語辞典 で調べられます。

理解度チェック

このセクションの内容を確認しましょう。

確認問題 1

ABAPのショートダンプ(実行時エラー)を確認するトランザクションコードはどれか。

確認問題 2

ABAPデバッガで、サブルーチンやメソッドの中に入らずに次の行に進む操作はどれか。

確認問題 3

ABAPではTRY〜CATCH〜ENDTRYによる例外処理が使用できる。

確認問題 4

MESSAGE命令でエラーメッセージを表示する場合のメッセージタイプはどれか。

確認問題 5

実行画面でコマンドフィールドに /h と入力するとデバッガが起動する。

確認問題 6

ABAPの例外クラスの命名規則として、クラス名はどのプレフィックスで始まるか。