カスタム Read Table 関数の使用
RFC_READ_TABLE
connector は、SAP RFC_READ_TABLE 関数を使ってSAP テーブルからデータを取得します。しかし、これには一定の制限があります。
例えば、DATA_BUFFER_EXCEEDED 例外を考えてみます。SAP RFC_READ_TABLE は、512 バイトの固定サイズがあります。 データの各行に対してバッファできるため、このバッファに収まる量を超えるカラムを選択することはできません。 512 バイトを超えて選択した場合は、各行に許容された最大バッファサイズを超過したため選択するカラム数を減らす必要がある旨を示す例外が発生します。
RFC_READ_TABLE2
connector は、RFC_READ_TABLE2 テーブルリード関数もサポートします。ReadTableFunction を"/SAPDS/RFC_READ_TABLE2" に設定することで、アクティブなテーブルリード関数をRFC_READ_TABLE2 に切り替えることができます。
カスタムRead Table 関数
カスタムRead Table RFC のインストール
connector には、Z_CUSTOM_READ_TABLE コードが含まれます。これは、SAP RFC_READ_TABLE に類似していますが、DATA_BUFFER_EXCEEDED 問題に対処し、その他のRFC_READ_TABLE の制限を回避するためにより大きなバッファを備えたカスタムread-table RFC です。
下記の手順に従って、付属のカスタムread-table RFC を使ってデフォルトのRFC_READ_TABLE の制限を回避します。
- RFC_READ_TABLE 関数を新しい関数のテンプレートとして使用します。トランザクションコードSE37 とSDTX Function Group を選択し、RFC_READ_TABLE を新しい汎用グループまたはワーキングの汎用グループにコピーします。この例では、RFC_READ_TABLE は"Z_CUSTOM_READ_TABLE" にコピーされます。
- SAP 画面の[属性]タブで、"リモート対応モジュール" を選択します。
- [テーブル]タブで、DATA パラメータを"CHAR8000" に設定します(右クリックしてから"Display <-> Change" をクリックする必要がある場合があります)。
- [ソースコード]タブで、インストールディレクトリの"db" サブフォルダにあるRFC_READ_TABLE 汎用モジュールの代替サンプルソースコードを貼り付けます。コードはZ_CUSTOM_READ_TABLE.txt にありますが、SAP ERP インスタンスがABAP バージョン7.52以降を実行している場合は、Z_CUSTOM_READ_TABLE_752.txt が推奨されます(以下のセクションを参照してください)。[保存]をクリックします。
- インポート、テーブル、および例外を、提供されたカスタムread テーブルに記載されているとおりに定義します。
- 汎用モジュールをアクティベートし、接続文字列でReadTableFunction をZ_CUSTOM_READ_TABLE または汎用モジュール名に設定します。
ABAP 7.52 カスタムRead Table
Z_CUSTOM_READ_TABLE.txt と共に、ABAP バージョン7.52 以降に対応するZ_CUSTOM_READ_TABLE_752.txt ファイルも存在します。
これはほぼZ_CUSTOM_READ_TABLE と同じですが、ABAP 7.52 で新たに利用可能になったキーワードを利用して、ABAP スクリプト自体ではなく、データベース内でページングを実行します。これにより、ページングがはるかに効率的になり、大きなテーブルを扱う際に非常に顕著なパフォーマンスの向上が期待できます。
可能な限りZ_CUSTOM_READ_TABLE_752 RFC の使用が推奨されます。