使用在 Compute Engine VM 上託管的 SAP 適用的權杖設定 ABAP SDK 驗證,並執行 Address Verification API

1. 簡介

在這個程式碼研究室中,您將逐步設定驗證程序,以便在您的 SAP 系統託管於 Compute Engine VM 執行個體時使用憑證存取 Google Cloud API。

目前使用的服務如下:

  • Compute Engine
  • 網路服務
  • Cloud Shell

建構項目

您將會執行下列操作:

  • 設定 SAP 系統上安裝的 ABAP SDK,以便連結至 Google API。
  • 請建立範例報表程式來呼叫 Address Validation API。

2. 需求條件

  • 瀏覽器,例如 ChromeFirefox
  • 已啟用計費功能的 Google Cloud 專案,或是為 Google Cloud Platform 建立 90 天免費試用帳戶
  • 在您的系統中安裝 SAP GUI (Windows 或 Java)。如果您已在系統上安裝 SAP GUI,請使用 VM 外部 IP 位址做為應用程式伺服器 IP 連線至 SAP。如果您使用的是 Mac,也可以點選這個連結,安裝 Java 適用的 SAP GUI。

3. 事前準備

6757b2fb50ddcc2d.png

  • 請確認所有必要 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

4. 建立服務帳戶並設定服務帳戶權杖建立者角色

如要建立具備必要角色的服務帳戶,請執行下列步驟:

  1. 執行下列指令來建立服務帳戶:(如果已有服務帳戶,請略過這個步驟)
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. 執行下列指令,設定 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 系統,然後按照下列步驟設定用戶端金鑰:

  1. 在 SAP GUI 中,輸入交易代碼 SPRO
  2. 按一下「SAP 參考資料」
  3. 按一下 [ABAP SDK for Google Cloud]基本設定 >設定用戶端金鑰。
  4. 按一下「New Entries」(新項目)
  5. 請在下列欄位中輸入值:

欄位

說明

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。

將其他欄位留白

c72e71da6fd75b29.png

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 目的地輸入下列詳細資料。

e670c6a91acba40f.png

  • 在「技術設定」分頁中,為 ZGOOG_ADDRESSVALIDATION_V1 目的地輸入下列詳細資料。

fcf92530ece612ea.png

  • 確認已為 [SSL 憑證] 欄位同時為 RFC 目的地勾選 [DEFAULT SSL Client (標準)] 選項。

b6370d12bd332318.png

7. 設定服務對應

如要為 IAM API 和 Address Validation API 設定服務對應表格,請執行下列步驟:

  1. 在 SAP GUI 中,輸入交易代碼 SPRO
  2. 按一下「SAP 參考資料」
  3. 按一下 [ABAP SDK for Google Cloud]基本設定 >設定服務對應。
  4. 找到連結至 RFC 目的地的 IAM 憑證和 Address 驗證 API,然後按一下「新項目」

e227316b0f249823.png

8. 驗證設定

如要驗證驗證設定,請執行下列步驟:

  1. 在 SAP GUI 中,輸入交易代碼 SPRO
  2. 按一下「SAP 參考資料」
  3. 按一下 [ABAP SDK for Google Cloud]實用工具 >驗證驗證設定。
  4. 將用戶端金鑰名稱設為 ABAP_SDK_DEMO
  5. 按一下「執行」,檢查整體流程是否設定成功。
  6. 如果「結果」欄中顯示綠色勾號,代表已成功完成所有設定步驟。

d7285e64e22c25b6.png

9. 建立報表程式以呼叫地址驗證服務

  1. 登入 SAP 系統。
  2. 前往交易代碼 SE38,然後建立名為「ZDEMO_ADDRESS_VALIDATION」的報表計畫。
  3. 在隨即出現的彈出式視窗中,提供下方所示的詳細資料,然後按一下「儲存」

d8aac0f9e0bc5f9d.png

  1. 在下一個彈出式視窗中,選取「Local Object」,或視情況提供套件名稱。
  2. 在 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.
  1. 儲存並啟用報表。
  2. 執行報表 (F8)。

成功執行後,報表輸出內容應如下所示:

8b0aed97320f4ef.png

10. 恭喜

恭喜!您已成功設定 ABAP SDK,以便呼叫地址驗證服務。

您現在可以繼續其他 ABAP SDK 程式碼研究室,繼續學習如何使用適用於 Google Cloud 的 ABAP SDK 存取各種 Google Cloud 服務。

11. 清除所用資源

如果您不想繼續完成與 Google Cloud 適用的 ABAP SDK 相關的其他程式碼研究室,請繼續進行清除作業。

刪除專案

  • 刪除 Google Cloud 專案:
gcloud projects delete abap-sdk-poc

刪除個別資源

  1. 前往 IMG > 刪除用戶端金鑰設定項目Google Cloud >基本設定 >設定用戶端金鑰。
  2. 前往 IMG > 刪除服務對應設定項目Google Cloud >基本設定 >設定用戶端金鑰。
  3. 刪除 RFC 目的地 ZGOOG_IAMCREDENTIALSZGOOG_ADDRESSVALIDATION_V1
  4. 刪除服務帳戶:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com