トップ > 技術コラムNews > SAP技術情報 > SAP ERPにおけるパフォーマンスチェック方法の解説

更新日 

SAP ERPにおけるパフォーマンスチェック方法の解説

1.はじめに

SAPに限らず、ERPには一定以上の処理性能が求められます。例えば、帳票出力や夜間ジョブの実行などでは、時間的な制限が課されることが少なくありません。したがって、ABAPを用いたアドオン開発においても、常にパフォーマンスに配慮した造りこみが必要です。今回は、SAP ERPにおけるアドオン開発で必須となるパフォーマンスチェックの方法について解説します。

2.SAP ERPにおけるパフォーマンスチェックの方法とは

SAP ERPにはいくつかのパフォーマンスチェックツールが搭載されています。大まかに分類すると「ABAPプログラムのパフォーマンスをチェックするもの」、「DBアクセスの状況をチェックするもの」、「ハードウェアリソースの使用状況を抽出するもの」があり、それぞれトランザクションコードが異なります。以下は、代表的なツールやトランザクションの例です。

3.SE30 もしくはSAT(ABAP実行時間分析)

SAP ERPのパフォーマンスチェックといえばSE30が最も有名かもしれません。SE30は、ABAPプログラムの実行時間、リソースの使用状況、I/Oアクセスなどを表示するトランザクションです。プログラムの実行結果を詳細に分析し、パフォーマンスの問題を特定することができます。

ちなみに、SE38から「実行時間分析」を選択することでも同様の機能が使えます。

SE30 を使用すると、プログラムや汎用モジュールを指定して、個々のパフォーマンス分析を実行できます。Perform、call function、SELECT文など処理の種類ごとに時間が表示されるので、ABAPで作られたアドオンプログラムの具体的なボトルネックを即座に知ることが可能です。プログラム本体の書き方が悪いのか、汎用モジュールの呼び出しが適切ではないのか、それともDBアクセスに問題があるのかわからないといった場合には、SE30が非常に役立ちます。

また、バックグラウンドで実行中のプログラムに対しても、メニューバーから「実行時間分析→計測→実行中のアプリケーション」を選択することで実行時間を計測することができます。「選択されたワークプロセスでの測定開始/終了」で任意のプロセスを選び、有効化すると「評価」というボタンが表示されるので、そこをクリックすると現在進行形のプログラムに対するパフォーマンスが表示されます。

4.ST05 (SQL文のパフォーマンス分析)

ST05は、主にSQL文のパフォーマンスチェックに使用するトランザクションです。ST05を使用すると、SQL文の実行時間、SQL文が使用するリソース、パフォーマンスの問題を特定できます。SAP ERPにおけるパフォーマンス低下の原因は、その多くが「非効率なDBアクセス」にあります。したがって、SE30と並んで重要なツールです。

ST05の便利なところは、SELECT文ひとつひとつに対してパフォーマンスのチェックが行えることでしょう。無意味なDBアクセスが行われていないか、取得項目は適切かなどを具体的にチェックし、必要であればテーブルキーを指定するなどしてDBアクセスを効率化できます。この他にも「LOOP処理の中でSELECTを行っていないか」「ソートテーブルやバイナリテーブルを使用しているか」などのチェックにも使えますね。

テーブルキーの指定によるINDEX探索はDBアクセスの時間を大幅に短縮できるので、ABAPプログラマで無くともぜひ覚えておきたいですね。

ABAPプログラムを組んだことがない方でも、上記の視点でチェックすることで、SAP ERPのパフォーマンス改善に貢献することが可能です。

5.ST12 (パフォーマンス分析)

ST12は、SE30とST05を統合したトランザクションです。「パフォーマンスチェック=ST12」という具合に覚えておくと効率が良いかもしれません。一つの画面から、ABAPプログラムの処理をトレースする「ABAP trace」、SQL文をチェックする「SQL summary」の両方を使用できるので、非常に使い勝手の良いトランザクションです。

ST12では、「User/Task(ユーザー単位)」「Workprocess(プロセス単位)」「Current mode(プログラム単位)」の3つでパフォーマンスを分析することができます。また、「Schedule」で分析の予約も可能です。一般的によく使うのは「Schedule」で「for Background job」を選択し、定期実行ジョブのパフォーマンスを見る、という方法でしょうか。

6.SM12によるロックオブジェクトの特定

例えば、あるユーザーが画面上で伝票処理を行っているとき「ユーザーAは○○を処理中です」というエラーが表示されてしまい、原因がわからないというケースがあります。ABAPを触ったことがあれば何となく想像がつくかとは思いますが、このエラーはロックオブジェクトに関する内容です。

つまり、他のプログラムで対象のオブジェクトを変更中のため、排他制御がかかっている状態なのですね。このとき、どのプログラムでロックエントリが発生しているかを調べるには、SM12でロックエントリを特定します。続いてSM04を使用し、ロックエントリを使用しているユーザーがログイン中かどうかをチェック、必要であれば強制的にログアウトさせます。さらに、SM50でロックエントリを使用しているプロセスも停止させれば、エラーは発生しなくなるでしょう。

このようにSM12を使用すると、ロックオブジェクトが原因で処理が中断している場合に、ボトルネック部分を特定して解決することができます。

7./n/sdf/smon

/n/sdf/smonはサーバー単位でハードウェアリソースの使用状況を細かくチェックするためのツールです。事前にモニタリングする日時を指定しておく必要があるものの、ハードウェアリソースを俯瞰しながらパフォーマンスをチェックするには最適なツールですね。

以下は、/n/sdf/smonで取得可能な項目の例です。

 

CPU 使用率 (ユーザ単位)

CPU 使用率 (システム単位)

CPU 使用率 (アイドル)

CPUs Consumed

Available CPUs

RAM の空きメモリ (%)

空きメモリ (MB)

割り当てられた拡張メモリ (MB)

ヒープメモリ (MB)

ログイン数

セッション数

最終計測からの経過時間 (ms)

 

プログラムやトランザクション単位ではなく、もう少し広い視野でパフォーマンスをチェックしたいときに役立ちます。

8.パフォーマンスチェックはABAPプログラマ以外でも必須のスキル

今回は、SAP ERPにおけるパフォーマンスチェックの方法について解説してきました。パフォーマンスチェックは、開発のみならず、運用保守でも頻繁に行われます。また、プログラマ以外でもシステム上のボトルネックを特定できるため、ぜひとも活用したいところです。

 

LINEで送る
Pocket

SAP案件紹介や独立前相談

ほとんどのSAPコンサルタントの方は、独立すると、まずは当社へご登録いただいております。

60秒で無料登録

案件情報やSAP技術情報を
気軽に受け取る

メルマガ登録

つの情報を送るだけで案件紹介へ

    御氏名
    メールアドレス
    電話番号
    生年月日

    つの情報を送るだけで案件紹介へ

      御氏名
      メールアドレス
      電話番号
      生年月日