デバッガ画面を表示して、標準タブを開くと右上に『ABAPおよびDynproスタック』という部分があります。
そこを見ると、今どのプログラムから呼び出されたどのプログラムの処理をしているのかが分かります。『Stack 深さ』という列に数字が振られていて、それの一番大きい数字のところ(1番上の行)が、今処理されているプログラムです。
次の行、その次の行と見ていくと一番下に大元の呼び出し元が表示されていて、そこから上に向かって別プログラムを呼び出しているというのが、ここを見ると分かります。
アドオンプログラムの場合は仕様書などもあると思いますし、エラー箇所などの特定も比較的やりやすいのですが、標準プログラムで原因が分からないエラーが発生した場合に、原因を特定するためにデバッグする際に役立つケースがよくあります。
また、ABAPスタックの情報をプログラムの中で汎用モジュールを使用して取得することもできます。『SYSTEM_CALLSTACK』という汎用モジュールを呼び出すと、その処理がどのようなプログラムから呼び出されているのかが分かります。
頻繁に使用するものではありませんが、EXITやOPEN-FIなど共通処理の中で呼び出元が、どのプログラムなのかによって処理を変えたいというケースがあった場合には、この汎用モジュールで取得したABAPスタックのデータを見れば、どこから呼び出されてきているのかが判断できるので便利です。
コメント