將 Translation API 與 Google Cloud 適用的 ABAP SDK 搭配使用

1. 簡介

本程式碼研究室提供步驟,協助您使用適用於 Google Cloud 的 ABAP SDK 呼叫 Translation API V3 (進階) 的方法。在本程式碼研究室中,我們將介紹如何翻譯文字、偵測文字的語言,以及使用 Translation API V3 列出支援的語言

本程式碼研究室使用下列 Google Cloud 服務:

  • Compute Engine
  • 網路服務
  • Cloud Shell
  • Cloud Translation API 第 3 版

必要條件

建構項目

您將在 SAP 系統中,使用 Google Cloud 適用的 ABAP SDK 建立下列程式:

  • 使用 Google 的 Cloud Translation API V3 將文字翻譯成多種語言
  • 使用 Google Cloud Translation API V3 偵測來源文字的語言
  • 列出 Google Cloud Translation API V3 的支援語言

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

  • 執行下列指令進行帳戶驗證,並將預設專案設為 abap-sdk-poc。範例使用的是 us-west4-b 區域。視需要在下列指令中變更專案和可用區。
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
  • 您必須能夠存取已安裝 Google Cloud 適用的 ABAP SDK 的 SAP 系統。
  • 您必須先完成程式碼研究室 1 (在 Google Cloud Platform 上安裝 ABAP 平台試用 1909 並安裝 ABAP SDK for Google Cloud),以及程式碼研究室 2 (使用適用於 Compute Engine VM 上的 SAP Hosted 的權杖設定 ABAP SDK 驗證),再進入這個程式碼研究室。
  • 如果您已完成程式碼研究室 1 和程式碼研究室 2,本來應該就能在 Google Cloud 上佈建 ABAP 平台試用 1909 系統,以及驗證和連線所需的設定。
  • 如果您尚未完成程式碼研究室 1 和程式碼研究室 2,這將缺少必要的基礎架構和連線,因此無法執行本程式碼研究室提供的步驟。因此,您必須先完成程式碼研究室 1 和程式碼研究室 2,才能繼續使用這個程式碼研究室。

4. 在 Google Cloud 專案中啟用 Cloud Translation API V3

  1. 在 Cloud Shell 中執行下列指令,即可在 Google Cloud 專案中啟用 Cloud Translation API:
gcloud services enable translate.googleapis.com

如果成功執行,您應該會看到如下顯示的訊息:

b5f52859df2c2f56.png

Google Cloud 專案現在應該已啟用 Cloud Translation API

5. 使用 Cloud Translation 使用者角色建立服務帳戶

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

  1. 在 Cloud Shell 終端機中執行下列指令:
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
  1. 接著,將必要角色新增至在上述步驟中建立的服務帳戶
gcloud projects add-iam-policy-binding abap-sdk-poc\
--member='serviceAccount:abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/cloudtranslate.user'

上述指令使用 abap-sdk-poc 做為 Google Cloud 專案的範本名稱。並替換為您的專案 ID。

  1. 如要確認角色已新增,請前往「IAM」頁面。畫面上會列出您建立的服務帳戶,以及已指派給該帳戶的角色,如下所示:

6af77a519ed3e357.png

6. 建立用戶端金鑰設定

您已在 Google Cloud 端設定必備條件,可以繼續處理 SAP 端的設定。

在驗證和連線相關設定方面,Google Cloud 適用的 ABAP SDK 會使用表格 /GOOG/CLIENT_KEY

如要保留 /GOOG/CLIENT_KEY 資料表中的設定,請執行下列步驟:

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

欄位

Google Cloud 金鑰名稱

TEST_TRANSLATION

Google Cloud 服務帳戶名稱

abap-sdk-translation-tester@abap-sdk-poc.iam.gserviceaccount.com

Google Cloud 範圍

https://www.googleapis.com/auth/cloud-platform

專案 ID

abap-sdk-poc

授權類別

/GOOG/CL_AUTH_GOOGLE

將其他所有欄位留白

7. 建立 Z 報告以呼叫 Cloud Translation API V3 並翻譯文字

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

6ba124f9187d1fc0.png

在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。

  1. 在 ABAP 編輯器中新增下列程式碼:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_050.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = 'text/plain'
                         source_language_code = 'en-US'
                         target_language_code = 'es-ES'
                         contents =  VALUE #( ( |Sun is our nearest star| ) ) ).

    lo_translate->translate_text_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Translated Text:'
      )->write_data( ls_output-translations[ 1 ]-translated_text
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. 儲存並啟用報表。
  2. 執行報表 (F8)。

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

2dd3bf270d2b1477.png

8. 建立 Z 報告,呼叫 Cloud Translation API V3 並偵測語言

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

64c2eb0e0173ae51.png

在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。

  1. 在 ABAP 編輯器中新增下列程式碼:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.
DATA ls_input TYPE /goog/cl_translation_v3=>ty_009.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    ls_input = VALUE #(  mime_type = |text/plain|
                         content =  |La luce viaggia più veloce del suono| ).

    lo_translate->detect_language_projects(
      EXPORTING
        iv_p_projects_id = CONV #( lo_translate->gv_project_id )
        is_input         = ls_input
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).
    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Detected Language:'
      )->write_data( ls_output-languages[ 1 ]-language_code
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. 儲存並啟用報表。
  2. 執行報表 (F8)。

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

a36e48bded53e62d.png

9. 建立 Z 報告以呼叫 GET_SUPPORTED_LANGUAGES 方法

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

3819fc355cf2cd4d.png

在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。

  1. 在 ABAP 編輯器中新增下列程式碼:
DATA lo_translate TYPE REF TO /goog/cl_translation_v3.

TRY.
    lo_translate = NEW #( iv_key_name = 'TEST_TRANSLATION').

    lo_translate->get_supported_languages_pro(
      EXPORTING
        iv_q_displaylanguagecode = 'en-US'
        iv_p_projects_id         =  CONV #( lo_translate->gv_project_id )
      IMPORTING
        es_output        =  DATA(ls_output)
        ev_ret_code      =  DATA(lv_ret_code)
        ev_err_text      =  DATA(lv_err_text)
        es_err_resp      =  DATA(lv_err_resp)
    ).

    IF lo_translate->is_success( lv_ret_code ) = abap_true.
      cl_demo_output=>new(
      )->begin_section( 'API Call Successful:'
      )->write_text( 'Supported Languages:'
      )->write_data( ls_output-languages
      )->display( ).
    ELSE.
      cl_demo_output=>new(
      )->begin_section( 'API Call Unsuccessful:'
      )->write_text( 'Error Message:'
      )->write_text( lv_err_text
      )->display( ).
    ENDIF.
  CATCH /goog/cx_sdk INTO DATA(lo_sdk_excp).
    DATA(lv_error) = lo_sdk_excp->get_text( ).
    cl_demo_output=>new(
     )->begin_section( 'Exception Occured:'
     )->write_text( lv_error
     )->display( ).
ENDTRY.
  1. 儲存並啟用報表。
  2. 執行報表 (F8)。

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

78199926919e7801.png

10. 恭喜

恭喜!您已成功完成「Using Translation API with ABAP SDK for Google Cloud」程式碼研究室。

Cloud Translation API V3 也稱為 Cloud Translation API Advanced 有許多功能,包括:

  • 使用自訂模型進行翻譯
  • 使用詞彙表進行翻譯
  • 音譯支援
  • 文件翻譯

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

  • 將事件傳送至 Pub/Sub
  • 接收 Cloud Pub/Sub 傳送的事件
  • 使用分塊功能將大型物件上傳至 Cloud Storage 值區
  • 使用 DLP API 遮蓋 PII
  • 從 ABAP 呼叫 BigQuery ML

11. 清除所用資源

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

刪除專案

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

刪除個別資源

  1. 刪除運算執行個體:
gcloud compute instances delete abap-trial-docker
  1. 刪除防火牆規則:
gcloud compute firewall-rules delete sapmachine
  1. 刪除服務帳戶:
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com