1. 简介
此 Codelab 提供了使用 ABAP SDK for Google Cloud 调用 Translation API v3(高级版)方法的步骤。在本 Codelab 中,我们将了解如何使用 Translation API V3 翻译文本、检测文本的语言以及列出受支持的语言
此 Codelab 中使用了以下 Google Cloud 服务:
- Compute Engine
- 网络服务
- Cloud Shell
- Cloud Translation API v3
前提条件
- 确保您有权访问安装了 ABAP SDK for Google Cloud 的 SAP 系统。
- 您可以参阅 Codelab“在 Google Cloud Platform 上安装 ABAP Platform Trial 并安装 ABAP SDK”来设置新系统。
构建内容
您将使用 ABAP SDK for Google Cloud 在 SAP 系统中创建以下程序:
- 使用 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,请使用虚拟机外部 IP 地址作为应用服务器 IP 地址连接到 SAP。如果您使用的是 Mac,还可以安装 此链接中提供的 SAP GUI for Java。
3. 准备工作
- 确保您有权访问安装了 ABAP SDK for Google Cloud 的 SAP 系统。
- 您可以参阅 Codelab“在 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
- 您必须有权访问安装了 ABAP SDK for Google Cloud 的 SAP 系统。
- 您必须先完成 Codelab 1(在 Google Cloud Platform 上安装 ABAP Platform Trial 1909 并安装 ABAP SDK for Google Cloud)和 Codelab 2(使用令牌为在 Compute Engine VM 上托管的 SAP 配置 ABAP SDK 身份验证),然后才能继续学习本 Codelab。
- 如果您已完成 Codelab 1 和 Codelab 2,系统会为您预配 ABAP Platform Trial 1909 System on Google Cloud,以及身份验证和连接所需的设置。
- 如果您尚未完成 Codelab 1 和 Codelab 2,则无法获得执行本 Codelab 中所述步骤所需的所有基础架构和连接。因此,您必须先完成 Codelab 1 和 Codelab 2,然后才能继续学习本 Codelab。
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 User 角色的服务账号
如需创建具有所需角色的服务账号,请执行以下步骤:
- 在 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 页面。您创建的服务账号应会显示在列表中,并带有分配给它的角色,如下所示:
6. 创建客户端密钥配置
现在,您已在 Google Cloud 端设置好前提条件,接下来我们可以继续在 SAP 端进行配置。
对于与身份验证和连接相关的配置,ABAP SDK for Google Cloud 使用表 /GOOG/CLIENT_KEY
如需维护表 /GOOG/CLIENT_KEY
中的配置,请执行以下步骤:
- 在 SAP GUI 中,输入事务代码
SPRO
。 - 点击 SAP 参考 IMG。
- 依次点击 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. 恭喜
恭喜!您已成功完成“结合使用 Translation API 和 ABAP SDK for Google Cloud”Codelab。
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. 清理
如果您不想继续学习与 ABAP SDK for Google Cloud 相关的其他 Codelab,请继续进行清理。
删除项目
- 删除 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