Application Integration でサポートされているコネクタをご覧ください。

SAP ERP トリガー

SAP ERP トリガーは、コネクタ イベント トリガーです。SAP ERP コネクタを使用すると、SAP ERP データに対して、挿入、削除、更新、読み取りオペレーションを遂行できます。

始める前に

  • SAP ERP トリガーの新しい接続を作成または構成する場合は、プロジェクトに対する次の IAM ロールがあることを確認してください。
    • コネクタ管理者(roles/connectors.admin
    • ロールの付与については、アクセスの管理をご覧ください。

  • SAP ERP トリガーに使用するサービス アカウントに、次の IAM ロールを付与します。
  • SAP ERP トリガーを追加する

    インテグレーションに SAP ERP トリガーを追加する手順は次のとおりです。

    1. Google Cloud コンソールで [Application Integration] ページに移動します。

      Application Integration に移動

    2. ナビゲーション メニューで [統合] をクリックします。

      [統合リスト] ページが開き、Google Cloud プロジェクトで使用可能なすべての統合が一覧表示されます。

    3. 既存の統合を選択するか、[統合の作成] をクリックして新しい統合を作成します。

      新しい統合を作成する場合:

      1. [統合の作成] ペインで名前と説明を入力します。
      2. 統合のリージョンを選択します。
      3. 統合用のサービス アカウントを選択します。統合のサービス アカウントの詳細は、統合ツールバーの [統合の概要] ペインでいつでも変更または更新できます。
      4. [作成] をクリックします。

      統合エディタで統合が開きます。

    4. 統合エディタのナビゲーション バーで、[トリガー] をクリックして、使用可能なトリガーのリストを表示します。
    5. 統合エディタで、[SAP ERP トリガー] 要素をクリックして配置します。
    6. SAP ERP トリガーを構成するには、Integration Connectors で使用可能な既存の SAP ERP 接続を使用するか、インライン接続作成オプションを使用して新しい SAP ERP 接続を作成します。

    既存の接続を使用して SAP ERP トリガーを構成する

    SAP ERP トリガーコネクタ イベント トリガーであるため、トリガーの構成にはイベント サブスクリプションを有効にした SAP ERP 接続のみが使用できます。

    新しい SAP ERP 接続を使用して SAP ERP トリガーを構成する方法については、新しい接続を使用して SAP ERP トリガーを構成するをご覧ください。

    既存の SAP ERP 接続を使用して SAP ERP トリガーを構成するには、次の手順を行います。

    1. 統合エディタで [SAP ERP トリガー] 要素をクリックして、トリガー構成ペインを開きます。
    2. [トリガーの構成] をクリックします。
    3. [Connector Event Trigger Editor] ページで、構成の詳細を次のとおりに入力します。
      1. リージョン: SAP ERP 接続のリージョンを選択します。
      2. 接続: 使用する SAP ERP 接続を選択します。

        Application Integration には、アクティブであり、イベント サブスクリプションが有効になっている SAP ERP 接続のみが表示されます。

      3. イベントタイプのフィールド名を入力します。このフィールドは、受信イベント リクエストに関連付けられているイベントのタイプを識別します。
        {
            "event_type": "user.created",
            ...
            // other request fields
            ...
            }
      4. サービス アカウント: SAP ERP トリガーに必要な IAM ロールを持つサービス アカウントを選択します。
    4. [Done] をクリックしてトリガーの構成を完了し、ページを閉じます。

    新しい接続を使用して SAP ERP トリガーを構成する

    1. 統合エディタで [SAP ERP トリガー] 要素をクリックして、トリガー構成ペインを開きます。
    2. [トリガーの構成] をクリックします。
    3. [リージョン] フィールドはスキップします。
    4. [接続] をクリックし、プルダウン メニューから [接続を作成] オプションを選択します。
    5. [接続の詳細] セクションで、次の操作を行います。
      1. Connector: 使用可能なコネクタのプルダウン リストから [SAP ERP] を選択します。
      2. コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
      3. [接続名] フィールドに、接続インスタンスの名前を入力します。

        接続名は次の条件を満たす必要があります。

        • 接続名には英字、数字、ハイフンを使用できます。
        • 文字は小文字のみを使用できます。
        • 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
        • 接続名は 49 文字以内で指定してください。
        • イベント サブスクリプションをサポートするコネクタの場合、接続名の先頭に接頭辞「goog」は使用できません。
      4. 必要に応じて、接続の [説明] を入力します。
      5. 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトでは、ログレベルは Error に設定されています。
      6. サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
      7. イベント サブスクリプションの接続を使用するには、[イベント サブスクリプションを有効にする] を選択します。これを選択すると、次のオプションが表示されます。
        • エンティティとアクションを使用したイベント サブスクリプションを有効にする: このオプションを選択すると、イベント サブスクリプションとコネクタ オペレーション(エンティティとアクション)の両方に対して接続が使用されます。
        • イベント サブスクリプションのみを有効にする: イベント サブスクリプションに対してのみ接続を使用するには、このオプションを選択します。このオプションを選択した場合は、[次へ] をクリックしてイベント サブスクリプションを構成します。
      8. Client: SAP システムを認証するクライアント。
      9. System Id: SAP システムのシステム ID または R3Name で、最大 3 文字の文字列です。ロード バランシング接続でよく使用されます。
      10. System Number: ターゲット システムを定める番号。ホスト接続プロパティを設定するときに使用されます。
      11. Project ID: SAP JCo jar を含む GCS バケットが存在する Google Cloud プロジェクトの ID。
      12. Bucket: sapjco3.jar ファイルと libsapjco3.so ファイルが含まれるバケットの名前
      13. Jaco jar オブジェクト ID: JCo jar のオブジェクト ID。
      14. libsapjco3 オブジェクト ID: libsapjco3 jar のオブジェクト ID。
      15. テーブルモード: ビューとして表示する SAP テーブルを選択します。
      16. SNC_LIB オブジェクト ID: SNC ライブラリのオブジェクト ID。
      17. PSE 名: バケットに適用される Personal Security Environment(PSE)ファイルの名前。PSE ファイルには、公開鍵と秘密鍵のペア、X.509 証明書が ASN.1 構造で保存されます。
      18. グループ: ログオンのグループ名。これは通常、SAP システムがロードバランサを使用している場合に指定されます。
      19. メッセージ サーバー: ロードバランサを使用する SAP システムへの接続時に使用するメッセージ サーバーの名前。
      20. 読み取りテーブル関数: テーブルの読み取りに使用される関数の名前。詳細については、カスタム読み取りテーブル関数を使用するをご覧ください。
      21. 接続スキーム: SAP システムへの接続に使用する接続スキームを選択します。
      22. システム ID: SAP システムのシステム ID または R3Name。最大 3 文字まで入力できます。
      23. SNC パスコード: SNC ライブラリ パスコードの Secret Manager の Secret を選択します。
      24. シークレットのバージョン: シークレットのバージョンを選択します。
      25. SNC モード: Application Integration と SAP システム間の認証用に SNC を有効にするには、このオプションを選択します。
      26. SNC 名: SNC 接続の名前を入力します。
      27. SNC qop: 保護レベルを選択します。サポートされているレベルは次のとおりです。
        • 1 - 認証のみを適用します。
        • 2 - 完全性保護を適用します。これには認証保護も含まれます。
        • 3 - プライバシー保護を適用します。これには完全性と認証の保護も含まれます。
        • 8 - デフォルトの保護を適用します。
        • 9 - 最大限の保護を適用します。
      28. SNC パートナー名: アプリケーション サーバーの SNC 名を入力します。
      29. クエリモード: ビューとして表示する必要がある SAP テーブルを選択します。
      30. 閲覧可能なビュー: 表示するビューのカンマ区切りリストを入力します。 例: ViewA,ViewB,ViewC
      31. 詳細レベル: ログの詳細レベルを入力します。サポートされている値は 1 ~ 5 です。値が大きいほど、ログの詳細が取得できることを意味します。
      32. 必要に応じて、接続ノードの設定を構成します。

        • ノードの最小数: 接続ノードの最小数を入力します。
        • ノードの最大数: 接続ノードの最大数を入力します。

        ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。

      33. 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
      34. [次へ] をクリックします。
    6. [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
      1. 宛先の種類: 宛先の種類を選択します。
        • リストから [ホストアドレス] を選択し、宛先のホスト名または IP アドレスを指定します。
        • バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。

        セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。

        他の宛先を入力するには、[+ 宛先を追加] をクリックします。

      2. [次へ] をクリックします。
    7. [認証] セクションで、認証の詳細を入力します。
      1. [認証タイプ] を選択し、関連する詳細を入力します。

        SAP ERP 接続でサポートされる認証タイプは、次のとおりです。

        • ユーザー名とパスワードを指定する
      2. これらの認証タイプの構成方法については、認証を構成するをご覧ください。

      3. [次へ] をクリックします。
    8. イベント サブスクリプションを有効にしている場合は、接続作成ページに [イベント サブスクリプションの詳細] セクションが表示されます。イベント サブスクリプションの詳細の構成方法については、イベント サブスクリプションを構成するをご覧ください。
    9. Review: 接続と認証の詳細を確認します。
    10. [作成] をクリックします。

    認証を構成する

    使用する認証に基づいて詳細を入力します。

    • ユーザー名とパスワード
      • ユーザー名: コネクタのユーザー名
      • パスワード: コネクタに関連付けられたパスワードを含む Secret Manager の Secret。

    イベント サブスクリプション用に構成する

    イベント サブスクリプションを有効にしている場合は、[イベント サブスクリプションの詳細] セクションに次の値を入力します。

    1. イベント リスナーに次のいずれかの認証タイプを選択します。
    2. イベントタイプのフィールド名を入力します。このフィールドは、受信イベント リクエストに関連付けられているイベントのタイプを識別します
      {
      "event_type": "user.created",
      ...
      // other request fields
      ...
      }
    3. バックエンド アプリケーションと接続間を安全に接続するには、[プライベート接続を有効にする] を選択します。このオプションを選択した場合は、接続の作成後に追加の構成手順を実行する必要があります。詳細については、イベント サブスクリプションのプライベート接続をご覧ください。
    4. デッドレター構成を入力します。デッドレターを構成すると、指定された Pub/Sub トピックに未処理のイベントが書き込まれます。次の詳細情報を入力します。
      1. デッドレター プロジェクト ID: デッドレター Pub/Sub トピックを構成した Google Cloud プロジェクト ID。
      2. デッドレター トピック: 未処理イベントの詳細を書き込む Pub/Sub トピック。

    カスタム読み取りテーブル関数を使用する

    RFC_READ_TABLE

    このコネクタは、SAP RFC_READ_TABLE 関数を使用して SAP テーブルからデータを取得します。

    ただし、これには制限があります。たとえば、DATA_BUFFER_EXCEEDED 例外について考えてみましょう。SAP RFC_READ_TABLE のサイズは 512 バイトに固定されています。データの各行をバッファに格納できるため、このバッファに収まる量を超える列を選択することはできません。512 バイト以上を選択すると、行あたに許容されている最大バッファサイズを超え、選択する列の数を少なくする必要があることを示す例外が発生します。

    RFC_READ_TABLE2

    SAP ERP コネクタは、RFC_READ_TABLE2 テーブル読み取り関数をサポートしています。ReadTableFunction/SAPDS/RFC_READ_TABLE2 に設定すると、アクティブなテーブル読み取り関数を RFC_READ_TABLE2 に切り替えることができます。

    カスタムの読み取りテーブル関数

    コネクタには、SAP RFC_READ_TABLE に類似したカスタム読み取りテーブル RFC、Z_CUSTOM_READ_TABLE が含まれています。ただし、DATA_BUFFER_EXCEEDED の問題に対処し、RFC_READ_TABLE の制限を回避するために、より大きなバッファを使用します。

    付属のカスタム読み取りテーブル RFC を使用して、デフォルトの RFC_READ_TABLE で制限をバイパスする手順は次のとおりです。

    1. 新しい関数のテンプレートとして RFC_READ_TABLE 関数を使用します。トランザクション コード SE37SDTX 関数グループを選択し、RFC_READ_TABLE を新しい関数グループまたは作業関数グループにコピーします。この例では、RFC_READ_TABLEZ_CUSTOM_READ_TABLE にコピーされます。
    2. SAP 画面の [属性] タブで、Remote Enabled Module を選択します。
    3. [Tables] タブで、DATA パラメータを CHAR8000 に設定します。画面を右クリックし、[表示] -> [変更] をクリックします。
    4. [ソースコード] タブで、インストール ディレクトリの db サブフォルダにある、置換用の RFC_READ_TABLE 関数モジュールのサンプル ソースコードを貼り付けます。このコードは Z_CUSTOM_READ_TABLE.txt にあります。ただし、SAP ERP インスタンスで ABAP バージョン 7.52 以降を実行している場合は、Z_CUSTOM_READ_TABLE_752.txt を使用することをおすすめします。
    5. [保存] をクリックします。
    6. 提供されたカスタム読み取りテーブルに記載されているように、インポート、テーブル、例外を定義します。
    7. 関数モジュールを有効にし、接続文字列で ReadTableFunctionZ_CUSTOM_READ_TABLE または関数モジュールの名前に設定します。

    ABAP 7.52 カスタム読み取りテーブル

    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 を使用することをおすすめします。

    SAP で認証を構成する

    オンプレミスまたはクラウド エディションの ABAP SDK for Google Cloud の認証の概要ガイドの手順に沿って、SAP で認証を構成します。

    トリガーを検証する

    トリガーを検証するには、ABAP プログラムを作成します。以下は、参照として使用できる ABAP プログラムのサンプルです。ls_event_payload フィールドは、要件に応じて変更されます。

    *&---------------------------------------------------------------------*
    *& Report ZR_TEST_INT_CONNECTOR
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT zr_test_int_connector.
    PARAMETERS: p_auth TYPE char1 RADIOBUTTON GROUP rbg1 USER-COMMAND uc DEFAULT 'X',
     p_apik TYPE char1 RADIOBUTTON GROUP rbg1.
    DATA:
     lv_p_projects_id TYPE string,
     lv_p_locations_id TYPE string,
     lv_p_connections_id TYPE string,
     ls_input TYPE /goog/cl_connectors_v1=>ty_103.
    TYPES: BEGIN OF event_payload,
     event_type TYPE string,
     event_id TYPE string,
     name TYPE string,
     org_id TYPE string,
     END OF event_payload.
    DATA: ls_event_payload TYPE event_payload.
    ls_event_payload = VALUE #(
     event_type = 'create-entity'
     event_id = '1'
     name = 'demo-org'
     org_id = 'SAP'
     ).
    TRY.
     IF p_Auth = abap_true.
     DATA(lv_client_key) = 'IC_DEMO_GOOGLE_AUTH'.
     lv_p_connections_id = 'conn-event-triggers-from-sap-erp'.
     ELSE.
     lv_client_key = 'IC_DEMO_GOOGLE_APIK'.
     lv_p_connections_id = 'conn-event-triggers-from-sap-erp-apik'.
     ENDIF.
    * Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_connectors_v1( iv_key_name = CONV #( lv_client_key ) ).
    * Populate relevant parameters
     lv_p_projects_id = lo_client->gv_project_id.
     lv_p_locations_id = 'us-central1'.
     GET REFERENCE OF ls_event_payload INTO ls_input-payload .
    * Call API method: connectors.projects.locations.connections.listenEvent
     CALL METHOD lo_client->listen_event_connections
     EXPORTING
    
    
    iv_p_projects_id = lv_p_projects_id
     iv_p_locations_id = lv_p_locations_id
     iv_p_connections_id = lv_p_connections_id
     is_input = ls_input
     IMPORTING
    * es_raw =
     es_output = DATA(ls_output)
     ev_ret_code = DATA(lv_ret_code)
     ev_err_text = DATA(lv_err_text)
     es_err_resp = DATA(ls_err_resp).
     IF lo_client->is_success( lv_ret_code ).
     MESSAGE 'Success' TYPE 'S'.
     ELSE.
     MESSAGE lv_err_text TYPE 'E'.
     ENDIF.
    * Close HTTP Connection
     lo_client->close( ).
     CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.
    ENDTRY.
    

    割り当てと上限

    割り当てと上限については、割り当てと上限をご覧ください。

    次のステップ