この記事を読むメリット
- SAPにおけるT-CODE:ST22(ABAP実行時エラー)についての基本を理解することができます。
SAPでは、ABAPプログラムが異常終了したときにショートダンプとしてユーザに表示されます。
T-CODE:ST22では、その内容を詳しく確認する方法について確認できる機能となっています。
本記事では実際にショートダンプを起こしてみて、T-CODE:ST22を起動してPGM実行時に起きたエラーを確認する方法について解説しています。
重い処理を実行してしまって、本番機でショートダンプ起こすと、ひやひやするのじゃ・・
この記事のポイント
ABAP実行時エラーとは?
ABAP実行時エラーとは、設計上想定されていない状況やバグなどで実行時にPGMエラーとなることがあります。(例えば、データ型の不一致・存在しないテーブルの参照・メモリ不足などが代表的です。)
これらの事態に直面したときにシステムは自動的にプログラム実行を停止させて、ショートダンプを生成します。
T-CODE:ST22(ABAP実行時エラー)では、このショートダンプの原因などの情報としてエラーが起きる直前の処理のプログラムの状況やシステム環境、発生したエラーの種類について記録されたものを参照することができる機能で、トラブルシューティングに活用されます。
本記事では簡単なABAPプログラムを実行する形でショートダンプを発生させてからST22の画面で内容を確認する手順を紹介します。
実機における操作イメージ:ショートダンプの発生
では、実際の画面を通じてショートダンプを発生させてみます。
前段処理:簡易PGMの作成
今回は簡易的にショートダンプを起こすため、ユーザが入力した外部書式を内部書式へ変換する汎用モジュール”BAPI_CURRENCY_CONV_TO_INTERNAL”を利用したPGM:Z_CURRENCYを例に画面で10000と入れた場合に、正常に変換されるPGMを例に解説していきます。
処理イメージ
あわせて読みたい
【SAP基礎】SAPの内部書式と外部書式について解説!
この記事を読むメリット SAPの内部書式(内部値)と外部書式(外部値)の概念および調査方法を理解することができます SAP独特のデータ構造である内部書式(内部値)と…
実機における操作イメージ:ショートダンプの内容確認
(T-CODE:ST22/SE38)
では、実機の画面を利用してPGMを実行していきます。
今回はT-CODE:SE38で簡易な内部書式へ金額を変換するPGMを作成した正常パターンと、余計なコードを1行追加したPGMをZ_CURRENCY2として定義して実行します。
PGMイメージ①:正常処理の場合
まず、Z_CURRENCYとして正常処理のパターンとなります。
参考:コードイメージ
Z_CURRENCYのコード例
実行画面
では、さっそく本PGMを実行していきます。
入力した外部書式の金額が正しく、内部書式の100.00に変換されました。
PGMイメージ②:異常処理の場合
次に、異常処理を起こすPGMを実行しABAP実行時エラーを意図的に発生させていきます。
参考:コードイメージ(余計な処理追加ver)
先ほどのコードについて、本来はありえないですが通貨コード(CHAR型)を内部書式の金額(CURR型)に代入するというコードを1行、34行目に追加してショートダンプを発生させていきます。
Z_CURRENCY2のコード
実行画面
入力画面に同様の値を入れたところ、ABAP実行時エラーが表示されました。
ショートダンプの例
ST22でのエラー画面の確認
先ほど発生したショートダンプについて、T-CODE:ST22の画面から内容を確認していきましょう。
ST22:初期画面
ST22の画面では、エラーレコードを選択する条件を指定します。
ST22:一覧画面&エラー内容の確認
検索条件に一致するショートダンプが一覧として表示されました。
先ほど、発生したショートダンプの行をダブルクリックで細かな分析内容を確認していきます。
ここでは、エラー分析結果として“プログラムが値 JPYを数値として解釈しようとましたがその値が正しい書式ルールに一致しないので実行できませんでした“
という表記がでていることを確認できます。
また、下記ではコードのどこにエラーがあるのか(ここでは34行目)を記載してくれています。
ショートダンプ発生個所の確認
以上で、代入時のエラーについてショートダンプの原因の確認も行うことができました。
さいごに
本記事では、実際にショートダンプを起こす→ログの確認という手順を通じて簡易的にST22でのエラーについて解説してきました。本稼働後のハイパーケアフェーズでのトラブルシューティングや運用保守での原因の早期発見といった形で参考にしていただければと思います。
本記事はこれで以上じゃ!
エラーが発生してからの原因調査や復旧対応のために使いこなせるようになるのじゃ!