Compute Engine VM でホストされている SAP 用のトークンを使用して ABAP SDK 認証を構成し、Address validation API を実行する

1. はじめに

この Codelab では、SAP システムが Compute Engine VM インスタンスでホストされている場合に、トークンを使用して Google Cloud APIs にアクセスするための認証を設定する手順を説明します。

使用されるサービスは次のとおりです。

  • Compute Engine
  • ネットワーク サービス
  • Cloud Shell

作成するアプリの概要

次のことを行います。

  • Google API に接続するように、SAP システムにインストールされている ABAP SDK を構成します。
  • Address Validation API を呼び出すサンプルのレポート プログラムを作成します。

2. 要件

  • ブラウザ(ChromeFirefox など)
  • 課金が有効になっている Google Cloud プロジェクト、または Google Cloud Platform の 90 日間無料トライアル アカウントを作成する
  • システムにインストール済みの SAP GUI(Windows または Java)。SAP GUI がすでにシステムにインストールされている場合は、アプリケーション サーバーの IP として VM の外部 IP アドレスを使用して SAP に接続します。Mac を使用している場合は、こちらのリンクから SAP GUI for Java をインストールすることもできます。

3. 始める前に

6757b2fb50ddcc2d.png

  • 必要なすべての 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

4. サービス アカウントを作成し、サービス アカウント トークン作成者のロールを設定する

必要なロールを持つサービス アカウントを作成するには、次の操作を行います。

  1. 次のコマンドを実行してサービス アカウントを作成します(サービス アカウントがすでに存在する場合は、この手順をスキップしてください)。
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. 次のコマンドを実行して、サービス アカウント トークン作成者のロールを設定します。
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 システムにログインし、次の手順でクライアント キーを構成します。

  1. SAP GUI で、トランザクション コード SPRO を入力します。
  2. [SAP 参照 IMG] をクリックします。
  3. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Client Key] をクリックします。
  4. [New Entries] をクリックします。
  5. 次のフィールドに値を入力します。

フィールド

説明

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 プロジェクト ID

abap-sdk-poc

認可クラス

/GOOG/CL_AUTH_GOOGLE から取得できます。

その他のフィールドは空白のままにする

c72e71da6fd75b29.png

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 宛先は Address validation API をターゲットとしています

  • [Technical Settings] タブで、宛先 ZGOOG_IAMCREDENTIALS について次の詳細を入力します。

e670c6a91acba40f.png

  • [Technical Settings] タブで、宛先 ZGOOG_ADDRESSVALIDATION_V1 について次の情報を入力します。

fcf92530ece612ea.png

  • [SSL Certificate] フィールドで、両方の RFC 宛先に対して [DEFAULT SSL Client (Standard)] オプションが選択されていることを確認します。

b6370d12bd332318.png

7. サービス マッピングを構成する

IAM API と Address Validation API のサービス マッピング テーブルを構成するには、次の手順を行います。

  1. SAP GUI で、トランザクション コード SPRO を入力します。
  2. [SAP 参照 IMG] をクリックします。
  3. [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
  4. RFC 宛先にリンクされている IAM 認証情報と Address Validation API の [New Entries] をクリックします。

e227316b0f249823.png

8. 構成を検証する

認証構成を検証するには、次の操作を行います。

  1. SAP GUI で、トランザクション コード SPRO を入力します。
  2. [SAP 参照 IMG] をクリックします。
  3. [ABAP SDK for Google Cloud] > [Utilities] > [Validate Authentication Configuration] をクリックします。
  4. クライアント キー名として「ABAP_SDK_DEMO」と入力します。
  5. [Execute] をクリックして、フロー全体が正しく構成されているかどうかを確認します。
  6. [結果] 列の緑色のチェックマークは、すべての設定ステップが正常に完了したことを示します。

d7285e64e22c25b6.png

9. Address Validation サービスを呼び出すレポート プログラムを作成する

  1. SAP システムにログインします。
  2. トランザクション コード SE38 に移動し、ZDEMO_ADDRESS_VALIDATION という名前のレポート プログラムを作成します。
  3. 表示されたポップアップで、以下のように詳細を入力して [Save] をクリックします。

d8aac0f9e0bc5f9d.png

  1. 次のポップアップで、[Local Object] を選択するか、必要に応じてパッケージ名を入力します。
  2. 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.
  1. レポートを保存して有効にします。
  2. レポートを実行します(F8)。

正常に実行されると、次のようなレポート出力が表示されます。

8b0aed97320f4ef.png

10.完了

これで、Address Validation サービスを呼び出すように ABAP SDK が正常に構成されました。

他の ABAP SDK Codelab に進んで、ABAP SDK for Google Cloud を使用してさまざまな Google Cloud サービスにアクセスする方法を学習します。

11. クリーンアップ

ABAP SDK for Google Cloud に関連する追加の Codelab の続行を希望されない場合は、クリーンアップに進んでください。

プロジェクトの削除

  • Google Cloud プロジェクトを削除します。
gcloud projects delete abap-sdk-poc

リソースを個別に削除する

  1. [IMG] > [Google Cloud >基本設定 >クライアント キーを構成する。
  2. [IMG] > [Google Cloud >基本設定 >クライアント キーを構成する。
  3. RFC 宛先 ZGOOG_IAMCREDENTIALSZGOOG_ADDRESSVALIDATION_V1 を削除します。
  4. サービス アカウントを削除します。
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com