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

1. 簡介

本程式碼研究室提供使用 ABAP SDK for Google Cloud 呼叫 Translation API V3 (進階版) 方法的步驟。在本程式碼研究室中,我們將說明如何使用 Translation API V3 翻譯文字、偵測文字的語言,並列出支援的語言。

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

  • Compute Engine
  • 網路服務
  • Cloud Shell
  • Cloud Translation API V3

必要條件

建構項目

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

  • 使用 Google Cloud Translation API v3 將文字翻譯成多種語言
  • 使用 Google Cloud Translation API V3 偵測原始文字的語言
  • 列出 Google Cloud Translation API 第 3 版支援的語言

2. 需求條件

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

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 系統。
  • 您必須先完成 Codelab 1 (在 Google Cloud Platform 上安裝 ABAP 平台試用版 1909,並安裝 Google Cloud 專用的 ABAP SDK) 和 Codelab 2 (使用憑證設定 Compute Engine VM 上託管的 SAP 認證),才能繼續進行本 Codelab。
  • 如果您已完成程式碼研究室 1 和程式碼研究室 2,Google Cloud 上就會為您佈建 ABAP 平台試用版 1909 系統,並完成驗證和連線功能的必要設定。
  • 如果您尚未完成程式碼研究室 1 和程式碼研究室 2,就無法取得執行本程式碼研究室中提供步驟所需的所有基礎架構和連線。因此,您必須先完成程式碼研究室 1 和程式碼研究室 2,才能繼續進行本程式碼研究室。

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

  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 Reference IMG」
  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-Report 以呼叫 Cloud Translation API V3 並翻譯文字

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

6ba124f9187d1fc0.png

在下一個彈出式視窗中,選取「Local Object」或「Provide a package name」即可。

  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-Report 以呼叫 Cloud Translation API v3,並偵測語言

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

64c2eb0e0173ae51.png

在下一個彈出式視窗中,選取「Local Object」或「Provide a package name」即可。

  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

在下一個彈出式視窗中,選取「Local Object」或「Provide a package name」即可。

  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. 恭喜

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

Cloud Translation API v3 (也稱為 Cloud Translation API 進階版) 提供多項功能,包括:

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

您現在可以繼續進行下列 Codelab,繼續學習如何使用 ABAP SDK for Google Cloud 存取各種 Google Cloud 服務。

  • 將事件傳送至 Pub/Sub
  • 接收 Cloud Pub/Sub 傳送的事件
  • 使用分割功能將大型物件上傳至 Cloud Storage 值區
  • 使用 DLP API 遮蓋個人識別資訊
  • 從 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