SAP ERP 觸發條件

SAP ERP 觸發程序Connector Event 觸發程序。SAP ERP 連接器可讓您對 SAP ERP 資料執行插入、刪除、更新和讀取作業。

事前準備

  • 如要為 SAP ERP 觸發程序建立或設定新連線,請確認您在專案中具有下列 IAM 角色:
    • 連接器管理員 (roles/connectors.admin)
    • 如要瞭解如何授予角色,請參閱「管理存取權」。

  • 將下列 IAM 角色授予要用於 SAP ERP 觸發程序的服務帳戶:
    • Application Integration 叫用者 (roles/integrations.integrationInvoker)
    • 如要瞭解如何將角色授予服務帳戶,請參閱「管理服務帳戶的存取權」。

  • 新增 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 trigger」(SAP ERP 觸發條件) 元素,開啟觸發條件設定窗格。
    2. 按一下「設定觸發條件」
    3. 在「連結器事件觸發條件編輯器」頁面中,提供下列設定詳細資料:
      1. 「Region」(地區):選取 SAP ERP 連線的地區。
      2. 連線:選取要使用的 SAP ERP 連線。

        應用程式整合只會顯示有效且已啟用事件訂閱的 SAP ERP 連線。

      3. 輸入事件類型欄位名稱。這個欄位會指出與傳入事件要求相關聯的事件類型。
        {
            "event_type": "user.created",
            ...
            // other request fields
            ...
            }
      4. 服務帳戶:選取具有 SAP ERP 觸發程序必要 IAM 角色的服務帳戶。
    4. 按一下「完成」即可完成觸發條件設定並關閉頁面。

    使用新連線設定 SAP ERP 觸發條件

    1. 在整合服務編輯器中,按一下「SAP ERP trigger」(SAP ERP 觸發條件) 元素,開啟觸發條件設定窗格。
    2. 按一下「設定觸發條件」
    3. 略過「Region」(區域) 欄位。
    4. 按一下「連線」,然後從下拉式選單中選取「建立連線」選項。
    5. 在「連線詳細資料」部分,完成下列步驟:
      1. 連接器:從可用連接器的下拉式清單中選取「SAP ERP」
      2. 連接器版本:從可用版本的下拉式清單中選取連接器版本。
      3. 在「連線名稱」欄位中,輸入連線執行個體的名稱。

        連線名稱必須符合下列條件:

        • 連線名稱可使用英文字母、數字或連字號。
        • 字母必須為小寫。
        • 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
        • 連結名稱不得超過 49 個字元。
        • 如果連接器支援事件訂閱,連接名稱開頭不得為「goog」前置字串。
      4. 視需要輸入連線的「Description」(說明)
      5. 或者,可啟用 Cloud Logging,然後選取記錄層級。記錄層級預設為 Error
      6. 服務帳戶:選取具備必要角色的服務帳戶。
      7. 如要將連線用於事件訂閱,請選取「啟用事件訂閱」。選取這個選項後,會顯示下列選項:
        • 啟用事件訂閱功能,並使用實體和動作:選取這個選項,即可將連線用於事件訂閱和連接器作業 (實體和動作)。
        • 僅啟用事件訂閱:選取這個選項,即可僅將連線用於事件訂閱。如果選取這個選項,請按一下「下一步」,然後設定事件訂閱
      8. 用戶端:向 SAP 系統驗證的用戶端。
      9. 系統 ID:SAP 系統的系統 ID 或 R3Name 是字串,最多可有三個字元。這項功能通常用於負載平衡連線。
      10. 系統編號:定義目標系統的編號。設定主機連線屬性時使用。
      11. 專案 ID:包含 SAP JCo JAR 的 GCS 值區所屬 Google Cloud 專案的 ID。
      12. Bucket:包含 sapjco3.jar 和 libsapjco3.so 檔案的 bucket 名稱。
      13. JCo JAR Cloud Storage 路徑:JCo JAR 的 Cloud Storage 路徑。
      14. libsapjco3 Cloud Storage 路徑:libsapjco3 JAR 的 Cloud Storage 路徑。
      15. 表格模式:選取要以檢視畫面顯示的 SAP 表格。
      16. 讀取資料表函式:用於讀取資料表的函式名稱。詳情請參閱「使用自訂讀取資料表函式」。
      17. 系統 ID:SAP 系統的系統 ID 或 R3Name。最多可輸入 3 個半形字元。
      18. 查詢模式:選取要以檢視區塊顯示的 SAP 資料表。
      19. 可瀏覽的檢視畫面:輸入要顯示的檢視畫面清單 (以半形逗號分隔)。 例如:ViewA,ViewB,ViewC
      20. 語言:將這個屬性設為登入 SAP 時指定的語言。這個屬性是 SAP 系統使用的語言 ISO 639-1 代碼。根據預設,系統會使用 EN。
      21. 服務項目:連線要使用的服務項目。
      22. SNC 模式:選取這個選項,即可為應用程式整合與 SAP 系統之間的驗證啟用 SNC。如果選取這個選項,請指定下列詳細資料:
        • SNC_LIB 物件 ID:SNC 程式庫的物件 ID。
        • PSE 名稱:適用於 bucket 的個人安全環境 (PSE) 檔案名稱。PSE 檔案會以 ASN.1 結構儲存公開和私密金鑰組,以及 X.509 憑證。
        • SNC 密碼:選取 SNC 程式庫密碼的 Secret Manager 密鑰。
        • 密鑰版本:選取密鑰版本。
        • SNC 名稱:輸入 SNC 連線的名稱。
        • SNC qop:選取防護等級。支援的層級如下:
          • 1 - 僅套用驗證。
          • 2 - 採用完整性防護措施。包括驗證保護機制。
          • 3 - 適用隱私權保護措施。這也包括完整性和驗證保護。
          • 8 - 套用預設保護措施。
          • 9 - 套用最高保護等級。
        • SNC 合作夥伴名稱:輸入應用程式伺服器的 SNC 名稱。
      23. 連線配置:指定您要連線至訊息伺服器 (群組伺服器) 或應用程式伺服器的 SAP 系統。如要瞭解透過訊息伺服器連線至 SAP 系統的必要條件,請參閱「訊息伺服器 (群組伺服器) 連線類型」。

        如果選取「GroupServer」GroupServer,則必須指定下列詳細資料:

        • 訊息伺服器:連線至使用負載平衡的 SAP 系統時,請指定訊息伺服器。
        • 訊息伺服器服務:要連線的訊息伺服器服務。
        • 群組:使用的登入群組。只有在連線至使用負載平衡的 SAP 系統時,才需要指定這個值。

        如果您要連線至使用訊息伺服器 (群組伺服器) 的 SAP 系統,則不需要在「目的地」部分指定主機位址。

      24. 視需要設定「連線節點設定」

        • 節點數量下限:輸入連線節點數量下限。
        • 節點數量上限:輸入連線節點數量上限。

        節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連線器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。

      25. (選用) 按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
      26. 點選「下一步」
    6. 在「目的地」部分,輸入要連線的遠端主機 (後端系統) 詳細資料。如果您要連線至使用訊息伺服器的 SAP 系統,則不需要指定主機位址。
      1. 目的地類型:選取目的地類型
        • 從清單中選取「主機地址」,指定目的地的主機名稱或 IP 位址。
        • 如要與後端系統建立私人連線,請從清單中選取「端點附件」,然後從「端點附件」清單中選取所需端點附件。

        如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。

        如要輸入其他目的地,請按一下「+新增目的地」

      2. 點選「下一步」
    7. 在「Authentication」(驗證) 部分,輸入驗證詳細資料。
      1. 選取「驗證類型」,然後輸入相關詳細資料。

        SAP ERP 連線支援下列驗證類型:

        • 以 X509 憑證為基礎的驗證
        • 使用者名稱和密碼
      2. 如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。

      3. 點選「下一步」
    8. 如果已啟用事件訂閱功能,連線建立頁面會顯示「事件訂閱詳細資料」部分。如要瞭解如何設定事件訂閱詳細資料,請參閱「設定事件訂閱」。
    9. 檢查:檢查連線和驗證詳細資料。
    10. 點選「建立」

    設定驗證機制

    根據要使用的驗證方式輸入詳細資料。

    • 以 X509Certificate 為基礎的驗證
      • X509Certificate:用於登入的 X509 憑證。
      • 密鑰版本:選取密鑰版本。
    • 使用者名稱和密碼
      • 使用者名稱:連接器的使用者名稱
      • 密碼:Secret Manager 密鑰,內含與連接器相關聯的密碼。

    設定事件訂閱

    啟用事件訂閱功能後,您必須設定 ABAP SDK。如要瞭解如何設定 ABAP SDK,請參閱「Google Cloud ABAP SDK 總覽」。

    在「Event Subscription Details」(事件訂閱詳細資料) 區段中,輸入下列值:

    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 資料表讀取函式。您可以將有效資料表讀取函式切換為 RFC_READ_TABLE2,方法是將 ReadTableFunction 設為 /SAPDS/RFC_READ_TABLE2

    自訂讀取資料表函式

    這個連接器包含自訂的讀取資料表 RFC Z_CUSTOM_READ_TABLE,與 SAP RFC_READ_TABLE 類似,但緩衝區較大,可解決 DATA_BUFFER_EXCEEDED 問題並略過 RFC_READ_TABLE 限制。

    如要使用內含的自訂讀取資料表 RFC 略過預設 RFC_READ_TABLE 的限制,請按照下列步驟操作:

    1. 使用 RFC_READ_TABLE 函式做為新函式的範本。選取交易代碼 SE37SDTX 函式群組,然後將 RFC_READ_TABLE 複製到新的函式群組或工作函式群組。在本範例中,RFC_READ_TABLE 會複製到 Z_CUSTOM_READ_TABLE
    2. 在 SAP 畫面的「屬性」分頁中,選取 Remote Enabled Module
    3. 在「資料表」分頁中,將 DATA 參數設為 CHAR8000。在畫面上按一下滑鼠右鍵,然後依序點選「Display」->「Change」
    4. 在「原始碼」分頁中,貼上位於安裝目錄 db 子資料夾的替代 RFC_READ_TABLE 函式模組範例原始碼。程式碼位於 Z_CUSTOM_READ_TABLE.txt 中,但如果 SAP ERP 例項執行的是 ABAP 7.52 以上版本,則建議使用 Z_CUSTOM_READ_TABLE_752.txt
    5. 按一下 [儲存]
    6. 請按照提供的自訂讀取資料表文件,定義匯入內容、資料表和例外狀況。
    7. 啟用函式模組,並在連線字串中將 ReadTableFunction 設為 Z_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 中設定驗證

    請按照「Google Cloud ABAP SDK 地端或任何雲端版本的驗證總覽」指南中的操作說明,在 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.
    

    配額與限制

    如要瞭解配額和限制,請參閱「配額與限制」。

    後續步驟