1. 簡介
在這個程式碼研究室中,您將逐步設定驗證程序,以便在您的 SAP 系統託管於 Compute Engine VM 執行個體時使用憑證存取 Google Cloud API。
目前使用的服務如下:
- Compute Engine
- 網路服務
- Cloud Shell
建構項目
您將會執行下列操作:
- 設定 SAP 系統上安裝的 ABAP SDK,以便連結至 Google API。
- 請建立範例報表程式來呼叫 Address Validation API。
2. 需求條件
- 瀏覽器,例如 Chrome 或 Firefox。
- 已啟用計費功能的 Google Cloud 專案,或是為 Google Cloud Platform 建立 90 天免費試用帳戶。
- 在您的系統中安裝 SAP GUI (Windows 或 Java)。如果您已在系統上安裝 SAP GUI,請使用 VM 外部 IP 位址做為應用程式伺服器 IP 連線至 SAP。如果您使用的是 Mac,也可以點選這個連結,安裝 Java 適用的 SAP GUI。
3. 事前準備
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案 (例如
abap-sdk-poc).
- 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用帳單功能。如果您使用 90 天免費試用帳戶,請略過這個步驟。
- 您將使用 Cloud Shell,這是在 Google Cloud 中執行的指令列環境。在 Cloud 控制台中,按一下右上角的「啟用 Cloud Shell」:
- 請確認所有必要 API (IAM Service Account Credentials API 和 Address Validation API) 已啟用。
- 執行下列指令進行帳戶驗證,並將預設專案設為
abap-sdk-poc
。範例使用的是us-west4-b
區域。視需要在下方指令中變更專案和可用區。
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
PROJECT_NAME=abap-sdk-poc
REGION=us-west4
ZONE=us-west4-b
- 請確認您可以存取已安裝 ABAP SDK for Google Cloud 的 SAP 系統。
- 您可以在在 Google Cloud Platform 上安裝 2022 年 ABAP 平台試用方案並安裝 ABAP SDK設定新系統
4. 建立服務帳戶並設定服務帳戶權杖建立者角色
如要建立具備必要角色的服務帳戶,請執行下列步驟:
- 執行下列指令來建立服務帳戶:(如果已有服務帳戶,請略過這個步驟)
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- 執行下列指令,設定 Service Account Token Creator 角色:
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member=serviceAccount:abap-sdk-dev@$PROJECT_NAME.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
5. 設定用戶端金鑰
使用使用者名稱 DEVELOPER
和密碼 Htods70334
登入 SAP 系統,然後按照下列步驟設定用戶端金鑰:
- 在 SAP GUI 中,輸入交易代碼 SPRO。
- 按一下「SAP 參考資料」。
- 按一下 [ABAP SDK for Google Cloud]基本設定 >設定用戶端金鑰。
- 按一下「New Entries」(新項目)。
- 請在下列欄位中輸入值:
欄位 | 說明 |
Google Cloud 金鑰名稱 | ABAP_SDK_DEMO |
Google Cloud 服務帳戶名稱 | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud 範圍 | https://www.googleapis.com/auth/cloud-platform |
Google Cloud 專案 ID | abap-sdk-poc |
授權類別 | /GOOG/CL_AUTH_GOOGLE。 |
將其他欄位留白
6. 建立 RFC 目的地
為 IAM 憑證和 Address Validation API 建立 RFC 目的地。
RFC 目的地名稱 | 目標主機 (API 端點) | 附註 |
ZGOOG_IAMCREDENTIALS | 主機:iamcredentials.googleapis.com路徑:前置字串:/v1/Port:443SSL:有效 | 這個 RFC 目的地會以 IAM API 為目標。 |
ZGOOG_ADDRESSVALIDATION_V1 | Host (主機):addressvalidation.googleapis.comPort:443SSL:有效 | 這個 RFC 目的地指定 Address 驗證 API |
- 在「Technical Settings」分頁下方,為 ZGOOG_IAMCREDENTIALS 目的地輸入下列詳細資料。
- 在「技術設定」分頁中,為 ZGOOG_ADDRESSVALIDATION_V1 目的地輸入下列詳細資料。
- 確認已為 [SSL 憑證] 欄位同時為 RFC 目的地勾選 [DEFAULT SSL Client (標準)] 選項。
7. 設定服務對應
如要為 IAM API 和 Address Validation API 設定服務對應表格,請執行下列步驟:
- 在 SAP GUI 中,輸入交易代碼 SPRO。
- 按一下「SAP 參考資料」。
- 按一下 [ABAP SDK for Google Cloud]基本設定 >設定服務對應。
- 找到連結至 RFC 目的地的 IAM 憑證和 Address 驗證 API,然後按一下「新項目」。
8. 驗證設定
如要驗證驗證設定,請執行下列步驟:
- 在 SAP GUI 中,輸入交易代碼 SPRO。
- 按一下「SAP 參考資料」。
- 按一下 [ABAP SDK for Google Cloud]實用工具 >驗證驗證設定。
- 將用戶端金鑰名稱設為
ABAP_SDK_DEMO
。 - 按一下「執行」,檢查整體流程是否設定成功。
- 如果「結果」欄中顯示綠色勾號,代表已成功完成所有設定步驟。
9. 建立報表程式以呼叫地址驗證服務
- 登入 SAP 系統。
- 前往交易代碼 SE38,然後建立名為「ZDEMO_ADDRESS_VALIDATION」的報表計畫。
- 在隨即出現的彈出式視窗中,提供下方所示的詳細資料,然後按一下「儲存」。
- 在下一個彈出式視窗中,選取「Local Object」,或視情況提供套件名稱。
- 在 ABAP 編輯器中新增下列程式碼:
" data declarations
DATA lv_ret_code TYPE i.
DATA lv_err_text TYPE string.
DATA ls_input TYPE /goog/cl_addrvaldn_v1=>ty_012.
DATA ls_output TYPE /goog/cl_addrvaldn_v1=>ty_013.
DATA ls_err_resp TYPE /goog/err_resp.
DATA lo_exception TYPE REF TO /goog/cx_sdk.
DATA lo_address_validator TYPE REF TO /goog/cl_addrvaldn_v1.
" instantiate api client stub
TRY.
lo_address_validator = NEW #( iv_key_name = 'ABAP_SDK_DEV' ).
" Pass the address to be validated and corrected.
" Mountain misspelled as Moutain
" Amphitheatre misspelled as Amphithetre
ls_input-address-region_code = 'US'.
ls_input-address-locality = 'Moutain View'.
APPEND '1600, Amphithetre, Parkway' TO ls_input-address-address_lines.
" call the api method to validate address
lo_address_validator->validate_address( EXPORTING is_input = ls_input
IMPORTING es_output = ls_output
ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_err_resp = ls_err_resp ).
IF lo_address_validator->is_success( lv_ret_code ) = abap_true
AND ls_output-result-verdict-address_complete = abap_true.
cl_demo_output=>new(
)->begin_section( `Original Address`
)->write_data( ls_input-address-region_code
)->write_data( ls_input-address-locality
)->write_data( ls_input-address-address_lines
)->next_section( `Validated & Corrected Address`
)->begin_section( `Elementary Object`
)->write_data( ls_output-result-address-formatted_address
)->display( ).
ENDIF.
CATCH /goog/cx_sdk INTO lo_exception.
" write code here to handle exceptions
cl_demo_output=>display( lo_exception->get_text( ) ).
ENDTRY.
- 儲存並啟用報表。
- 執行報表 (F8)。
成功執行後,報表輸出內容應如下所示:
10. 恭喜
恭喜!您已成功設定 ABAP SDK,以便呼叫地址驗證服務。
您現在可以繼續其他 ABAP SDK 程式碼研究室,繼續學習如何使用適用於 Google Cloud 的 ABAP SDK 存取各種 Google Cloud 服務。
11. 清除所用資源
如果您不想繼續完成與 Google Cloud 適用的 ABAP SDK 相關的其他程式碼研究室,請繼續進行清除作業。
刪除專案
- 刪除 Google Cloud 專案:
gcloud projects delete abap-sdk-poc
刪除個別資源
- 前往 IMG > 刪除用戶端金鑰設定項目Google Cloud >基本設定 >設定用戶端金鑰。
- 前往 IMG > 刪除服務對應設定項目Google Cloud >基本設定 >設定用戶端金鑰。
- 刪除 RFC 目的地 ZGOOG_IAMCREDENTIALS 和 ZGOOG_ADDRESSVALIDATION_V1。
- 刪除服務帳戶:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com