1. 简介
在此 Codelab 中,您将逐步了解如何设置身份验证,以便在 SAP 系统托管在 Compute Engine 虚拟机实例上时使用令牌访问 Google Cloud API。
使用的服务如下:
- Compute Engine
- 网络服务
- Cloud Shell
构建内容
您将执行以下操作:
- 配置 SAP 系统上安装的 ABAP SDK 以连接到 Google API。
- 创建示例报告程序以调用 Address Validation API。
2. 要求
- 一个浏览器,例如 Chrome 或 Firefox。
- 启用了结算功能的 Google Cloud 项目,或者为 Google Cloud Platform 创建 90 天免费试用账号。
- 您的系统中已安装 SAP GUI(Windows 或 Java)。如果您的系统中已安装 SAP GUI,请使用虚拟机外部 IP 地址作为应用服务器 IP 地址连接到 SAP。如果您使用的是 Mac,还可以安装此链接中提供的适用于 Java 的 SAP GUI。
3. 准备工作
- 在 Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目(例如
abap-sdk-poc).
) - 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。如果您使用的是 90 天免费试用账号,请跳过此步骤。
- 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境。在 Cloud 控制台中,点击右上角的激活 Cloud Shell:
- 确保所有必要的 API(IAM Service Account Credentials API 和 Address Validation API)都已启用。
- 运行以下命令以对您的账号进行身份验证,并将默认项目设置为
abap-sdk-poc
。以可用区us-west4-b
为例。如果需要,请根据您的偏好在以下命令中更改项目和可用区。
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
PROJECT_NAME=abap-sdk-poc
REGION=us-west4
ZONE=us-west4-b
- 确保您可以访问安装了适用于 Google Cloud 的 ABAP SDK 的 SAP 系统。
- 您可以参考 Codelab在 Google Cloud Platform 上安装 ABAP 平台试用版 2022 并安装 ABAP SDK”以设置新系统。
4. 创建服务账号并设置 Service Account Token Creator 角色
如需创建具有所需角色的服务账号,请执行以下步骤:
- 运行以下命令以创建服务账号:(如果服务账号已存在,请跳过此步骤)
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- 运行以下命令以设置 Service Account Token Creator 角色:
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member=serviceAccount:abap-sdk-dev@$PROJECT_NAME.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator
5. 配置客户端密钥
使用用户名 DEVELOPER
和密码 Htods70334
登录 SAP 系统,然后按照以下步骤配置客户端密钥:
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > 基本设置 > 配置客户端密钥。
- 点击新建条目。
- 输入以下字段的值:
字段 | 说明 |
Google Cloud 密钥名称 | ABAP_SDK_DEMO |
Google Cloud 服务账号名称 | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud 范围 | https://www.googleapis.com/auth/cloud-platform |
Google Cloud 项目标识符 | abap-sdk-poc |
授权类 | /GOOG/CL_AUTH_GOOGLE。 |
将其他字段留空
6. 创建 RFC 目标
为 IAM 凭据和 Address Validation API 创建 RFC 目标位置。
RFC 目标名称 | 目标主机(API 端点) | 备注 |
ZGOOG_IAMCREDENTIALS | 主机:iamcredentials.googleapis.com路径:前缀:/v1/端口:443SSL:有效 | 此 RFC 目标以 IAM API 为目标。 |
ZGOOG_ADDRESSVALIDATION_V1 | 主机:addressvalidation.googleapis.com端口:443SSL:有效 | 此 RFC 目标目标地址验证 API |
- 在 Technical Settings(技术设置)标签页下,为 ZGOOG_IAMCREDENTIALS 目标输入以下详细信息。
- 在 Technical Settings(技术设置)标签页下,为 ZGOOG_ADDRESSVALIDATION_V1 目标输入以下详细信息。
- 对于 SSL 证书字段,请确保为两个 RFC 目标都选择了默认 SSL 客户端(标准)选项。
7. 配置服务映射
如需为 IAM API 和 Address Validation API 配置服务映射表,请执行以下步骤:
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > 基本设置 > 配置服务映射。
- 对于关联到 RFC 目标的 IAM Credential and Address verification API,点击新条目。
8. 验证配置
如需验证身份验证配置,请执行以下步骤:
- 在 SAP GUI 中,输入事务代码 SPRO。
- 点击 SAP 参考 IMG。
- 点击 ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration。
- 输入
ABAP_SDK_DEMO
作为客户端密钥名称。 - 点击 Execute 以检查整体流是否已成功配置。
- “结果”列中的绿色对勾标记表示所有配置步骤均成功完成。
9. 创建报告程序以调用地址验证服务
- 登录您的 SAP 系统。
- 找到交易代码 SE38,然后创建一个名为 ZDEMO_ADDRESS_VALIDATION 的报告程序。
- 在随即打开的弹出式窗口中,提供如下所示的详细信息,然后点击保存。
- 在下一个弹出式窗口中,选择本地对象或提供适当的软件包名称。
- 在 ABAP 编辑器中,添加以下代码:
" data declarations
DATA lv_ret_code TYPE i.
DATA lv_err_text TYPE string.
DATA ls_input TYPE /goog/cl_addrvaldn_v1=>ty_012.
DATA ls_output TYPE /goog/cl_addrvaldn_v1=>ty_013.
DATA ls_err_resp TYPE /goog/err_resp.
DATA lo_exception TYPE REF TO /goog/cx_sdk.
DATA lo_address_validator TYPE REF TO /goog/cl_addrvaldn_v1.
" instantiate api client stub
TRY.
lo_address_validator = NEW #( iv_key_name = 'ABAP_SDK_DEV' ).
" Pass the address to be validated and corrected.
" Mountain misspelled as Moutain
" Amphitheatre misspelled as Amphithetre
ls_input-address-region_code = 'US'.
ls_input-address-locality = 'Moutain View'.
APPEND '1600, Amphithetre, Parkway' TO ls_input-address-address_lines.
" call the api method to validate address
lo_address_validator->validate_address( EXPORTING is_input = ls_input
IMPORTING es_output = ls_output
ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_err_resp = ls_err_resp ).
IF lo_address_validator->is_success( lv_ret_code ) = abap_true
AND ls_output-result-verdict-address_complete = abap_true.
cl_demo_output=>new(
)->begin_section( `Original Address`
)->write_data( ls_input-address-region_code
)->write_data( ls_input-address-locality
)->write_data( ls_input-address-address_lines
)->next_section( `Validated & Corrected Address`
)->begin_section( `Elementary Object`
)->write_data( ls_output-result-address-formatted_address
)->display( ).
ENDIF.
CATCH /goog/cx_sdk INTO lo_exception.
" write code here to handle exceptions
cl_demo_output=>display( lo_exception->get_text( ) ).
ENDTRY.
- 保存并启用报告。
- 执行报告 (F8)。
成功执行后,您应该会看到报告输出,如下所示:
10. 恭喜
恭喜!您已成功将 ABAP SDK 配置为调用地址验证服务。
您现在可以继续学习其他 ABAP SDK Codelab,继续学习使用适用于 Google Cloud 的 ABAP SDK 访问各种 Google Cloud 服务。
11. 清理
如果您不想继续学习与 ABAP SDK for Google Cloud 相关的其他 Codelab,请继续进行清理。
删除项目
- 删除 Google Cloud 项目:
gcloud projects delete abap-sdk-poc
删除个别资源
- 转到 IMG > 以删除客户端密钥配置条目Google Cloud >基本设置 >配置客户端密钥。
- 转到 IMG > 以删除服务映射配置条目Google Cloud >基本设置 >配置客户端密钥。
- 删除 RFC 目标 ZGOOG_IAMCREDENTIALS 和 ZGOOG_ADDRESSVALIDATION_V1。
- 删除服务账号:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com