SAP Gateway
您可以使用 SAP Gateway 連接器,對 SAP Gateway 資料庫執行插入、刪除、更新和讀取作業。
支援的版本
這個連接器使用 SAP Gateway API,雙向存取使用閘道的 SAP 服務。支援的 SAP 版本如下:
- S/4 HANA Cloud
- S/4 HANA
- SAP ERP
- 支援 SAP Gateway API 的任何其他 SAP 版本
事前準備
使用 SAP Gateway 連接器前,請先完成下列工作:
- 在 Google Cloud 專案中:
- 確認已設定網路連線。如要瞭解網路模式,請參閱「網路連線」。
- 將 roles/connectors.admin IAM 角色授予設定連線器的使用者。
- 將下列 IAM 角色授予要用於連接器的服務帳戶:
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
服務帳戶是特殊的 Google 帳戶類型,主要用於代表需要驗證且必須取得授權才能存取 Google API 資料的非人類使用者。如果您沒有服務帳戶,請建立服務帳戶。詳情請參閱「建立服務帳戶」。
- 啟用下列服務:
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
如要瞭解如何啟用服務,請參閱「啟用服務」。
如果專案先前未啟用這些服務或權限,系統會在設定連結器時提示您啟用。
在 S/4HANA 內部部署環境中設定 SAP OData 服務
如要在 S/4HANA On-Premise 上設定 SAP OData 服務,請完成下列工作:
- 啟用 ICM 服務
- 啟用 SAP Gateway
- 啟用 OData 服務
- 在 SAP 伺服器上測試已啟用的 OData 服務
啟用 ICM 服務
SAP OData 服務透過 HTTP 或 HTTPS 通訊協定運作。因此,請確保網際網路通訊管理員 (ICM) 中已啟用相關服務。使用 HTTPS 保護傳輸中的資料。
- 前往交易 SMICM。
- 前往「服務」。
- 依序點選「服務」>「建立」。
- 定義新服務。
- 設定 HTTP 和 HTTPS 通訊協定的其餘參數。
定義服務通訊埠時,系統會根據 SAP 系統預先填入部分參數。
啟用 SAP Gateway
如要啟用 SAP Gateway,請按照下列步驟操作:
- 前往 SPRO 交易,然後選取「SAP Reference IMG」。
- 依序展開節點「SAP NetWeaver」>「SAP Gateway」>「OData Channel」>「Configuration」>「User Settings」>「Connection Settings」>「Activate or Deactivate SAP Gateway」,然後按一下滑鼠右鍵並選取「Edit Activity」。
- 點選 [Activate] (啟用),如果對話方塊中顯示「SAP Gateway is currently active」(SAP Gateway 目前處於啟用狀態) 訊息,請按一下「取消」。
啟用 OData 服務
如要啟用 OData 服務,請按照下列步驟操作。
- 前往交易 SICF。
- 按一下「執行」 (或按下 F8 鍵)。
- 在選取畫面中略過「篩選」。
- 依序前往樹狀節點 default_host > sap > opu > OData,啟用所有 OData (V2) 服務。
- 在樹狀結構中,前往對應的節點,即可啟用個別服務。
- 在 OData 服務節點上按一下滑鼠右鍵,然後選取「啟用」。
在 SAP 伺服器上測試已啟用的 OData 服務
使用 SAP Gateway Client 工具執行 OData 要求。
呼叫下列交易來啟動工具:/n/IWFND/GW_CLIENT
- 指定 OData 要求 URI。
- 選取 HTTP 方法、通訊協定 (HTTP 或 HTTPS)、要求標頭和要求主體。
- 輸入所有必要要求資料後,按一下「執行」即可傳送要求。
執行後,系統會顯示回應標頭和回應資料。
在 S/4HANA Cloud 上設定 SAP OData 服務
如要在 S/4HANA Cloud 上設定 SAP OData 服務,請完成下列工作:
- 建立通訊使用者
- 建立通訊系統
- 建立通訊安排
建立通訊使用者
通訊使用者是一種特殊的技術使用者,用於外部 OData 服務呼叫。這項使用者只能用於 SAP 與外部系統的通訊,無法使用 SAP GUI 登入。您可以在雲端使用「維護通訊使用者」應用程式定義這些設定。
- 前往「Maintain Communication Users」應用程式。
- 按一下「新增」建立新使用者。
- 輸入使用者的使用者名稱和說明。
- 輸入密碼。使用「建議密碼」產生密碼。
- 點選「建立」。
建立通訊系統
通訊系統是系統的規格,代表通訊合作夥伴和通訊所需的所有技術資訊,例如主機名稱/IP 位址、身分、使用者資訊和憑證。在 S/4HANA Cloud 系統中,這些實體是外部通訊的必要條件。您可以在 Cloud 中使用「通訊系統」應用程式定義這些設定。
- 前往「通訊系統」應用程式。
- 按一下「新增」即可建立新的通訊系統。
- 輸入系統 ID 和系統名稱。
- 按一下「+」,新增已建立的通訊使用者,用於接收通訊。輸入通訊使用者的詳細資料。
- 按一下 [儲存]。
所謂的「傳入通訊」,是指通訊合作夥伴從外部呼叫 SAP S/4HANA 系統時,會使用已定義的系統。
建立通訊安排
如要瞭解通訊安排,請參閱「 通訊安排」。
- 前往「Communication Arrangements」應用程式。
- 按一下「新增」即可建立新的通訊安排。
- 選取通訊情境,輸入安排名稱,然後按一下「建立」。
- 新增通訊系統,然後選取要在這項通訊安排中使用的通訊使用者。
- 呼叫 OData 服務的網址位於通訊安排中,格式如下:https://
-api.s4hana.ondemand.com/sap/opu/odata/sap/ - 點選「儲存」。
設定連線
連線專屬於資料來源。也就是說,如果您有多個資料來源,則必須為每個資料來源建立個別的連線。如要建立連線,請按照下列步驟操作:
- 在 Cloud 控制台中,前往「Integration Connectors」>「Connections」頁面,然後選取或建立 Google Cloud 專案。
- 按一下「+ 建立新連線」,開啟「建立連線」頁面。
- 在「位置」部分中,選擇連線位置。
- 區域:從下拉式清單中選取位置。
如需所有支援的地區清單,請參閱「位置」一文。
- 點按「下一步」。
- 區域:從下拉式清單中選取位置。
- 在「連線詳細資料」部分,完成下列步驟:
- 連接器:從可用連接器的下拉式清單中選取「SAP Gateway」。
- 連接器版本:從可用版本的下拉式清單中選取連接器版本。
- 在「連線名稱」欄位中,輸入連線執行個體的名稱。
連線名稱必須符合下列條件:
- 連線名稱可使用英文字母、數字或連字號。
- 字母必須為小寫。
- 連線名稱開頭須為英文字母,結尾則須為英文字母或數字。
- 連結名稱不得超過 49 個字元。
- 如果連接器支援事件訂閱,連接名稱開頭不得為「goog」前置字串。
- 視需要輸入連線執行個體的「Description」(說明)。
- 服務帳戶:選取具備必要角色的服務帳戶。
- 如要將連線用於事件訂閱,請選取「啟用事件訂閱」。選取這個選項後,會顯示下列選項:
- 啟用事件訂閱功能,並使用實體和動作:選取這個選項,即可將連線用於事件訂閱和連接器作業 (實體和動作)。
- 只啟用事件訂閱項目:選取這個選項,即可只將連線用於事件訂閱。如果選取這個選項,請按一下「下一步」,然後設定事件訂閱。
- 命名空間:指定要從哪個服務命名空間擷取資料。如果網址中未指定服務,則必須提供這項資訊。
- 服務:指定要從哪個服務擷取資料。如果網址中未指定服務,則必須提供這項資訊。
- CustomUrlParams:指定要納入 HTTP 要求中的自訂查詢字串參數。參數必須編碼為查詢字串,格式如下:
field1=value1&field2=value2
。查詢字串中的值必須經過網址編碼。 - 資料格式:擷取資料時使用的資料格式。選取 XML 或 JSON。
- 使用顯示名稱:布林值,用於判斷是否使用 SAP 標籤。
- 視需要設定「連線節點設定」:
- 節點數量下限:輸入連線節點數量下限。
- 節點數量上限:輸入連線節點數量上限。
節點是用來處理交易的連線單位 (或備用資源)。連線處理的交易量越多,就需要越多節點;反之,處理的交易量越少,需要的節點就越少。如要瞭解節點對連接器定價的影響,請參閱「 連線節點定價」。如未輸入任何值,系統預設會將節點下限設為 2 (提高可用性),節點上限則設為 50。
- 選用:按一下「+ 新增標籤」,以鍵/值組合的形式為連線新增標籤。
- 點按「下一步」。
- 在「目的地」部分,設定 SAP Gateway 環境的網址,或 OData 服務的完整網址。格式範例:
${ENVIRONMENT_URL}/sap/opu/odata/${NAMESPACE}/${SERVICE}/
,網址範例:https://sapes5.sapdevcenter.com/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/
。使用 CustomUrlParams 屬性新增任何其他屬性。- 目的地類型:選取目的地類型。
- 如要指定目的地主機名稱或 IP 位址,請選取「主機地址」,然後在「主機 1」欄位中輸入地址。
- 如要建立私人連線,請選取「Endpoint attachment」(端點連結),然後從「Endpoint Attachment」(端點連結) 清單中選擇所需連結。
如要建立與後端系統的公開連線,並加強安全性,建議為連線設定靜態輸出 IP 位址,然後設定防火牆規則,只允許特定靜態 IP 位址。
如要輸入其他目的地,請按一下「+新增目的地」。
- 點按「下一步」。
- 目的地類型:選取目的地類型。
-
在「Authentication」(驗證) 部分中,輸入驗證詳細資料。
- 選取「驗證類型」並輸入相關詳細資料。
SAP Gateway 連線支援下列驗證類型:
- 使用者名稱和密碼
- 匿名
- SAP BTP (OAuth 2.0 - 用戶端憑證)
- 點按「下一步」。
如要瞭解如何設定這些驗證類型,請參閱「設定驗證」。
- 選取「驗證類型」並輸入相關詳細資料。
- 檢查:檢查連線和驗證詳細資料。
- 點選「建立」。
設定驗證機制
根據要使用的驗證方式輸入詳細資料。
-
使用者名稱和密碼
- 使用者名稱:連接器的使用者名稱
- 密碼:Secret Manager 密鑰,內含與連接器相關聯的密碼。
-
匿名
如要使用匿名登入,請選取「不適用」。
- API 金鑰:目前已通過驗證的使用者 API 金鑰。
-
SAP BTP (OAuth 2.0 - 用戶端憑證)
- 用戶端 ID:輸入從 API 用戶端頁面取得的用戶端 ID。
- 用戶端密鑰:輸入從 API 用戶端頁面取得的用戶端密鑰。
- 密鑰版本:輸入上方所選密鑰的密鑰版本。
- OAuthAccessTokenURL:輸入 OAuth 存取權杖的網址。
- 目的地名稱:輸入 SAP BTP 目的地的名稱。
- 到達網頁網址:輸入 SAP BTP 的到達網頁網址。
- 啟用驗證覆寫:選取這個選項,即可在執行階段動態接受不同的驗證。
設定事件訂閱
如果您已啟用事件訂閱功能,請在「Event Subscription Details」(事件訂閱詳細資料) 區段中輸入下列值:
- 為事件監聽器選取下列任一驗證類型。
- Google 驗證。 啟用這個選項後,請按照「使用 JSON Web Token 進行驗證」一文中的步驟,設定 ABAP SDK 的驗證。此外,請確保服務帳戶具有 roles/connectors.listener 角色,其存取權杖用於驗證。
- API 金鑰驗證。如選取這個選項,您必須先建立 API 金鑰,然後將金鑰儲存為 Secret Manager 密鑰。詳情請參閱「建立 API 金鑰」。
- 輸入事件類型欄位名稱。這個欄位會指出與傳入事件要求相關聯的事件類型。
{ "event_type": "user.created", ... // other request fields ... }
- 選取「啟用私人連線」,在後端應用程式和連線之間建立安全連線。如果選取這個選項,您必須在建立連線後執行額外設定步驟。詳情請參閱「活動訂閱的私人連線」。
- 輸入無法傳送郵件的設定。如果設定無效信件,連線會將未處理的事件寫入指定的 Pub/Sub 主題。輸入下列詳細資料:
- 無法傳送的訊息專案 ID: 您已設定無法傳送的訊息 Pub/Sub 主題的 Google Cloud 專案 ID。
- 無效信件主題: 要寫入未處理事件詳細資料的 Pub/Sub 主題。
連線設定範例
本節提供範例值,說明建立 SAP 閘道連接器時設定的各個欄位。
基本驗證 - 連線類型
欄位名稱 | 詳細資料 |
---|---|
區域 | us-central1 |
連接器 | SAP Gateway Connector |
連接器版本 | 1 |
連接器名稱 | sapgateway-basicauth-conn |
服務帳戶 | SERVICE_ACCOUNT-compute@developer.gserviceaccount.com |
資料格式 | JSON |
詳細程度 | 5 |
主機地址 | http://192.0.2.0/sap/opu/odata/sap/HOST_ADDRESS |
驗證: | 使用者密碼 |
使用者名稱 | 使用者名稱 |
密碼 | 密碼 |
版本 | 1 |
API 權杖 - 連線類型
欄位名稱 | 詳細資料 |
---|---|
區域 | us-central1 |
連接器 | SAP Gateway Connector |
連接器版本 | 1 |
連接器名稱 | sapgateway-api-token-conn |
服務帳戶 | SERVICE_ACCOUNT-compute@developer.gserviceaccount.com |
資料格式 | JSON |
詳細程度 | 5 |
主機地址 | http://192.0.2.0/sap/opu/odata/sap/HOST_ADDRESS |
API 金鑰 | API_KEY-example-pet-store.com |
版本 | 1 |
Proxy - 連線類型
欄位名稱 | 詳細資料 |
---|---|
區域 | us-central1 |
連接器 | SAP Gateway Connector |
連接器版本 | 1 |
連接器名稱 | sapgateway-basicauth-conn |
服務帳戶 | SERVICE_ACCOUNT-compute@developer.gserviceaccount.com |
資料格式 | JSON |
詳細程度 | 5 |
主機地址 | http://192.0.2.0/sap/opu/odata/sap/HOST_ADDRESS |
資料格式: | JSON |
詳細程度: | 5 |
Proxy | 是 |
Proxy SSL 類型 | 自動 |
Proxy 伺服器 | 34.148.1.XX:XXXX |
主機地址: | http://192.0.2.0/sap/opu/odata/sap/HOST_ADDRESS |
驗證: | 使用者密碼 |
使用者名稱 | 使用者名稱 |
密碼: | 密碼 |
版本 | 1 |
SAP BTP (OAuth 2.0 - 用戶端憑證) - 連線類型
欄位名稱 | 詳細資料 |
---|---|
區域 | us-central1 |
連接器 | SAP Gateway Connector |
連接器版本 | 1 |
連接器名稱 | sap-gateway-oauth-client-connection |
服務帳戶 | SERVICE_ACCOUNT-compute@developer.gserviceaccount.com |
資料格式 | JSON |
主機地址: | https://my-api.s4hana.cloud.sap/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV |
驗證: | SAP BTP |
用戶端 ID | CLIENT_ID |
用戶端密鑰 | CLIENT_SECRET |
OAuthAccessTokenURL | https://atrial.authentication.us10.hana.ondemand.com/oauth/token |
目的地名稱 | DESTINATION_NAME |
到達網頁網址 | https://destination-configuration.cfapps.us10.hana.ondemand.com/destination-configuration/v1/destinations/Google |
版本 | 1 |
實體、作業和動作
所有整合連接器都會為所連應用程式的物件提供抽象層。您只能透過這個抽象化程序存取應用程式的物件。抽象化會以實體、作業和動作的形式呈現。
- 實體: 實體可以視為已連結應用程式或服務中的物件,或是屬性集合。實體的定義因連接器而異。舉例來說,在資料庫連接器中,資料表是實體;在檔案伺服器連接器中,資料夾是實體;在訊息系統連接器中,佇列是實體。
不過,連接器可能不支援或沒有任何實體,在這種情況下,
Entities
清單會是空白。 - 作業: 作業是指您可以在實體上執行的活動。您可以對實體執行下列任一操作:
從可用清單中選取實體,系統會產生該實體可用的作業清單。如需作業的詳細說明,請參閱 Connectors 工作的實體作業。 不過,如果連接器不支援任何實體作業,系統就不會在
Operations
清單中列出這些不支援的作業。 - 動作: 動作是透過連接器介面提供給整合的第一類函式。動作可讓您變更一或多個實體,且因連接器而異。一般來說,動作會有一些輸入參數和輸出參數。不過,連接器可能不支援任何動作,此時
Actions
清單會是空白。
系統限制
- 每個節點的 SAP Gateway 連接器每秒最多可處理 9 筆交易。
如要瞭解 Integration Connectors 適用的限制,請參閱「限制」一文。
- 系統不支援下列功能:
- 以 OAuth2.0 為基礎的驗證
- ETag
- 深層插入
- 以檔案為基礎的作業
實體作業範例
本節說明如何使用這個連接器執行部分實體作業。
範例 - 列出所有記錄
這個範例會列出 SalesOrderSet
實體中的所有記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取SalesOrderSet
。 - 選取「
List
」作業,然後按一下「完成」。 - (選用) 在「連結器」工作的「工作輸入」部分,您可以指定篩選子句,篩選結果集。
例如:
City='Bangalore'
。您也可以使用邏輯運算子指定多個篩選條件。例如:City='Bangalore' and region='asia-south2'
。
範例 - 取得記錄
這個範例會從 SalesOrderSet
實體取得具有指定 ID 的記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取SalesOrderSet
。 - 選取「
Get
」作業,然後按一下「完成」。 - 在「連線器」工作的「工作輸入」部分,按一下「EntityId」,然後在「預設值」欄位中輸入
13
。其中
13
是SalesOrderSet
實體中的主鍵值。
範例 - 建立記錄
這個範例會在 SalesOrderSet
實體中建立記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取SalesOrderSet
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Vbeln":"999", "Erdat":"2020-08-25 00:00:00", "Erzet":"13:12:31", "Ernam":"Test" }
如果整合成功,連接器工作的
connectorOutputPayload
欄位會包含類似下列內容的值:{ "Vbeln": "999" }
範例 - 建立記錄
這個範例會在 SalesPriceSet
實體中建立記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取SalesPriceSet
。 - 選取「
Create
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Vbeln": "129", "Posnr": "000000", "Knumh": "SUN25MAY", "Kpein": 1.0 }
如果整合成功,連接器工作的
connectorOutputPayload
欄位會包含類似下列內容的值:{ "Posnr": "000000", "Vbeln": "129" }
範例 - 更新記錄
這個範例會更新 SalesOrderSet
實體中的記錄。
- 在「
Configure connector task
」對話方塊中,按一下Entities
。 - 從
Entity
清單中選取SalesOrderSet
。 - 選取「
Update
」作業,然後按一下「完成」。 - 在「Connectors」(連結器) 任務的「Task Input」(任務輸入內容) 區段中,按一下
connectorInputPayload
,然後在Default Value
欄位中輸入類似下列的值:{ "Ernam": "Test123" }
- 按一下「entityId」,然後在「Default Value」欄位中輸入
99
。如果整合成功,連接器工作的
connectorOutputPayload
欄位會包含類似下列內容的值:{ "Vbeln": "999" }
使用 Terraform 建立連線
您可以使用 Terraform 資源建立新連線。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
如要查看用於建立連線的 Terraform 範本範例,請參閱範本範例。
使用 Terraform 建立這項連線時,您必須在 Terraform 設定檔中設定下列變數:
參數名稱 | 資料類型 | 必填 | 說明 |
---|---|---|---|
命名空間 | STRING | 否 | 指定要從哪個服務命名空間擷取資料。如果網址中未指定服務,則必須提供這項資訊。 |
服務 | STRING | 否 | 指定要從哪個服務擷取資料。如果網址中未指定服務,則必須提供這項資訊。 |
custom_url_params | STRING | 否 | 您可以透過 CustomUrlParams 指定要納入 HTTP 要求的自訂查詢字串參數。參數必須編碼為查詢字串,格式為 field1=value1&field2=value2。查詢字串中的值必須經過網址編碼。 |
data_format | ENUM | 否 | 要擷取資料的資料格式。選取 XML 或 JSON。支援的值:XML、JSON |
use_display_names | BOOLEAN | 否 | 布林值,用於判斷是否要使用 SAP 標籤。 |
詳細程度 | STRING | 否 | 連線的詳細程度,範圍為 1 到 5。詳細程度越高,記錄的通訊詳細資料就越多 (要求、回應和 SSL 憑證)。 |
proxy_enabled | BOOLEAN | 否 | 選取這個核取方塊,即可為連線設定 Proxy 伺服器。 |
proxy_auth_scheme | ENUM | 否 | 用於向 ProxyServer Proxy 驗證的驗證類型。支援的值包括:BASIC、DIGEST、NONE |
proxy_user | STRING | 否 | 用於向 ProxyServer Proxy 驗證的使用者名稱。 |
proxy_password | SECRET | 否 | 用於向 ProxyServer 代理程式驗證的密碼。 |
proxy_ssltype | ENUM | 否 | 連線至 ProxyServer Proxy 時要使用的 SSL 類型,支援的值包括:AUTO、ALWAYS、NEVER、TUNNEL |
在整合服務中使用 SAP Gateway 連線
建立連線後,Apigee Integration 和 Application Integration 都會提供該連線。您可以在整合中透過「連接器」工作使用連線。
- 如要瞭解如何在 Apigee Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。
- 如要瞭解如何在 Application Integration 中建立及使用「連線器」工作,請參閱「連線器工作」。