1. はじめに
この Codelab では、SAP システムが Compute Engine VM インスタンスでホストされている場合に、トークンを使用して Google Cloud APIs にアクセスするための認証を設定する手順を説明します。
使用されるサービスは次のとおりです。
- Compute Engine
- ネットワーク サービス
- Cloud Shell
作成するアプリの概要
次のことを行います。
- Google API に接続するように、SAP システムにインストールされている ABAP SDK を構成します。
- Address Validation API を呼び出すサンプルのレポート プログラムを作成します。
2. 要件
- ブラウザ(Chrome、Firefox など)
- 課金が有効になっている Google Cloud プロジェクト、または Google Cloud Platform の 90 日間無料トライアル アカウントを作成する。
- システムにインストール済みの SAP GUI(Windows または Java)。SAP GUI がすでにシステムにインストールされている場合は、アプリケーション サーバーの IP として VM の外部 IP アドレスを使用して SAP に接続します。Mac を使用している場合は、こちらのリンクから SAP GUI for Java をインストールすることもできます。
3. 始める前に
- Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクト(例:
abap-sdk-poc).
)を選択または作成します。 - Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。90 日間無料トライアル アカウントを使用している場合は、この手順をスキップしてください。
- ここでは、Google Cloud で動作するコマンドライン環境である Cloud Shell を使用します。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
- ABAP SDK for Google Cloud がインストールされている SAP システムにアクセスできることを確認します。
- 詳しくは、Codelab「Install ABAP Platform Trial 2022 on Google Cloud Platform and Install ABAP SDK」必要ありません。
4. サービス アカウントを作成し、サービス アカウント トークン作成者のロールを設定する
必要なロールを持つサービス アカウントを作成するには、次の操作を行います。
- 次のコマンドを実行してサービス アカウントを作成します(サービス アカウントがすでに存在する場合は、この手順をスキップしてください)。
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- 次のコマンドを実行して、サービス アカウント トークン作成者のロールを設定します。
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] > [Basic Settings] > [Configure Client Key] をクリックします。
- [New Entries] をクリックします。
- 次のフィールドに値を入力します。
フィールド | 説明 |
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 から取得できます。 |
その他のフィールドは空白のままにする
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 について次の詳細を入力します。
- [Technical Settings] タブで、宛先 ZGOOG_ADDRESSVALIDATION_V1 について次の情報を入力します。
- [SSL Certificate] フィールドで、両方の RFC 宛先に対して [DEFAULT SSL Client (Standard)] オプションが選択されていることを確認します。
7. サービス マッピングを構成する
IAM API と Address Validation API のサービス マッピング テーブルを構成するには、次の手順を行います。
- SAP GUI で、トランザクション コード SPRO を入力します。
- [SAP 参照 IMG] をクリックします。
- [ABAP SDK for Google Cloud] > [Basic Settings] > [Configure Service Mapping] をクリックします。
- RFC 宛先にリンクされている IAM 認証情報と Address Validation API の [New Entries] をクリックします。
8. 構成を検証する
認証構成を検証するには、次の操作を行います。
- SAP GUI で、トランザクション コード SPRO を入力します。
- [SAP 参照 IMG] をクリックします。
- [ABAP SDK for Google Cloud] > [Utilities] > [Validate Authentication Configuration] をクリックします。
- クライアント キー名として「
ABAP_SDK_DEMO
」と入力します。 - [Execute] をクリックして、フロー全体が正しく構成されているかどうかを確認します。
- [結果] 列の緑色のチェックマークは、すべての設定ステップが正常に完了したことを示します。
9. Address Validation サービスを呼び出すレポート プログラムを作成する
- SAP システムにログインします。
- トランザクション コード SE38 に移動し、ZDEMO_ADDRESS_VALIDATION という名前のレポート プログラムを作成します。
- 表示されたポップアップで、以下のように詳細を入力して [Save] をクリックします。
- 次のポップアップで、[Local Object] を選択するか、必要に応じてパッケージ名を入力します。
- 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.完了
これで、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
リソースを個別に削除する
- [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