本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门 适用于 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"
 
    - JSON
- 
            
     
        
- 
             
                
                {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Principal": {
                "AWS": "111122223333"
            }
        }
    ]
}
 
 
 
 此示例表明,来自的任何委托人 AWS 账户
"111122223333"
 
             
             
             
          - 
              特定用户 — 当 SAP 系统使用以下任一用户时: 
- 
              特定角色 — 当 SAP 系统位于 Amazon 上 EC2 并且有实例配置文件时。 
- 
              亚马逊  EC2  — 当 SAP 系统位于亚马逊上 EC2 且没有实例配置文件时。 
 
 
 
      有关更多信息,请参阅 IAM 安全最佳实践。
     
     
      身份验证
      身份验证取决于 SAP 系统的托管位置。
      
       
        在 AWS 云上
        确保运行您的 SAP 系统的 EC2 实例具有具有以下权限的实例配置文件。
        
    - JSON
- 
            
     
        
- 
             
                
                {
    "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 配置文件中配置的设置的DEMOSDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的TESTUSERIAM 逻辑角色中。
 
- SDK for SAP ABAP - BTP edition
- 
          创建业务角色 
             
             
             
             
             
             
          - 
              在 Web 浏览器中打开您的 ABAP 环境,然后导航到 “维护业务角色” 应用程序。 
- 
              选择 “从模板创建”,然后输入以下详细信息。 
- 
              选择 “确定” 以查看业务角色的页面。 
- 
              在 “常规角色详细信息” 选项卡下,转到 “访问类别”,然后将 “写入、读取、值帮助” 字段设置为 “受限”。 
- 
              选择 “维护限制”,然后从左侧导航窗格中展开 “分配的限制类型”。更新 “限制和值” 部分中的以下字段。 
                 
                 
              - 
                  在 “选择 SDK 会话” 下,选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO,然后选择添加。
 
- 
                  在 “选择逻辑 IAM 角色” 下,选择 “逻辑 IAM 角色” 旁边的铅笔图标,然后导航到 “范围” 选项卡。输入TESTUSER,然后选择添加。
 选择 SDK 配置文件旁边的铅笔图标,然后导航到 “范围” 选项卡。输入DEMO,然后选择添加
 
 
 
- 
              返回到 “业务角色” 模板,然后打开 “业务用户” 选项卡。选择 “添加”,将新创建的业务角色分配给将测试 SDK 功能的 SAP 业务用户。选择保存。 
 
 分配给所创建业务角色的任何业务用户都将被授权使用 AWS SDK 配置文件中配置的设置的 DEMOSDK 功能。授权用户还将代入 IAM 角色,其映射在配置文件的TESTUSERIAM 逻辑角色中。
 
第 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 权限和信任配置。