Skip to main content

 

 

 

 

Template:OutSystems/Documentation_KB/Breadcrumb_New_Layout

 

 

Template:OutSystems/OSLanguageSwitcher

 

 

 

OutSystems

SAPステートレスコールを実行する

一部のSAP BAPIリモート関数は、データベースの変更のコミットを必要としません。しかし、OutSystemsプラットフォームは特定のSAPリモート関数がコミットを必要とするかどうかを検出する手段を持たないため、デフォルトでは、SAPリモート関数が呼び出されるたびに新しいトランザクションを作成し、トランザクションの終了前に変更をコミットします。

プラットフォームにより作成されるこのトランザクションの存在により、暗黙的にコミット済みであるかコミットが不要な古いBAPIを呼び出す場合、パフォーマンスが低下する可能性があります。

このパフォーマンス上の問題を解消するには、以下の手順を実行し、SAPのステートレス領域を管理するエクステンションモジュールを作成します。

  1. SAP Extensibility APIを使用して、SAPのステートレス接続の処理を行うエクステンションモジュールを作成します。
  2. Service Studioのアプリケーションモジュールで、エクステンションのアクションに依存関係を追加します。
  3. アプリケーションでSAPステートレスコールを実行するロジックを実装します。

SAP用のエクステンションモジュールを作成する

  1. OutSystems Forgeで入手可能なSAPユーティリティコンポーネントを取得します。これは、SAP用のエクステンションモジュールを持つサンプルコンポーネントです。このモジュールにはステートフルコールとステートレスコールの両方を処理するためのアクションが含まれます。

    注記: このエクステンションはSAP Extensibility APIを利用するため、その要件を満たしていることを確認してください。

  2. エクステンションをパブリッシュします。

モジュールのエクステンションのアクションに依存関係を追加する

アプリケーションでステートレスコールを実装するには、エクステンションの次のアクションへの参照を追加します。

  • BeginStatelessRegion: SAPのステートレス接続領域を開始します。
  • EndStatelessRegion: SAPのステートレス接続領域を終了します。

詳細については、モジュールで公開された要素を使用する方法をご覧ください。

ステートレスコールを実行するロジックを実装する

上記のエクステンションのアクションとSAPリモート機能を組み合わせて使用し、ステートレスコールを実装します。

CreateContextアクションで手動コンテキストが作成された場合を除き、ステートレス領域内のすべてのコールがステートレス接続で行われます。

以下の例では、コミットが不要なSAPのリモート関数を使用します。

  1. メインフローで以下の要素を使用し、アクションにステートレスコールを実装します。

    BeginStatelessRegion
    SAPのステートレス接続領域を開始します。
    BAPI_SelectedMethod
    操作を実行するSAPリモート関数の例。データベースのコミットが不要です。
    EndStatelessRegion
    SAPのステートレス接続領域を終了します。
  2. 例外処理フローに、以下の要素を追加します。

    EndStatelessRegion
    SAPのステートレス接続領域を終了します。

SAPステートレスコールの例

  • Was this article helpful?