【SAPが動画で学べる!】YouTubeチャンネル開設しました ▶ SAPラボチャンネルはコチラ

【SAP ABAP】ブレイクポイント・ウォッチポイントについて解説

SAP ブレイクポイント
販売出力マスタ

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット
  • ブレイクポイントやウォッチポイントの使い方が分かる

ABAPデバッグを行ううえで、最もよく使う機能のひとつが ブレイクポイント です。

ブレイクポイントを設定すると、プログラムの実行を任意の位置で一時停止できます。
これにより、処理の流れや変数の値を確認しながら、不具合の原因や想定外の動作を調査できます。

また、ブレイクポイントと似た調査機能として ウォッチポイント があります。
ブレイクポイントが「指定した行に到達したら止まる」機能であるのに対し、ウォッチポイントは「指定した変数の値が変わったら止まる」機能です。

本記事では、まずブレイクポイントの基本的な考え方や種類、設定方法を中心に説明し、補足としてウォッチポイントの使い方も紹介します。

博士

デバッグ以外にも不具合調査の方法はあるぞい!
次の記事を参考にするのじゃ!

SAPフリーランスバンク SAPフリーランスバンク
  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
MM

【ITサービス/S/4HANA新規導入(MM)】大阪府(リモート併用)/要件定義から本番稼働までのプロセス推進

月額単価
1,300,000円 / 月
稼働場所
大阪府
業務領域
要件定義, 設計
作業内容:
エンドユーザーにおけるS/4HANAの新規導...
COFIMMPPSD

【製造業/S/4 HANA海外展開・国内ロジ導入(SD,MM,PP,FI,CO)】大阪(リモート併用)/SAPコンサルタント

月額単価
1,500,000円 / 月
稼働場所
大阪府
業務領域
要件定義, 設計
作業内容:
大手製造業であるT社において、S/4 HANA...
MMPPSDその他

【製造業/SAPグローバルロールイン(QM,SD,MM,PP)】新橋(リモート併用)/SAPコンサルタント

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
製造業を展開するクライアントにおいて...
MMPPSD

【製薬業/S/4HANAグローバルロールイン(SD,MM,PP)】東京都(オンサイト)/SAPコンサルタント

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製薬企業におけるS/4HANAのグローバルテ...
MMSD

【半導体/アジア展開システム要件定義支援(その他)】東京都(フルリモート)/SAPコンサルタント

月額単価
1,700,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
半導体分野を展開するクライアントにお...
MMSD

【自動車部品メーカー/SAPグローバル導入・ロールアウト(SD,MM)】大手町(オンサイト)/SAPコンサルタント

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, その他
作業内容:
グローバルに事業を展開する大手自動車...
FIMMSD

【商社/海外拠点向けSAP導入(SD,MM,FI)】内幸町(リモート併用)/SAP設計者、SAP開発者

月額単価
900,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori)
作業内容:
大手商社における海外拠点向けのSAPベー...
PP

【製造業向けシステム刷新(PP)】都内/S/4HANA標準機能の活用および生産管理領域のSE業務

月額単価
1,550,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製造業における業務効率化と基盤強化を...
CO

【製造業向けシステム刷新(CO)】都内/管理会計領域における標準機能導入および検証業務

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製造業向けの大規模なシステム刷新プロ...
FI

【製造業向けシステム刷新(FI)】品川近辺/S/4HANAにおける顧客側支援および運用保守

月額単価
1,250,000円 / 月
稼働場所
東京都
業務領域
運用・保守
作業内容:
S/4HANAにおける顧客側支援および運用保...
この記事のポイント

ブレイクポイントとは

ブレイクポイントとは、プログラムの実行を一時停止させるための目印です。

通常、ABAPプログラムは上から下へ連続して実行されます。
しかし、特定の行にブレイクポイントを設定しておくと、その行に到達したタイミングで処理が停止し、ABAPデバッガが起動します。

たとえば、以下のようなコードがあるとします。

SELECT SINGLE *
  FROM vbak
  INTO ls_vbak
  WHERE vbeln = lv_vbeln.

IF sy-subrc = 0.
  PERFORM update_data.
ENDIF.

この場合、SELECT SINGLE の直後にブレイクポイントを設定しておくと、
データ取得後の SY-SUBRCLS_VBAK の内容を確認できます。

ブレイクポイントを使う目的

ブレイクポイントは、次のような場面でよく使用します。

  • 処理が想定した場所を通っているか確認したい
  • IF文の条件分岐に入るか確認したい
  • SELECT文の結果を確認したい
  • 変数の値がどこで変わるか確認したい
  • エラーメッセージが出る直前の状態を見たい
  • 標準トランザクションの処理の流れを追いたい

特に、エラー原因を調査する場合は、やみくもに F5F6 で進めるのではなく、確認したい処理の直前・直後にブレイクポイントを置くことで、効率よく調査できます。

ブレイクポイントの種類

ABAPデバッグでよく使うブレイクポイントには、主に以下の種類があります。

1. セッションブレイクポイント

セッションブレイクポイントは、現在のSAP GUIセッション内で有効なブレイクポイントです。
自分が今開いているSAP GUI画面から実行する処理を止めたい場合に使用します。

通常のABAP開発や標準トランザクションの調査では、まずセッションブレイクポイントを使うことが多いです。「自分が今操作している画面の処理を止めたい」場合は、基本的にこの種類を使うと考えてよいです。

特徴
  • 現在のログオンセッションで有効
  • SAP GUIから直接実行する処理に向いている
  • 一時的な調査に使いやすい
  • セッションを終了すると基本的に無効になる

2. 外部ブレイクポイント

外部ブレイクポイントは、SAP GUI以外の経路から呼び出される処理を止めるために使います。
例えば、以下のような処理では、通常のセッションブレイクポイントでは止まらない場合があります。

  • SAPUI5 / Fiori から呼ばれる OData
  • 外部システムから呼ばれる RFC
  • Webサービス経由の処理
  • 別セッションで実行される処理

このような場合に使用するのが、外部ブレイクポイントです。

特徴
  • 外部呼び出しや別セッションの処理を止めるために使う
  • 実行ユーザに対して有効
  • SAPUI5 / Fiori / OData / RFC の調査でよく使う
  • 有効期限が設定される場合がある

ブレイクポイントの設定方法

1. 基本操作

基本的に、ABAPエディタやデバッガ画面から処理を止めたい行の左端をクリックするか、ブレイクポイントボタンを押下することでブレイクポイントが設定されます。

SAP ブレイクポイント
SAP ブレイクポイント

2. メッセージでのブレイクポイント設定

処理を止めたい場所がすぐに見つからないときは、次のデバッガ画面から特定の処理に対して自動でブレイクポイントを設定することができます。今回はエラーメッセージ番号がわかっており、その場所で止めたい場合によく使用する方法を例にとって解説していきます。

簡単な例として、以下のようなエラーメッセージが出力されている場所でブレイクポイントを設定したいとします。

SAP ブレイクポイント
手順
  • デバッガ画面を開く(/hなどで)
  • メニューバー > ブレイクポイント > ブレイクポイント位置 > メッセージでのブレイクポイント
  • メッセージID・番号を入力
  • Enterを押下
SAP ブレイクポイント

ブレイクポイントを設定後はF8(続行)を押すことで、設定したブレイクポイントまで進めることができます。

SAP ブレイクポイント

何らかの処理に対してエラーメッセージが出力されたことをきっかけにデバッグを試みることが多いと思いますが、その際にエラーメッセージが出力されているところを効率的に特定することができる方法です。その付近からエラーになっている根本原因の箇所を特定することがおススメです。

メッセージ以外にも他のタブにあるABAP命令やMETHODからブレイクポイントを設定することも可能です。例えば、COMMITしている箇所に一括でブレイクポイントを設定することができます。

3. ブレイクポイントに条件を追加する方法

通常のブレイクポイントは、その行に到達するたびに停止します。
しかし、LOOP処理などで大量のデータを処理している場合、毎回止まってしまうと調査が大変です。

そのような場合に便利なのが、条件付きブレイクポイントです。
ブレイクポイントに対して条件を追加することで、指定した条件を満たした場合だけ処理を停止させることができます。

LOOP AT lt_vbak INTO ls_vbak.

IF ls_vbak-vbeln = lv_vbeln.
PERFORM check_order.
ENDIF.

ENDLOOP.

このLOOPで、特定の受注伝票番号だけ確認したい場合は、以下のような条件を設定します。

LS_VBAK-VBELN = '0000123456'

これにより、対象の伝票番号を処理しているときだけ停止できます。

手順
  • デバッガ画面においてブレイクポイントを指定した状態でブレイクポイントのタブを開く
  • 対象のブレイクポイントの条件を押下
  • 条件を入力
  • Enterを押下
SAP ブレイクポイント

4. ブレイクポイントの削除

ブレイクポイントは、アイコンをクリックすることで簡単に削除することができます。
また、セッションブレイクポイントの場合は、基本的にセッションを閉じればすべて削除されます。

しかし、外部ブレイクポイントの場合はそのまま残ってしまうため、削除してあげる必要があります。

ABAPエディタから以下の様に、全ブレイクポイントを照会し、一括で削除することができます。

SAP ブレイクポイント

ブレイクポイントが止まらない場合

その行が実行されない

ブレイクポイントを設定したのに止まらない場合、いくつかの原因が考えられますが、
最も多い原因は、そもそもその行が実行されていないことです。

設定したブレイクポイントで止まらないときは以下を確認しましょう。

確認ポイント
  • IF条件に入っているか
  • 対象のFORMやメソッドが呼ばれているか
  • 別の処理ルートを通っていないか
  • 画面操作が想定した処理を発生させているか

実行ユーザが異なる

外部ブレイクポイントで止まらない場合、特によくある原因は 実行ユーザが違う ことです。

たとえば、FioriやODataでは、自分のSAP GUIユーザではなく、別の通信ユーザやサービスユーザで処理が実行されている場合があります。
その場合、自分のユーザに外部ブレイクポイントを設定しても停止しません。

まずは、対象処理がどのユーザで実行されているかを確認することが重要です。
因みに、外部ブレイクポイント(External Breakpoint)は、デフォルトでは設定した本人のユーザーIDが指定されていますが、これを以下の手順で「デバッグ対象のユーザーID」に変更することができます。

手順
  • ABAPエディタを開く(SE38などで)
  • メニューバー > ユーティリティ > 設定 > ABAPエディタ > デバッグ タブ
  • 「ユーザー」欄に、処理を止めたい他のユーザーのIDを入力して保存
  • その状態でソースコード上に外部ブレイクポイントを設定
SAP ブレイクポイント

ウォッチポイントとは

ここまでブレイクポイントについて説明してきましたが、別の調査方法として ウォッチポイント があります。

ウォッチポイントは、指定した変数の値が変化したタイミングで処理を停止する機能です。

ブレイクポイントが、「この行まで来たら止める」という考え方であるのに対して、
ウォッチポイントは、「この変数が変わったら止める」という考え方です。

ウォッチポイントを使う場面

ウォッチポイントは、次のようなケースで便利です。

  • 変数の値がどこで変わっているか分からない
  • ステータスがいつ変更されたか調べたい
  • フラグがどこで立っているか確認したい
  • 金額や数量が途中で想定外の値に変わる
  • 構造の特定項目がいつ書き換わるか知りたい

たとえば、lv_statusという変数があるとします。

処理の途中で lv_statusが想定外の値に変わっているが、どこで変更されたのか分からない場合、lv_statusにウォッチポイントを設定します。

すると、lv_status の値が変更されたタイミングで処理が停止します。

機能止まる条件向いている調査
ブレイクポイント指定した行に到達したとき処理の流れを確認したい
条件付きブレイクポイント指定した行で条件を満たしたとき特定データだけ確認したい
ウォッチポイント指定した変数の値が変わったとき値がどこで変わったか知りたい
ブレイクポイントとの違い

ウォッチポイントの設定方法

手順
  • デバッガ画面を開く
  • ウォッチポイント登録ボタンを押下
  • 監視したい変数名を入力する
  • 必要に応じて条件を指定する
  • Enterを押下

ウォッチポイントを設定したら、F8 などで処理を続行します。
その後、監視対象の変数が変更されると、ABAPデバッガが自動的に停止します。

このように、ウォッチポイントは、どの処理で値が変わったのか分からない場合や、ステータス・フラグの変更箇所を調べたい場合に有効です。

ただし、頻繁に変更される変数に設定すると何度も停止するため、条件を付ける、または構造項目など確認対象を絞ると使いやすくなります。
ブレイクポイントとウォッチポイントを使い分けることで、ABAPデバッグの調査効率を大きく上げることができます。

まとめ

ブレイクポイントは、ABAPデバッグで処理を効率よく確認するための基本機能です。

まずは、通常のブレイクポイントやセッションブレイクポイントから使い始めると理解しやすいです。
慣れてきたら、外部ブレイクポイントや条件付きブレイクポイントを使うことで、より効率的に調査できます。

また、値がどこで変わったか分からない場合は、ウォッチポイントも有効です。
ブレイクポイントは「処理位置で止める」、ウォッチポイントは「値の変化で止める」と考えると、使い分けがしやすくなります。

デバッグでは、ただ1行ずつ処理を追うのではなく、
どこで止めるか、何を確認するかを決めてからブレイクポイントを設定すること が大切です。

この記事が、ABAPデバッグを始める方の参考になればうれしいです。

レイナ

よ~し、もっとデバッグについて勉強するぞ!

  • 転職求人
  • フリーランス案件
株式会社日立産業制御ソリューションズ

【リモート可】【PM/PL候補】【東京】SAP(S/4HANA)エンジニア ※フレックスタイム制/ワークライフバランス◎(S/4HANA)

年収
430~800万円 / 年
勤務地
東京本社:東京都台東区秋葉原6番1号(...
雇用形態
正社員
要スキル:
【必須】 SAP導入に強い興味があり、以...
キリンビジネスシステム株式会社

SAP会計領域コンサルタント(管理職)/キリングループ唯一のIT会社(FI/CO)

年収
900~1,300万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 以下A・B・Cすべてを...
キリンビジネスシステム株式会社

SAPコンサルタント/キリングループ唯一のIT会社(SD/MM/PP)

年収
500~850万円 / 年
勤務地
東京都中野区中野4-10-2 中野セントラ...
雇用形態
正社員
要スキル:
【必須(MUST)】 SAPアプリケーショ...
株式会社ベイカレント・コンサルティング

【SAPコンサルタント】経営戦略実現を全社横断変革で支援/平均年収1,350万円

年収
600~2,500万円 / 年
勤務地
東京都港区麻布台1-3-1麻布台ヒル...
雇用形態
正社員
要スキル:
【必須(MUST)】 社会人経験3年以上...
株式会社 ホープス

【年収1000万円可】【リモート可】【上流工程】【SAP導入コンサルタント】リモート・ハイブリッド勤務OK|平均残業月10時間/HOPES ※基幹系業務システムの導入推進を行っていただける方を募集

年収
800~1,800万円 / 年
勤務地
〒 1040033:東京都中央区新川1-3-17新...
雇用形態
正社員
要スキル:
■SAPコンサルタント 【必須】 SAPモ...
MM

【ITサービス/S/4HANA新規導入(MM)】大阪府(リモート併用)/要件定義から本番稼働までのプロセス推進

月額単価
1,300,000円 / 月
稼働場所
大阪府
業務領域
要件定義, 設計
作業内容:
エンドユーザーにおけるS/4HANAの新規導...
COFIMMPPSD

【製造業/S/4 HANA海外展開・国内ロジ導入(SD,MM,PP,FI,CO)】大阪(リモート併用)/SAPコンサルタント

月額単価
1,500,000円 / 月
稼働場所
大阪府
業務領域
要件定義, 設計
作業内容:
大手製造業であるT社において、S/4 HANA...
MMPPSDその他

【製造業/SAPグローバルロールイン(QM,SD,MM,PP)】新橋(リモート併用)/SAPコンサルタント

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義
作業内容:
製造業を展開するクライアントにおいて...
MMPPSD

【製薬業/S/4HANAグローバルロールイン(SD,MM,PP)】東京都(オンサイト)/SAPコンサルタント

月額単価
1,400,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製薬企業におけるS/4HANAのグローバルテ...
MMSD

【半導体/アジア展開システム要件定義支援(その他)】東京都(フルリモート)/SAPコンサルタント

月額単価
1,700,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
半導体分野を展開するクライアントにお...
MMSD

【自動車部品メーカー/SAPグローバル導入・ロールアウト(SD,MM)】大手町(オンサイト)/SAPコンサルタント

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, その他
作業内容:
グローバルに事業を展開する大手自動車...
FIMMSD

【商社/海外拠点向けSAP導入(SD,MM,FI)】内幸町(リモート併用)/SAP設計者、SAP開発者

月額単価
900,000円 / 月
稼働場所
東京都
業務領域
開発(ABAP/Fiori)
作業内容:
大手商社における海外拠点向けのSAPベー...
PP

【製造業向けシステム刷新(PP)】都内/S/4HANA標準機能の活用および生産管理領域のSE業務

月額単価
1,550,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製造業における業務効率化と基盤強化を...
CO

【製造業向けシステム刷新(CO)】都内/管理会計領域における標準機能導入および検証業務

月額単価
1,600,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
作業内容:
製造業向けの大規模なシステム刷新プロ...
FI

【製造業向けシステム刷新(FI)】品川近辺/S/4HANAにおける顧客側支援および運用保守

月額単価
1,250,000円 / 月
稼働場所
東京都
業務領域
運用・保守
作業内容:
S/4HANAにおける顧客側支援および運用保...

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

SAPエンジニア(SD/MM/ABAP)

大学卒業後、大手日用品メーカーに社内SEとして入社し、SAP S4HANA導入プロジェクトに参画。主にSD/MMモジュールについて、知見を深めて参りました。
その後、SAPを極めたいという思いからSIerに転職。
大手機械メーカーへのSAP導入プロジェクトに参画し、SD/MM/COのアプリ側を経験しつつ、現在はロジ周りのAdd-on設計・開発をメインで担当しています。

プロジェクトを通して学んだことを発信し、言語やベンダーにより閉じられたSAPの世界を「パッケージ」として明るく開けたものにする一助になれば嬉しいです。

この記事のポイント