SAP ERP のパフォーマンス最適化
この記事では、SAP ERP(Netweaver)ドライバーのパフォーマンスを改善するためのいくつかの方法をご紹介します。
Date Entered: 2/10/2020 Last Updated: 2/10/2020 Author: Andrew Gill
SAP ERP を操作する際にパフォーマンスが低下する主な原因は、デフォルトのページング動作にあります。この問題は、ドライバーが SAP テーブルをページングする際に、オフセット値を基盤となるデータベースに渡すことができないために発生します。
その結果、各ページはリクエストのたびにオフセット 0 から開始しなければならず、ページが進むにつれて処理時間が長くなっていきます。
解決策 1: カスタムテーブル読み取りファンクションを使用する
パフォーマンスを改善するには、まず ABAP/カーネルバージョンを確認してください。
シナリオ 1: ABAP バージョン 7.52 以上
ABAP/カーネルバージョンが7.52 以上の場合は、インストールディレクトリの db サブディレクトリに含まれている Z_CUSTOM_READ_TABLE_752 ファンクションを使用できます。
このカスタムテーブル読み取りファンクションは、バージョン 7.52 で導入された新しい ABAP キーワードを使用して次のページへのオフセットを渡すことで、SAP ERP のページング問題を解消します。SAP インスタンスがこのファンクションをサポートしている場合、これが最も大きなパフォーマンス改善をもたらします。
シナリオ 2: ABAP バージョン 7.52 未満
ABAP/カーネルバージョンが7.52 未満の場合、改善されたページング(オフセットの受け渡し)を有効にする方法はありません。ただし、以下で説明するいくつかの方法で、ある程度のパフォーマンス改善を達成できます。
この場合は、(Z_CUSTOM_READ_TABLE_752 ではなく)Z_CUSTOM_READ_TABLE ファンクションを使用してください。
Z_CUSTOM_READ_TABLE 自体はパフォーマンスを向上させるものではありませんが、バッファサイズを設定できるようになるため、下記の解決策 2 でパフォーマンスを調整できます。
カスタム読み取りファンクションのインストール
Z_CUSTOM_READ_TABLE または Z_CUSTOM_READ_TABLE_752 を選択したら、以下の手順でインストールを行います。
- RFC_READ_TABLE ファンクションを新しいファンクションのテンプレートとして使用します。トランザクションコード SE37 と SDTX ファンクショングループを選択し、RFC_READ_TABLE を新しいファンクショングループまたは作業用ファンクショングループにコピーします。
- SAP 画面の「属性」タブで、「リモート有効モジュール」を選択します。
- 「テーブル」タブで、DATA パラメータを「CHAR8000」に設定します(右クリックして「表示 <-> 変更」をクリックする必要がある場合があります)。
- 「ソースコード」タブで、インストールディレクトリの「db」サブフォルダにある RFC_READ_TABLE ファンクションモジュール置換用のサンプルソースコードを貼り付けます。コードは、選択に応じて Z_CUSTOM_READ_TABLE.txt または Z_CUSTOM_READ_TABLE_752.txt に含まれています。「保存」をクリックします。
- 提供されているカスタム読み取りテーブルに記載されているとおりに、imports、tables、exceptions を定義します。
- ファンクションモジュールをアクティブ化し、接続文字列で ReadTableFunction を Z_CUSTOM_READ_TABLE または Z_CUSTOM_READ_TABLE_752(該当するファンクション名)に設定します。
解決策 2: バッファサイズを小さくする
バッファサイズを必要に応じた量に減らします。バッファサイズが小さいほど処理が速くなります。
バッファサイズを変更するには、まずカスタムテーブル読み取りファンクションを使用している必要があります。
カスタムテーブル読み取りファンクションは、db フォルダにある Z_CUSTOM_READ_TABLE.txt または Z_CUSTOM_READ_TABLE_752.txt を開き、180 行目付近にある次の値を変更して設定します:
DATA: BEGIN OF WORK, BUFFER(30000), END OF WORK.
解決策 3: ページサイズを大きくする
Pagesize 接続プロパティで、より大きなページサイズを設定します。ページサイズが大きいほどページ数が減り、オフセット 0 へのリセット回数も減少します。
ページサイズを大きくするほどパフォーマンスは継続的に向上しますが、ページサイズはマシンのメモリが処理できる範囲内でのみ増やすことができます。
解決策 4: フィルターを適用する
場合によっては、フィルターを適用することでパフォーマンスを大幅に改善できます。フィルターを使用すると、データをより小さなチャンクで取得できるため、処理するデータのページ数が減少します。例えば、特定のテーブルからの結果のみに絞り込むことができます:
SELECT * FROM DD02T WHERE TABNAME >= 'A' AND TABNAME < 'B'
SELECT * FROM DD02T WHERE TABNAME >= 'B' AND TABNAME < 'C'
We appreciate your feedback. If you have any questions, comments, or suggestions about this entry, please contact our support team at support@cdata.co.jp.