本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门 适用于 SAP ABAP 的 AWS SDK
本节介绍如何开始使用 SDK。其中包括有关安装 SDK、执行基本配置和创建使用不同语言翻译短语的 Hello World 代码示例的信息。如果您不熟悉 AWS SDK,我们建议您在沙盒环境中执行这些步骤。
第 1 步:准备 AWS 账户
必须准备一个活动 AWS 账户 ,才能开始使用适用于 SAP ABAP 的 SDK。 AWS 账户 即使你的 SAP 系统托管在本地、SAP 业务技术平台 (BTP) 上或其他云提供商,你也需要一个。
如果您的 SAP 系统在 AWS Cloud 上运行,那么您将调用自己的 AWS
服务 AWS 账户。
适用于 SAP 用户的 IAM 角色
-
根据 AWS Identity and Access Management 用户指南说明,创建 IAM 角色。有关更多信息,请参阅创建角色以向 AWS 服务委派权限。记下 IAM 角色的 Amazon 资源名称 (ARN) 以备后用。
-
选择 Amazon EC2 作为用例。
-
使用 SapDemoTranslate
作为角色名称。
-
为角色附加 TranslateReadOnly
配置文件。
-
角色必须具有以下实体,才能支持 SAP 系统代入此角色。将 "111122223333"
替换为您的 AWS
账号。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Principal": { "AWS": "111122223333"
}
}
]
}
此示例表明,来自的任何委托人 AWS 账户
"111122223333"
都可以担任该角色。这是一个广泛的权限,适用于 proof-of-concept。在生产环境中可以使用权限更小的主体,如以下示例。
-
特定用户 — 当 SAP 系统使用以下任一用户时:
-
特定角色 — 当 SAP 系统在 Amazon 上 EC2 并且有实例配置文件时。
-
亚马逊 EC2 — 当 SAP 系统位于亚马逊上 EC2 且没有实例配置文件时。
有关更多信息,请参阅 IAM 安全最佳实践。
身份验证
身份验证取决于 SAP 系统的托管位置。
在 AWS 云上
确保运行您的 SAP 系统的 EC2 实例具有具有以下权限的实例配置文件。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111122223333:role/SapDemoTranslate"
}
]
}
添加之前步骤中记录的 ARN。
此权限能让 SAP 系统代表 ABAP 用户代入 SapDemoTranslate
角色。
本地、SAP BTP 或其他云端
如果您的 SAP 系统位于本地、SAP BTP 或其他云上,请使用以下步骤使用私有访问密钥建立身份验证连接。
-
创建 IAM 用户。有关更多信息,请参阅创建 IAM 用户(控制台)。
-
使用 SapDemoSID
作为 IAM 用户名以及 SID
作为 SAP 系统的系统 ID。
-
为用户分配 SapDemoTranslate
角色。
保留access_key
和secret_access_key
。您必须在 SAP 系统中配置这些凭证。
如果您的 SAP 系统位于本地、SAP BTP 或其他云上,则可以使用以下选项之一进行身份验证。
第 2 步:安装软件开发工具包
有关安装说明,请参阅以下选项卡。
- SDK for SAP ABAP
-
向 SAP 系统传输适用于 SAP ABAP 的 SDK。此传输内容可导入任意客户端。有关更多信息,请参阅安装适用于 SAP ABAP 的开发工具包。
- SDK for SAP ABAP - BTP edition
-
使用 Deplo y Pro duct 应用程序安装适用于 SAP ABAP 的 SDK-BTP 版。有关更多信息,请参阅安装适用于 SAP ABAP 的 SDK-BTP 版。
在配置 SDK 之前,请确保您拥有所需的授权。有关更多信息,请参阅 SAP 授权。
有关配置说明,请参阅以下选项卡。
- SDK for SAP ABAP
-
运行/AWS1/IMG
事务以打开适用于 SAP ABAP 的 SDK 实施指南。如需运行此事务,请在 SAP 系统的命令栏中输入 /n/AWS1/IMG
,然后点击 Enter。
完成以下配置。
-
转到技术先决条件。
-
转到全局设置 → 配置场景。
-
转到全局设置 → 技术设置。
-
转到运行时设置 → 记录和跟踪。
-
选择新建条目。
-
跟踪等级:无跟踪。
-
最大转储行数:100
。
-
选择加入:增强遥测功能:留空。
-
选择保存。
-
转到运行时设置 → 活动场景。
-
在新建场景中选择 DEFAULT
。
-
选择提交场景更改。
-
接受提示。
本地系统的先决条件
如果 SAP 系统运行在本地或其他云中,则必须将凭证存储在 SAP 数据库中。凭证使用 SAP SSF 进行加密,需要配置加密库,例如 SAP 的加密库。 CommonCryptoLib
/AWS1/IMG
事务描述了为适用于 SAP ABAP 的 SDK 配置 SSF 的步骤。
如果您的 SAP 系统在 Amazon 上运行,则上述先决条件不适用 EC2。在 Amazon 上运行的 SAP 系统会从亚马逊 EC2 实例元数据中 EC2 检索短暂的、自动轮换的证书。
- SDK for SAP ABAP - BTP edition
-
在 Web 浏览器中打开您的 ABAP 环境,然后导航到 “自定义业务配置” 应用程序。
完成以下配置。
第 4 步:功能设置
有关设置说明,请参阅以下选项卡。
- SDK for SAP ABAP
-
运行事务/AWS1/IMG
(/n/AWS1/IMG
在命令栏中输入,然后选择 Enter)以打开 AWS SDK 的实现指南。
- SDK for SAP ABAP - BTP edition
-
使用 SAP 凭据存储设置身份验证。有关更多信息,请参阅使用 SAP 凭据存储。
在 Web 浏览器中打开您的 ABAP 环境,然后导航到 “自定义业务配置” 应用程序。
步骤 5:授权 SAP 用户
默认情况下,SAP 用户无权使用 AWS 功能。必须使用 SAP 权限对用户进行明确授权。有关更多详细信息,请参阅以下选项卡。
- SDK for SAP ABAP
-
创建 PFCG 角色
向 SAP 用户分配 PFCG 角色
任何分配了ZAWS_SDK_DEMO_TESTUSER
角色的用户都将被授权使用 AWS SDK 配置文件中配置的设置的 DEMO
SDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的 TESTUSER
IAM 逻辑角色中。
- SDK for SAP ABAP - BTP edition
-
创建业务角色
-
在 Web 浏览器中打开 ABAP 环境,然后导航到 “维护业务角色” 应用程序。
-
选择 “从模板创建”,然后输入以下详细信息。
-
选择 “确定” 以查看业务角色的页面。
-
在 “常规角色详细信息” 选项卡下,转到 “访问类别”,然后将 “写入、读取、值帮助” 字段设置为 “受限”。
-
选择 “维护限制”,然后从左侧导航窗格中展开 “分配的限制类型”。更新 “限制和值” 部分中的以下字段。
-
在 “选择 SDK 会话” 下,选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO
,然后选择添加。
-
在 “选择逻辑 IAM 角色” 下,选择 “逻辑 IAM 角色” 旁边的铅笔图标,然后导航到 “范围” 选项卡。输入TESTUSER
,然后选择添加。
选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO
,然后选择添加
-
返回到 “业务角色” 模板,然后打开 “业务用户” 选项卡。选择 “添加”,将新创建的业务角色分配给将测试 SDK 功能的 SAP 业务用户。选择保存。
分配给所创建业务角色的任何业务用户都将被授权使用 AWS SDK 配置文件中配置的设置的 DEMO
SDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的 TESTUSER
IAM 逻辑角色中。
第 6 步:编写代码
有关更多详细信息,请参阅以下选项卡。
- SDK for SAP ABAP
-
添加以下代码。
*&---------------------------------------------------------------------*
*& Report ZAWS1_DEMO_XL8_SIMPLE
*&
*&---------------------------------------------------------------------*
*& A simple demo of language translation with AWS Translate
*&
*&---------------------------------------------------------------------*
REPORT zaws1_demo_xl8_simple.
START-OF-SELECTION.
PARAMETERS pv_text TYPE /aws1/xl8boundedlengthstring DEFAULT 'Hello, World' OBLIGATORY.
PARAMETERS pv_lang1 TYPE languageiso DEFAULT 'EN' OBLIGATORY.
PARAMETERS pv_lang2 TYPE languageiso DEFAULT 'ES' OBLIGATORY.
TRY.
DATA(go_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ).
DATA(go_xl8) = /aws1/cl_xl8_factory=>create( go_session ).
DATA(lo_output) = go_xl8->translatetext(
iv_text = pv_text
iv_sourcelanguagecode = CONV /aws1/xl8languagecodestring( pv_lang1 )
iv_targetlanguagecode = CONV /aws1/xl8languagecodestring( pv_lang2 )
).
WRITE: / 'Source Phrase: ', pv_text.
WRITE: / 'Target Phrase: ', lo_output->get_translatedtext( ).
CATCH /aws1/cx_xl8unsuppedlanguage00 INTO DATA(lo_lang).
WRITE: / 'ERROR' COLOR COL_NEGATIVE,
'Cannot translate from',
lo_lang->sourcelanguagecode,
'to',
lo_lang->targetlanguagecode.
CATCH cx_root INTO DATA(lo_root).
WRITE: / 'ERROR' COLOR COL_NEGATIVE, lo_root->get_text( ).
ENDTRY.
- SDK for SAP ABAP - BTP edition
-
-
右键单击需要创建 ABAP 类的软件包,然后选择 “新建” > “ABAP 类”。
-
输入ZCL_DEMO_XL8_SIMPLE
类名,然后添加班级描述。选择下一步。
-
创建或选择传输请求。选择 “完成”。
添加以下代码。
CLASS zcl_demo_xl8_simple DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_demo_xl8_simple IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
TRY.
" input parameters
DATA(pv_text) = |Hello, World|.
DATA(pv_lang1) = |EN|.
DATA(pv_lang2) = |ES|.
DATA(go_session) = /aws1/cl_rt_session_aws=>create( 'DEMO' ).
DATA(go_xl8) = /aws1/cl_xl8_factory=>create( go_session ).
DATA(lo_output) = go_xl8->translatetext(
iv_text = pv_text
iv_sourcelanguagecode = pv_lang1
iv_targetlanguagecode = pv_lang2
).
out->write( |Source Phrase: { pv_text }| ).
out->write( |Target Phrase: { lo_output->get_translatedtext( ) }| ).
CATCH /aws1/cx_xl8unsuppedlanguage00 INTO DATA(lo_lang).
out->write( |ERROR - Cannot translate from { lo_lang->sourcelanguagecode } to { lo_lang->targetlanguagecode }| ).
CATCH cx_root INTO DATA(lo_root).
out->write( |ERROR - { lo_root->get_text( ) }| ).
ENDTRY.
ENDMETHOD.
ENDCLASS.
有关如何编写使用 SDK 的 ABAP 代码的详细信息,请参阅使用 适用于 SAP ABAP 的 AWS SDK。
步骤 7:运行应用程序
有关更多详细信息,请参阅以下选项卡。
- SDK for SAP ABAP
-
在 SE38
中运行应用程序。成功运行后将输出以下内容。
Source Phrase: Hello, World
Target Phrase: Hola, mundo
如果缺失授权、配置或基础先决条件,您会收到一条错误消息。请参阅以下示例。
ERROR Could not find configuration under profile DEMO with
scenario DEFAULT for SBX:001
如果您尚未向 SAP 系统配置可代入 IAM 角色的 IAM 权限,就已获得 SAP 角色授予的 SDK 配置文件使用权限,并能够将其映射到 IAM 逻辑角色,则您会收到以下输出内容。
ERROR Could not assume role arn:aws:iam::111122223333:role/SapDemoTranslate
此时,请查看 第 1 步:准备 AWS 账户 中定义的 IAM 角色和/或用户上的 IAM 权限和信任配置。
- SDK for SAP ABAP - BTP edition
-
在 Eclipse > 运行方式 > ABAP 应用程序(控制台)上运行该应用程序。成功运行后将输出以下内容。
Source Phrase: Hello, World
Target Phrase: Hola, mundo
如果缺失授权、配置或基础先决条件,您会收到一条错误消息。请参阅以下示例。
ERROR Could not find configuration under profile DEMO with
scenario DEFAULT for SBX:001
如果您尚未向 SAP 系统配置可代入 IAM 角色的 IAM 权限,就已获得 SAP 角色授予的 SDK 配置文件使用权限,并能够将其映射到 IAM 逻辑角色,则您会收到以下输出内容。
ERROR Could not assume role arn:aws:iam::111122223333:role/SapDemoTranslate
此时,请查看 第 1 步:准备 AWS 账户 中定义的 IAM 角色和/或用户上的 IAM 权限和信任配置。