1. 簡介
本程式碼研究室提供步驟,協助您使用適用於 Google Cloud 的 ABAP SDK 呼叫 Translation API V3 (進階) 的方法。在本程式碼研究室中,我們將介紹如何翻譯文字、偵測文字的語言,以及使用 Translation API V3 列出支援的語言。
本程式碼研究室使用下列 Google Cloud 服務:
- Compute Engine
- 網路服務
- Cloud Shell
- Cloud Translation API 第 3 版
必要條件
- 確保您可以存取已安裝 ABAP SDK for Google Cloud 的 SAP 系統。
- 您可以在在 Google Cloud Platform 上安裝 ABAP Platform Trial 並安裝 ABAP SDK設定新系統
建構項目
您將在 SAP 系統中,使用 Google Cloud 適用的 ABAP SDK 建立下列程式:
- 使用 Google 的 Cloud Translation API V3 將文字翻譯成多種語言
- 使用 Google Cloud Translation API V3 偵測來源文字的語言
- 列出 Google Cloud Translation API V3 的支援語言
2. 需求條件
- 瀏覽器,例如 Chrome 或 Firefox。
- 已啟用計費功能的 Google Cloud 專案,或是為 Google Cloud Platform 建立 90 天免費試用帳戶。
- 在您的系統中安裝 SAP GUI (Windows 或 Java)。如果機器中已安裝 SAP GUI,並以 VM 外部 IP 位址做為應用程式伺服器 IP,連線至 SAP。如果您使用的是 Mac,也可以點選這個連結,安裝 Java 適用的 SAP GUI。
3. 事前準備
- 確保您可以存取已安裝 ABAP SDK for Google Cloud 的 SAP 系統。
- 您可以在在 Google Cloud Platform 上安裝 ABAP Platform Trial 並安裝 ABAP SDK設定新系統
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案 (例如:
abap-sdk-poc).
- 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用帳單功能。如果您使用 90 天免費試用帳戶,請略過這個步驟。
- 您將使用 Cloud Shell,這是在 Google Cloud 中執行的指令列環境。在 Cloud 控制台中,按一下右上角的「啟用 Cloud Shell」:
- 執行下列指令進行帳戶驗證,並將預設專案設為
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
- 在 Cloud Shell 中執行下列指令,即可在 Google Cloud 專案中啟用 Cloud Translation API:
gcloud services enable translate.googleapis.com
如果成功執行,您應該會看到如下顯示的訊息:
Google Cloud 專案現在應該已啟用 Cloud Translation API
5. 使用 Cloud Translation 使用者角色建立服務帳戶
如要建立具有必要角色的服務帳戶,請執行下列步驟:
- 在 Cloud Shell 終端機中執行下列指令:
gcloud iam service-accounts create abap-sdk-translation-tester \
--display-name="Service Account for Translation"
- 接著,將必要角色新增至在上述步驟中建立的服務帳戶
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。
- 如要確認角色已新增,請前往「IAM」IAM頁面。畫面上會列出您建立的服務帳戶,以及已指派給該帳戶的角色,如下所示:
6. 建立用戶端金鑰設定
您已在 Google Cloud 端設定必備條件,可以繼續處理 SAP 端的設定。
在驗證和連線相關設定方面,Google Cloud 適用的 ABAP SDK 會使用表格 /GOOG/CLIENT_KEY
如要保留 /GOOG/CLIENT_KEY
資料表中的設定,請執行下列步驟:
- 在 SAP GUI 中,輸入交易代碼
SPRO
。 - 按一下「SAP 參考資料」。
- 按一下 [ABAP SDK for Google Cloud]基本設定 >設定用戶端金鑰。
- 依欄位保留下列值:
欄位 | 值 |
Google Cloud 金鑰名稱 | TEST_TRANSLATION |
Google Cloud 服務帳戶名稱 |
|
Google Cloud 範圍 |
|
專案 ID | abap-sdk-poc |
授權類別 |
|
將其他所有欄位留白
7. 建立 Z 報告以呼叫 Cloud Translation API V3 並翻譯文字
- 登入 SAP 系統。
- 前往交易代碼
SE38
,建立名為ZDEMO_TRANSLATE_TEXT.
的報表計畫 - 在隨即出現的彈出式視窗中,提供下方所示的詳細資料,然後按一下「儲存」。
在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。
- 在 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.
- 儲存並啟用報表。
- 執行報表 (F8)。
成功執行後,報表輸出內容應如下所示:
8. 建立 Z 報告,呼叫 Cloud Translation API V3 並偵測語言
- 登入 SAP 系統。
- 前往交易代碼
SE38
,建立名為ZDEMO_DETECT_LANGUAGE.
的報表計畫 - 在隨即出現的彈出式視窗中,提供下方所示的詳細資料,然後按一下「儲存」:
在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。
- 在 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.
- 儲存並啟用報表。
- 執行報表 (F8)。
成功執行後,報表輸出內容應如下所示:
9. 建立 Z 報告以呼叫 GET_SUPPORTED_LANGUAGES 方法
- 登入 SAP 系統
- 前往交易代碼
SE38
,建立名為ZDEMO_GET_LANGUAGES.
的報表計畫 - 在隨即出現的彈出式視窗中,提供下方所述的詳細資料,然後按一下「儲存」。
在下一個彈出式視窗中,選取「本機物件」或視需要提供套件名稱。
- 在 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.
- 儲存並啟用報表。
- 執行報表 (F8)。
成功執行後,報表輸出內容應如下所示:
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
刪除個別資源
- 刪除運算執行個體:
gcloud compute instances delete abap-trial-docker
- 刪除防火牆規則:
gcloud compute firewall-rules delete sapmachine
- 刪除服務帳戶:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com