2013-05-23 20 views
6

実行に時間がかかるABAPプログラムがあるとします。だから私は、プログラムが現時点で何をしているのか、実行中のコード行、またはプログラムがその時点で書き込んでいるテーブルをチェックしたい。実行中のプログラムのステータスを確認する方法

実行中のプログラムをチェックするトランザクションがあると思います。私は正しい?もし私がそれであれば?

答えて

11

あなたがしたいのは、プロセスの概要です。

トランザクションSM66には、現在のシステムのすべてのアクティブなプロセスが表示されます。これは、複数のアプリケーションサーバーを使用している場合に特に役立ちます。

SM50は、ログインしている現在のアプリケーションサーバーのすべてのプロセスを表示します。使用可能なアプリケーションサーバーを表示するには、SM51にアクセスしてください。

プロセスの概要(SM66)からプロセスをクリックし、[デバッグ]ボタンをクリックします。

同様に、SM50から、メニューからAdministration -> Program -> Debuggingを選択してプログラムをデバッグすることができます。

プロセスの概要では、プログラムの実行中のプロセスを明細の詳細から特定することができます。

限られたデータセットでプログラムをテストできる場合は、実行時分析(トランザクションSE30または新しいシステムではSAT)によってプログラムをテストできます。これにより、処理のボトルネックをより簡単に特定することができます。

+0

プログラムがDB更新を行っている場合、デバッグは慎重に使用する必要があります。デバッガは、予期せぬ時間にCOMMIT WORKを実行します。プログラムが明確に定義された作業単位に依存していると、不一致が発生する可能性があります。 –

+0

新しいデバッガはその点で優れているはずですが、予測できないコミットを行うべきではありませんが、注意が常に推奨されます。トランザクションSE30/SATは、パフォーマンスが懸念される場合に非常に便利な非侵入型トランザクションです。 – Esti

3

SM50概要を使用して、ABAPプロセスのステータスをかなり限定的に確認することができます。プログラムがバックグラウンドプロセスで実行されており、適切な権限を持っている場合は、トランザクションSM37からバックグラウンドジョブをデバッグできます。

2

特にDBアクセスが懸念される場合は、トランザクションST05を使用してSQLトレースを開始できます。トレースを表示すると、実行されたSQL文が表示され、経過時間、返されたレコード数、使用されたインデックスなどの情報が表示されます。また、ソースでステートメントが呼び出された場所を確認することもできます。

ST05はシステム全体のトレースですが、トレースをusername/transaction/program/tableでフィルタリングして結果を絞り込むことができます。また、一度に1つのトレースしかシステムを実行できないので、完了したら必ずオフにして、次の人が使用できるようにしてください。

関連する問題