排解 Google Cloud 適用的 ABAP SDK 的 SAP BTP 版本問題

如要針對 Google Cloud 適用的 ABAP SDK 的 SAP BTP 版本排解問題,第一步是找出問題可能來自何處。這個問題可能與基礎架構、您使用的 SAP BTP 環境和工具,或 Google Cloud 專用的 ABAP SDK 本身有關。

如果分析結果指出 Google Cloud 專用的 ABAP SDK 發生問題,請使用 SAP 應用程式記錄和錯誤訊息排解問題。

如果您認為問題出在 SAP 環境或工具,請向 SAP 尋求協助。

查看需求條件

請確認已符合所有必要條件,才能安裝 Google Cloud 適用的 ABAP SDK 的 SAP BTP 版本。如要瞭解 SDK 安裝前置條件,請參閱「事前準備」。

閱讀 SAP 支援文件

如果您有 SAP 使用者帳戶,只要閱讀 SAP ONE 支援 Launchpad 提供的 SAP 附註和 SAP 知識庫文章,就能找到許多 SAP 軟體問題的解決方法。

查看記錄

設定記錄功能後,Google Cloud 適用的 ABAP SDK 的 SAP BTP 版本會將錯誤訊息記錄到 SAP 應用程式記錄檔。如要進一步瞭解記錄功能,請參閱「設定記錄功能」。

如要查看記錄訊息,請執行下列步驟:

  1. 存取已安裝 ABAP SDK for Google Cloud 的 BTP ABAP 系統 SAP Fiori 發布工具。
  2. 開啟「Google SDK: Application Logs Display」應用程式。
  3. 視情況提供記錄篩選器:

    • 「From」:選取要篩選記錄的開始日期。
    • 做法:選取結束日期,即可篩除到該日期為止的記錄。
    • 記錄檔物件:選取要擷取記錄檔的記錄檔物件。
    • 記錄子物件:選取要擷取記錄的記錄子物件。
    • 服務名稱:選取要擷取記錄的 API 服務名稱。
  4. 按一下「前往」。系統隨即會顯示應用程式記錄標頭清單。

    應用程式記錄標頭

  5. 按一下記錄標頭,即可前往詳細的項目層級記錄。記錄訊息會顯示嚴重性和時間戳記。

    詳細項目層級記錄

    記錄訊息通常包含下列兩個項目:

    • 輸入:提供發生錯誤的確切程式碼位置資訊。如要排解問題,您可以在偵錯時使用這個程式碼位置做為中斷點。
    • 錯誤訊息:提供執行作業時發生的錯誤資訊。

偵錯

如果您已取得必要的授權,就可以對 API 用戶端類別進行偵錯。

如要對 API 用戶端類別進行偵錯,請使用下列其中一個選項:

  • /GOOG/CL_HTTP_CLIENT 類別的建構函式中加入中斷點,然後執行程式。

  • 在您使用的程式碼中加入中斷點,然後執行程式。

HTTP 追蹤記錄

排解錯誤時,您可以在 SAP Monitor 系統的傳出連線中查看 HTTP 呼叫追蹤記錄。詳情請參閱 SAP 頁面「監控系統外部通訊 (一般)」。

常見的營運問題

透過用戶端存根公開方法使用 Google Cloud API 時,開發人員可能會遇到錯誤和例外狀況。這些錯誤和例外狀況大致分為兩類:

本節將說明 SDK 觸發的錯誤和例外狀況。

/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the request sending

問題:對 API 方法的 HTTP 要求失敗。

原因:這可能是連線問題所致。

解決方法:在您嘗試存取 Google Cloud API 的 Google Cloud 專案中,啟用目標 API。如要瞭解如何啟用Google Cloud API,請參閱「啟用 API」。

/GOOG/MSG:400 - Error generating STS token:Bad Request-invalid_request-Invalid value for " audience". This value should be the full resource name of the Identity Provider. See https://cloud.google.com/iam/docs/reference/sts/rest/v1/TopLevel/token for the list of possible formats.

問題:您無法產生 Security Token Service (STS) 權杖。

原因:如果您要透過 Workload Identity Federation 使用憑證或儲存在 Secret Manager 中的 API 金鑰進行驗證,驗證設定就會缺少必要的設定。 Google Cloud

解決方法:請確認並更新下列詳細資料:

  • 在「Communication Arrangement」應用程式中,更新 Workload Identity Federation 集區 ID 和 Workload Identity Federation 提供者 ID。

  • Google SDK:主要設定應用程式中,針對通訊對應圖,更新用於用戶端金鑰的 Google Cloud 專案 ID 和 Google Cloud 專案編號。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Workload Identity Federation」。

/GOOG/MSG:400 - Error generating STS token:Bad Request-invalid_scope-Invalid scope provided in the request

問題:您無法驗證 Google Cloud。

原因:如果您使用憑證 ID 聯合作業或儲存在 Secret Manager 中的 API 金鑰,透過憑證進行 Google Cloud 驗證,則Google Cloud 範圍無效。

解決方法:在 Google SDK:主要設定應用程式中,針對通訊對應圖,請確認Google Cloud 範圍https://www.googleapis.com/auth/cloud-platform

/GOOG/MSG:461 - API Key not valid. Please pass a valid API Key

問題:您無法使用 API 金鑰驗證機制驗證 Google Cloud 。

原因:通訊安排中提供的 API 金鑰無效。

解決方法:如要解決這個問題,請在相關聯的通訊安排中保留有效的機密名稱和版本。此外,請確認在密鑰中設定有效的 API 金鑰。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Secret Manager 中儲存的 API 金鑰

/GOOG/MSG: 461 - Communication Map entry for authentication service not maintained

問題:SDK 無法判斷用於驗證的通訊構件。

原因:沒有為驗證服務維護通訊地圖。

解決方法:在 Google SDK:主要設定應用程式中建立通訊對應,並為您使用的驗證方法維持正確的驗證類型

如要建立通訊圖,請參閱「為 Google Cloud 的 ABAP SDK 的 SAP BTP 版本設定驗證方法」一文中的驗證方法操作說明。

/GOOG/MSG: 461 - Communication Scenario not valid for default Google Authentication

問題:SDK 無法判斷驗證的通訊安排。

原因:驗證服務的項目無效。

解決方法:在 Google SDK:主要設定應用程式中,針對通訊對應項目,確認通訊安排已正確設定通訊情境和通訊系統。

如要更新通訊安排,請參閱「為 Google Cloud 的 ABAP SDK 的 SAP BTP 版本設定驗證」一文中的驗證方法操作說明。

/GOOG/MSG:400 - Error generating IDP token: Not found

問題:您無法透過 XSUAA 服務產生識別資訊提供者權杖。

原因:當您透過 Workload Identity Federation 或 Secret Manager 中儲存的 API 金鑰,使用符記進行驗證時,XSUAA 服務的主機名稱網址或路徑值在通訊系統中無效。 Google Cloud

解決方法:請確認並更新下列詳細資料:

  • 在 XSUAA 服務的通訊系統中,或在通訊系統中使用的 BTP 目的地中,維持正確的主機名稱網址。
  • 在通訊安排中,維持有效路徑。

/GOOG/MSG:400 - Error generating STS token: Not found

問題:您無法產生驗證所需的安全性權杖服務權杖。

原因:如果您使用 Workload Identity Federation 或儲存在 Secret Manager 中的 API 金鑰,透過權杖進行驗證,並使用 STS 服務的通訊安排,則與 STS 服務相關聯的通訊系統無效。 Google Cloud

解決方法:請確認並更新下列詳細資料:

  • 在 STS 服務的通訊系統中,或在通訊系統中使用的 BTP 目的地中,維持正確的主機名稱網址。
  • 在通訊安排中,維持有效路徑。

/GOOG/MSG:400 - Error generating IAM token: Not found

問題:您無法產生驗證所需的 IAM 權杖。

原因:如果您透過 Workload Identity Federation 或儲存在 Secret Manager 中的 API 金鑰,使用權杖進行驗證,並且使用 IAM 服務的通訊安排,與 IAM 服務相關聯的通訊地圖和通訊系統就會失效。 Google Cloud

解決方法:請確認並更新下列詳細資料:

  • 在 IAM 服務的通訊系統中,或在通訊系統中使用的 BTP 目的地中,維持正確的主機名稱網址。
  • 在通訊安排中,維持有效路徑。

設定驗證錯誤

G001 | Check communication scenario

原因:預設授權類別 /GOOG/CL_AUTH_GOOGLE 不支援在通訊對應圖中設定的通訊情境。

解決方法:如果您使用 /GOOG/CL_AUTH_GOOGLE 做為授權類別,請務必根據驗證方法,在通訊對應圖中指定下列任一通訊情境:

通訊情境 驗證
/GOOG/COM_SDK_WIF Workload Identity 聯盟
/GOOG/COM_SDK_APIKSM 使用 Secret Manager 的 API 金鑰

如要更新通訊對應圖,請參閱「為 Google Cloud 的 ABAP SDK 的 SAP BTP 版本設定驗證」一文中的驗證方法操作說明。

W001 | Check Comm. arrangement for WIF

原因:無法使用 Google SDK:主要設定應用程式中指定的通訊情境和通訊系統,識別通訊安排。

解決方法:請確認驗證服務的通訊安排使用有效的通訊情境和通訊系統。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Workload Identity Federation」。

W002 | Fetch XSUAA token

原因:擷取 XSUAA 權杖失敗。

解決方法:請確認 XSUAA 服務執行個體已正確設定。

詳情請參閱「建立授權和信任 (XSUAA) 服務執行個體」。

W003 | Fetch WIF Pool ID

原因:通訊安排中不存在 Workload Identity 聯盟集區 ID。

解決方法:在用於驗證服務的通訊安排中,請務必使用通訊情境 /GOOG/COM_SDK_WIF,並指定有效的工作負載身分聯盟集區 ID。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Workload Identity Federation」。

W004 | Fetch WIF Provider ID

原因:通訊安排中沒有 Workload Identity Federation 提供者 ID。

解決方法:在用於驗證服務的通訊安排中,請務必使用通訊情境 /GOOG/COM_SDK_WIF,並指定有效的工作負載身分聯盟提供者 ID。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Workload Identity Federation」。

W005 | Fetch STS token

原因:無法擷取 STS 權杖。

解決方法:如要解決這個問題,請執行下列操作:

W006 | Fetch IAM credential token

原因:從 IAM 憑證 API 擷取 IAM 權杖失敗。

解決方法:如要解決這個問題,請執行下列操作:

  • 在通訊圖表中,請檢查 Google Cloud 專案編號是否正確維護。詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Workload Identity Federation」。
  • 在通訊對應圖中,如果為 iamcredentials:v1 服務維護項目,請確認維護的通訊安排是否有效,且可在系統中使用,並使用與 SDK 設定應用程式中指定的相同通訊情境和通訊系統。

V001 | Check Comm. Arr. for API Key(SM)

原因:無法使用 Google SDK:主要設定應用程式中指定的通訊情境和通訊系統,識別通訊安排。

解決方法:請確認為驗證服務維護的通訊安排是否有效,且可在系統中使用,並使用與 SDK 設定應用程式維護的相同通訊情況和通訊系統。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Secret Manager 中的 API 金鑰」。

V002 | Fetch Secret Name

原因:通訊安排中沒有密鑰名稱。

解決方法:在用於驗證服務的通訊安排中,請務必使用通訊情境 /GOOG/COM_SDK_APIKSM,並指定有效的密鑰。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Secret Manager 中的 API 金鑰」。

V003 | Fetch Secret Version

原因密鑰版本屬性在通訊安排中不含有效值。

解決方法:在用於驗證服務的通訊安排中,請務必使用通訊情境 /GOOG/COM_SDK_APIKSM,並指定有效的密鑰版本。

詳情請參閱「設定 ABAP SDK for Google Cloud 以使用 Secret Manager 中的 API 金鑰」。

V004 | Fetch Token from Secret Manager

原因:Secret Manager API 無法擷取包含 API 金鑰的密鑰。

解決方法:如要解決這個問題,請執行下列操作:

Google Cloud API 傳回的錯誤訊息

每個 API 用戶端 Stub 都有匯出參數,可提供 API 傳回代碼和錯誤訊息。

  • ev_ret_code 包含 HTTP 狀態碼。如果 API 傳回錯誤,這個參數會包含 4XX 值。

  • ev_err_resp 包含 API 傳回的錯誤類別和錯誤訊息。

以下範例顯示,當您使用已存在的主題名稱建立新的 Pub/Sub 主題時,API 傳回的錯誤。

  • ERROR_TEXT:衝突
  • ERROR_DESCRIPTION:專案中已存在資源 (resource=SAMPLE_TOPIC_01)

針對 API 傳回的錯誤,建議您查看對應 API 的公開說明文件。

向社群尋求支援

Cloud 論壇上向社群提問,並討論 ABAP 適用的 Google Cloud SDK。

取得支援

如果您需要協助解決 Google Cloud ABAP SDK 的 SAP BTP 版本問題,請收集所有可用的診斷資訊,然後與 Cloud Customer Care 團隊聯絡。

如要瞭解如何與 Cloud Customer Care 聯絡,請參閱「在 Google Cloud 中取得 SAP 支援 Google Cloud」一文。