将 Translation API 与适用于 Google Cloud 的 ABAP SDK 搭配使用

1. 简介

此 Codelab 介绍了使用适用于 Google Cloud 的 ABAP SDK 调用 Translation API V3(高级版)的方法的步骤。在此 Codelab 中,我们将了解如何使用 Translation API V3 翻译文本、检测文本的语言以及列出支持的语言

此 Codelab 使用以下 Google Cloud 服务:

  • Compute Engine
  • 网络服务
  • Cloud Shell
  • Cloud Translation API V3

前提条件

构建内容

您将使用 ABAP SDK for Google Cloud 在 SAP 系统中创建以下程序:

  • 使用 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,则使用虚拟机外部 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 系统。
  • 您必须先完成 Codelab 1(在 Google Cloud Platform 上安装 ABAP 平台试用版 1909 并安装适用于 Google Cloud 的 ABAP SDK)和 Codelab 2(使用在 Compute Engine 虚拟机上托管的 SAP 的令牌配置 ABAP SDK 身份验证),然后再继续此 Codelab。
  • 如果您已完成 Codelab 1 和 Codelab 2,则会在 Google Cloud 上为您预配一个 ABAP 平台试用 1909 系统,以及所需的身份验证和连接设置。
  • 如果您尚未完成 Codelab 1 和 Codelab 2,则将无法获得执行此 Codelab 中提供的步骤所需的基础架构和连接。因此,您必须先完成 Codelab 1 和 Codelab 2,然后才能继续学习此 Codelab。

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 User 角色的服务账号

如需创建具有所需角色的服务账号,请执行以下步骤:

  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

6. 创建客户端密钥配置

现在,您已经在 Google Cloud 端设置了前提条件,我们可以继续在 SAP 端进行配置。

对于身份验证和连接相关配置,适用于 Google Cloud 的 ABAP SDK 使用表 /GOOG/CLIENT_KEY

如需保留表“/GOOG/CLIENT_KEY”表中的配置,请执行以下步骤:

  1. 在 SAP GUI 中,输入事务代码 SPRO
  2. 点击 SAP 参考 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

在下一个弹出式窗口中,选择“本地对象”或根据您的选择提供软件包名称。

  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

8. 创建 Z-Report 以调用 Cloud Translation API V3 并检测语言

  1. 登录您的 SAP 系统。
  2. 找到交易代码“SE38”,创建名为“ZDEMO_DETECT_LANGUAGE.”的举报计划
  3. 在随即打开的弹出式窗口中,提供如下所示的详细信息,然后点击保存

64c2eb0e0173ae51

在下一个弹出式窗口中,选择“本地对象”或根据您的选择提供软件包名称。

  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-Report 以调用 GET_SUPPORTED_LANGUAGES 方法

  1. 登录您的 SAP 系统
  2. 找到交易代码“SE38”,创建名为“ZDEMO_GET_LANGUAGES.”的举报计划
  3. 在随即打开的弹出式窗口中,提供如下所示的详细信息,然后点击保存

3819fc355cf2cd4d

在下一个弹出式窗口中,选择“本地对象”或根据您的选择提供软件包名称。

  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

10. 恭喜

恭喜!您已成功完成“将 Translation API 与 ABAP SDK for Google Cloud 搭配使用”Codelab。

Cloud Translation API V3(也称为 Cloud Translation API 高级版)具有许多功能,包括:

  • 使用自定义模型进行翻译
  • 使用术语表进行翻译
  • 音译支持
  • 文档翻译

现在,您可以继续学习以下 Codelab,继续学习使用适用于 Google Cloud 的 ABAP SDK 访问各种 Google Cloud 服务。

  • 将事件发送到 Pub/Sub
  • 从 Cloud Pub/Sub 接收事件
  • 使用分块将大型对象上传到 Cloud Storage 存储分区
  • 使用 DLP API 遮盖个人身份信息
  • 通过 ABAP 调用 BigQuery ML

11. 清理

如果您不想继续学习与 ABAP SDK for Google Cloud 相关的其他 Codelab,请继续进行清理。

删除项目

  • 删除 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