オンプレミスまたはクラウド エディションの ABAP SDK for Google Cloud に関する問題のトラブルシューティングを行う場合は、SAP アプリケーション ログを使用して、エラーとログメッセージを確認します。
ソフトウェアの要件と前提条件を確認する
すべてのシステム ソフトウェアが必要な最小バージョンで動作し、ABAP SDK for Google Cloud の前提条件をすべて満たしていることを確認します。
SDK のインストールの前提条件については、始める前にをご覧ください。
SAP のサポート ドキュメントを読む
SAP ユーザー アカウントがある場合は、SAP ONE Support Launchpad で入手できる SAP ノートと SAP ナレッジベース記事を参照することで、多くの SAP ソフトウェアの問題を解決できます。
ロギング
ロギングが構成されている場合、ABAP SDK for Google Cloud はエラー メッセージを SAP アプリケーション ログに記録します。ロギングの詳細については、アプリケーション ロギングをご覧ください。
ログメッセージを確認するには、次の操作を行います。
- SAP GUI で、トランザクション コード
SLG1
を入力します。 - ログ オブジェクトとサブオブジェクトの名前を入力します。
- 有効な日時範囲を選択します。
- トランザクションを実行します。SDK によって生成されたすべてのログ メッセージが表示されます。
通常、ログ メッセージは次の 2 つのエントリで構成されます。
- 発生場所: エラーが発生したコードの場所に関する情報を提供します。トラブルシューティングのため、デバッグ中にこのコードの位置をブレークポイントとして使用できます。
- エラー メッセージ: オペレーションの実行中に発生したエラーの情報を提供します。
デバッグ
必要な認可を取得している場合は、API クライアント クラスをデバッグできます。
API クライアント クラスをデバッグするには、次のいずれかのオプションを使用します。
/GOOG/CL_HTTP_CLIENT
クラスのコンストラクタにブレークポイントを追加して、プログラムを実行します。または、使用しているメソッドにブレークポイントを追加して、プログラムを実行します。
HTTP トレース
エラーのトラブルシューティングでは、トランザクション(SMICM
または ST05
)で HTTP トレースを有効にできます。パフォーマンスへの影響を抑えるため、HTTP トレースを完了したら、可能な限り早い段階で無効にしてください。
構成に関する一般的な問題
/GOOG/MSG 461: Insufficient privileges for execution
問題: ユーザーが SDK の構成、ユーティリティ プログラム、デモプログラムを実行できない。
原因: ユーザーが認可されていません。
解決策: トランザクション SU53
を使用して、SDK の使用で不足している認可を特定します。ユーザー ID に必要な認可を取得するには、SAP セキュリティ管理者にお問い合わせください。詳しくは、認可を管理するをご覧ください。
/GOOG/MSG: 403 - Permission iam.serviceAccountTokenCreator
denied on resource (or it may not exist)
iam.serviceAccountTokenCreator
denied on resource (or it may not exist)問題: Compute Engine VM でホストされている SAP システムでトークンベースの認証方法を使用すると、Google Cloud APIs にアクセスできない。
原因: Compute Engine VM でホストされている SAP システムについて、クライアント キーの構成で指定したサービス アカウントが SAP ホスト VM を含むプロジェクトと異なる Google Cloud プロジェクト内に作成されている。
解決策: この問題を解決するには、次の手順を完了します。
- SAP ホスト VM を含む Google Cloud プロジェクトで、ホスト VM のサービス アカウントに
Service Account Token Creator
ロールを付与します。手順の詳細については、単一のロールを付与するをご覧ください。 - SAP ホスト VM を含む Google Cloud プロジェクトで、次の操作を行います。
- サービス アカウントを作成します。サービス アカウントの名前をメモします。Google Cloud APIs を含む別のプロジェクトにプリンシパルとしてサービス アカウントを追加する場合、この名前を指定します。サービス アカウントの作成方法については、サービス アカウントを作成するをご覧ください。
- SDK のクライアント キー構成で、このサービス アカウントを指定します。
- Google Cloud APIs を含む他のプロジェクトで、次の操作を行います。
- サービス アカウントをプリンシパルとして追加します。
- Google Cloud APIs に接続するための適切なロールを付与します。API 固有の事前定義ロールの詳細については、IAM の基本ロールと事前定義ロールのリファレンスをご覧ください。
詳細については、アクセス トークンを使用して認証するをご覧ください。
オペレーションに関する一般的な問題
クライアント スタブのパブリック メソッドを介して Google Cloud APIs を使用すると、エラーや例外が発生する可能性があります。これらのエラーと例外は次の 2 つのカテゴリに分類されます。
- ABAP SDK for Google Cloud によってトリガーされたエラーと例外
- Google Cloud APIs から返されたエラー
このセクションでは、SDK によってトリガーされるエラーと例外について説明します。API から返されるエラーについては、対応する API の公開ドキュメントをご確認ください。
/GOOG/MSG : 461 - Bad Request: Client key is not found in /GOOG/CLIENT_KEY table
問題: API クライアントのスタブ オブジェクトをインスタンス化できない。
原因: クライアント キー テーブル /GOOG/CLIENT_KEY
に有効なクライアント キーがありません。
解決策: クライアント キー テーブル /GOOG/CLIENT_KEY
で、有効なクライアント キーを保持します。API クライアント スタブをインスタンス化する場合は、インポート パラメータ iv_key_name
とともに有効なクライアント キーを渡します。
認証方法に固有の詳細情報を使用して、クライアント キーを構成します。認証方法については、認証をご覧ください。
インポート パラメータ iv_key_name
を使用してクライアント キーを渡す方法については、コンストラクタをご覧ください。
/GOOG/MSG : 461 - Log Object not maintained in TCode SLG0
問題: API クライアントのスタブ オブジェクトをインスタンス化できない。
原因: テーブル /GOOG/LOG_CONFIG
に無効なデフォルトのログ オブジェクトが保持されているか、無効なログ オブジェクトがインポート パラメータ iv_log_object
に渡されています。
解決策: SAP システムに有効なログ オブジェクトが存在することを確認します。
ロギングについては、アプリケーション ロギングをご覧ください。
ログ オブジェクトを渡す方法については、コンストラクタをご覧ください。
/GOOG/MSG : 461 - Log SubObject not maintained in TCode SLG0
問題: API クライアントのスタブ オブジェクトをインスタンス化できない。
原因: テーブル /GOOG/LOG_CONFIG
に無効なデフォルト ログ サブオブジェクトが保持されているか、無効なログ サブオブジェクトがインポート パラメータ iv_log_subobject
に渡されています。
解決策: 有効なログ サブオブジェクトが SAP システムに存在していることを確認します。
ロギングについては、アプリケーション ロギングをご覧ください。
ログ サブオブジェクトを渡す方法については、コンストラクタをご覧ください。
/GOOG/MSG : 461 - Destination does not exist exception occurred in reading RFC destination
問題: API クライアントのスタブ オブジェクトをインスタンス化できない。
原因: テーブル /GOOG/SERVIC_MAP
で、指定されたクライアント キーの RFC 宛先が SAP システムに存在しません。
解決策: 必要な RFC 宛先を作成します。詳細については、RFC 宛先を構成するをご覧ください。
/GOOG/MSG : 461 - Invalid RFC Destination GOOGLE_API exception occurred in reading RFC destination
問題: GOOGLE_API に接続できない。
原因: 考えられる原因は次のとおりです。
- RFC 接続タイプが
G - HTTP connection to external server
でない。 443
サービス番号指定されていない。- デフォルトの SSL クライアント(標準)が無効になっている。
解決策: 必要な RFC 宛先に対して、次の操作を行います。
- RFC 接続タイプを
G - HTTP connection to external server
に更新します。 - サービス番号が
443
になっていることを確認します。 - [SSL Certificate] フィールドで、[DFAULT SSL Client(Standard)] オプションが選択されていることを確認します。
- Google Cloud 環境上の SAP で、メタデータ サーバーに RFC 宛先を作成している場合は、サービス番号が
80
であることを確認してください。
RFC 宛先の作成方法については、以下をご覧ください。
/GOOG/MSG : 461 - ERROR_MESSAGE exception occurred during the request creation
問題: Google Cloud APIs に接続できない。
原因: SAP システムで HTTP クライアント オブジェクトを作成できません。
解決策: HTTP を介して外部サーバーと通信するように ICM が構成されていることを確認します。詳細については、Internet Communication Manager(ICM)を検証するをご覧ください。
/GOOG/MSG: 461 - Secret Manager Client Key not maintained in table /GOOG/CLIENT_KEY ERROR_MESSAGE
問題: Secret Manager 認可クラス /GOOG/CL_AUTH_API_KEY_SM
を使用して Google Cloud APIs に接続できない。
原因: クライアント キーの構成に Authorization Parameter 1
または Authorization Parameter 2
がありません。
解決策: クライアント キー テーブルで、必要な Authorization Parameter 1
または Authorization Parameter 2
を更新します。詳細については、Secret Manager アクセス用のクライアント キーを構成するをご覧ください。
/GOOG/MSG: 461 - SSF Application APPLICATION_NAME is not set up in the system ERROR_MESSAGE
問題: SSF 認可クラス /GOOG/CL_AUTH_API_KEY_SSF
を使用して Google Cloud APIs に接続できない。
原因: クライアント キーの構成に Authorization Parameter 1
がありません。
解決策: クライアント キー テーブルで、必要な Authorization Parameter 1
を更新します。詳細については、SSF のクライアント キーを構成するをご覧ください。
/GOOG/MSG: 461 - Method call of /GOOG/IF_AUTH~GET_ACCESS_TOKEN failed; the class CLASS_NAME does not exist
問題: クライアント キー テーブルで管理されている構成を使用して Google Cloud APIs に接続できない。
原因: クライアント キー テーブルの Authorization Class
が正しくありません。
解決策: 正しい Authorization Class
を維持します。詳細については、アクセス トークンを使用して認証するをご覧ください。
/GOOG/MSG: 404 - Not Found
問題: Google Cloud APIs に接続できない。API エンドポイントにアクセスできません。
原因: SDK が Google Cloud APIs への接続に使用する RFC 宛先が正しく構成されていません。たとえば、RFC 宛先に無効なエンドポイントが構成されているとします。
解決策: RFC 宛先が正しく構成されているかどうかを確認します。詳細については、RFC 宛先を構成するをご覧ください。
DESCRIPTION_OF_ISSUE while signing JWT using profile KEY_FILE_NAME.pse. Check JWT config in STRUST
STRUST
問題: Google Cloud APIs に接続できない。
原因: JWT の構成とサービス アカウント キーの設定が STRUST
で正しく構成されていません。
解決策: JSON Web Token を使用して認証するの説明のように、JWT の構成とサービス アカウント キーが構成されていることを確認します。
Bad Request invalid_grant. Invalid JWT Signature
問題: Google Cloud APIs に接続できない。
原因: STRUST
にインポートされた PSE または P12 鍵ファイルが、JWT の署名に使用したサービス アカウントに属していません。
解決策: 正しいサービス アカウント キーファイルを STRUST
にインポートしていることを確認します。サービス アカウント キーを STRUST
にインポートする方法については、サービス アカウント キーを STRUST にインポートするをご覧ください。
/GOOG/MSG : 417 - Direct connect to googleapis.com/oauth:443 failed: NIEHOST_UNKNOWN (-2)
問題: Google Cloud への認証が失敗し、エラー メッセージ /GOOG/MSG : 417 - Direct connect to googleapis.com/oauth:443 failed: NIEHOST_UNKNOWN (-2)
が表示される。
原因: ABAP SDK for Google Cloud が Google Cloud の認証に使用する RFC 宛先で、ターゲット ホストが無効です。
解決策: この問題を解決するには、次の手順を完了します。
サンプル RFC 宛先
GOOG_OAUTH2_TOKEN
を使用して RFC 宛先を作成します。RFC 宛先の作成方法については、RFC 宛先をご覧ください。RFC 宛先で次の値が使用されていることを確認します。
- ホスト:
oauth2.googleapis.com
- パスの接頭辞:
/token
。
- ホスト:
SAP システムがプロキシを使用してインターネットに接続する場合は、RFC 宛先で必要なプロキシの詳細を維持します。
OAuth RFC HTTP Destination not maintained in /GOOG/SERVIC_MAP
/GOOG/SERVIC_MAP
問題: Google Cloud APIs に接続できない。
原因: OAuth 2.0 の RFC 宛先がサービス マッピング テーブル /GOOG/SERVIC_MAP
で使用できません。
解決策: サービス マッピング テーブル /GOOG/SERVIC_MAP
で OAuth 2.0 の RFC 宛先を更新します。RFC 宛先の指定について詳しくは、/GOOG/SERVIC_MAP
で RFC 宛先を指定するをご覧ください。
/GOOG/MSG: 503 - HTTP Communication Failure - SSL client SSL Client (Standard)
問題: API メソッドへの HTTP リクエストが失敗する。
原因: Google Cloud で実行されている SAP ワークロードで、構成が /GOOG/SERVIC_MAP
テーブルに維持される Google Cloud APIs との接続に SDK が使用する、RFC 宛先の ターゲット ホスト フィールド値が正しくありません。
解決策: RFC 宛先が正しく構成されているかどうかを確認します。詳細については、RFC 宛先を構成するをご覧ください。
/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the request sending
問題: API メソッドへの HTTP リクエストが失敗する。
原因: この問題は、接続の問題が原因で発生する可能性があります。
解決策: 接続を検証し、ネットワークが正しく設定され、エラーなしで実行され、輻輳していないことを確認します。
ネットワーク接続の問題を特定するには、トランザクション SMICM
を使用して ICM トレース ファイルを確認します。詳しくは、2351619 - How to take SMICM trace?をご覧ください。
/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the response receiving
問題: API メソッドへの HTTP リクエストが失敗する。
この問題は、次のような状況で発生する可能性があります。
RFC 宛先で SSL が有効になっていない
原因: SDK が Google Cloud APIs への接続に使用する RFC 宛先で、SSL 証明書を使用するためのセキュリティ オプションが有効になっていません。
解決策: RFC 宛先が正しく構成されているかどうかを確認します。詳細については、RFC 宛先を構成するをご覧ください。
SSL handshake に失敗した
原因: この問題は、SAP ホストと Google Cloud API エンドポイントの間で SSL handshake が失敗することで発生します。これは、TLS サーバーによって提示された証明書が、SAP サーバーから提供されるターゲット ホスト名に対して無効である場合に発生します。オプションの TLS 拡張機能 SNI のクライアント側の送信が NetWeaver カーネル上に実装されていないことが原因である可能性があります。
解決策: トランザクション SMICM
で、戻りコード SSLERR_SERVER_CERT_MISMATCH
を探します。戻りコード SSLERR_SERVER_CERT_MISMATCH
が見つかった場合は、TLS 拡張機能 SNI の送信を有効にする必要があります。また、NetWeaver カーネルが、クライアント側でオプションの TLS 拡張 SNI の送信を実装していることを確認します。
TLS 拡張 SNI の送信を有効にするには、NetWeaver のカーネル バージョンに応じて、プロファイル パラメータ icm/HTTPS/client_sni_enabled
または ssl/client_sni_enabled
を TRUE
に設定します。SAP からの詳細情報については、以下をご覧ください。
- SAP Note 510007 - Additional considerations for setting up SSL on Application Server ABAP
- SAP Note 2582368 - SapSSL update for client-side sending of TLS extension SNI by saphttp, sapkprotp
- SAP Note 2124480 - ICM / Web Dispatcher: TLS Extension Server Name Indication(SNI)as client
The caller does not have permission
問題: 認証に成功しても Google Cloud API リソースにアクセスできない。
原因: API リソースを表示する権限がありません。
解決策: この問題を解決するには、次の手順を完了します。
- API リソースが Google アカウントの認証情報と共有されていることを確認します。
- API にリクエストを送信してレスポンスを確認します。
Google API_NAME API has not been used in project PROJECT_ID before or it is disabled
問題: OAuth 2.0 クライアント認証情報を使用して Google Cloud APIs にアクセスできない。
原因: ある Google Cloud プロジェクトで作成されたクライアント ID を使用して、別の Google Cloud プロジェクトで有効になっている API を呼び出しています。
Google Cloud プロジェクトのクライアント ID は、同じ組織に属するものであっても、別のプロジェクトから API を呼び出すために使用することはできません。
解決策: API が有効になっている Google Cloud プロジェクトでクライアント ID を作成します。詳細については、OAuth 2.0 クライアント ID を作成するをご覧ください。
/GOOG/MSG : 461 - OAuth 2.0 Client Profile CLIENT_PROFILE_NAME is assigned to multiple OAuth 2.0 clients
問題: OAuth 2.0 クライアント認証情報を使用して Google Cloud APIs にアクセスできない。
原因: 複数の OAuth 2.0 クライアントに割り当てられた OAuth 2.0 プロファイルを使用して、Google Cloud API を呼び出しています。しかし、OAuth 2.0 クライアントの構成名が、クライアント キー テーブル /GOOG/CLIENT_KEY
の Authorization Parameter 2
フィールドに指定されていません。
解決: OAuth 2.0 プロファイルを複数の OAuth 2.0 クライアントに割り当てるには、OAuth 2.0 クライアントごとに一意の構成名を定義して、クライアント キー テーブル /GOOG/CLIENT_KEY
の Authorization Parameter 2
フィールドに構成名を指定する必要があります。詳細については、複数の Google Cloud プロジェクトがある場合をご覧ください。
/GOOG/MSG : 461 - No refresh token available for current user
問題: OAuth 2.0 クライアント認証情報を使用して Google Cloud APIs にアクセスできない。
原因: クライアント ID に OAuth 2.0 更新トークンを付与することなく、OAuth 2.0 クライアント認証情報を使用して Google Cloud API を呼び出しています。
解決策: Google アカウントの認証情報を使用して、クライアント ID の OAuth 2.0 トークンをリクエストします。詳細については、OAuth 2.0 アクセス トークンをリクエストするをご覧ください。
Access blocked: This app's request is invalid (Error 400: redirect_uri_mismatch)
問題: OAuth 2.0 アクセス トークンをリクエストすると、[Google でログイン] 画面にエラー メッセージ Access blocked: This app's request is invalid (Error 400: redirect_uri_mismatch)
が表示される。
原因: OAuth 2.0 クライアント ID 認証情報で承認済みのリダイレクト URI が正しくないか、保持されていません。
解決策: この問題を解決するには、次の手順を完了します。
- SAP システムで、トランザクション コード
OA2C_CONFIG
を入力します。デフォルトのブラウザで SAP のログインページが開きます。 - SAP 認証情報でログインします。
- 必要なクライアント ID を選択します。
- [リダイレクト URI] フィールドの SAP リダイレクト URI をメモしておきます。
Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。
ウェブ アプリケーションのクライアント ID を選択します。
[承認済みのリダイレクト URI] フィールドに、SAP リダイレクト URI を入力します。
変更を保存します。
/GOOG/MSG : 406 - IcmIConnCheckClientEnabled: Connect for protocol HTTP denied by configuration HTTP Response
問題: Google Cloud APIs にアクセスできない。
原因: SAP システムに HTTP ポート構成がありません。
解決策: SAP システムで HTTP ポートと HTTPS ポートの両方を作成し、アクティブにする必要があります。
VM メタデータは、HTTP ポート経由でのみアクセス可能なメタデータ サーバーに保存されます。そのため、VM メタデータにアクセスするには、HTTP ポートがアクティブであることを確認する必要があります。また、後続の API 呼び出しで HTTPS ポートがアクティブであることも確認する必要があります。
この問題を解決するには、次の操作を行います。
SAP GUI で、トランザクション コード
SMICM
を入力します。メニューバーで、[Goto] > [Services] をクリックします。
HTTP ポートと HTTPS ポートが作成され、アクティブであることを確認します。[Actv] 列の緑色のチェックマークは、HTTP ポートと HTTPS ポートが有効になっていることを示します。
HTTP ポートと HTTPS ポートの構成については、ICM の HTTP(S) 設定をご覧ください。
/GOOG/MSG: 403 - Request had insufficient authentication scopes
問題: エラー メッセージ /GOOG/MSG: 403 - Request
had insufficient authentication scopes
が表示されて API 呼び出しが失敗する。
原因: Google Cloud で実行されている SAP ワークロードにおいて、テーブル /GOOG/CLIENT_KEY
内に、指定されているサービス アカウントが Google Cloud APIs にアクセスするのに必要なスコープがありません。
解決策: この問題を解決するには、次の手順を完了します。
Google Cloud コンソールで、Compute Engine の [VM インスタンス] ページに移動します。
SAP ワークロードが実行されている VM インスタンスをクリックします。
[停止] をクリックし、指示に従って VM インスタンスを停止します。
[編集] をクリックします。
関連付けられているサービス アカウントで、アクセス スコープを編集して、すべての Cloud APIs への完全アクセス権を付与します。
[保存] をクリックします。
[開始 / 再開] をクリックして VM インスタンスを再起動します。
Error in HTTP Request: Invalid version (44)
問題: /GOOG/CL_STORAGE_V1
クラスの DELETE_OBJECTS
メソッドを使用して、Cloud Storage バケットからオブジェクトを削除できない。リクエストが失敗し、エラー メッセージ Error in HTTP Request: Invalid version (44)
が返される。
原因: 削除するオブジェクトの名前にスペースが含まれています。
解決策: /GOOG/CL_STORAGE_V1
クラスの DELETE_OBJECTS
メソッドを呼び出す前に、オブジェクト名にスペースが含まれていないことを確認する必要があります。
この問題を解決するには、次の操作を行います。
cl_http_utility=>escape_url( OBJECT_NAME )
メソッドを呼び出します。OBJECT_NAME
は、削除するオブジェクト名に置き換えます。このメソッドは、名前のスペースを
%20
に置き換えて URL セーフのオブジェクト名を返します。前の手順で返されたオブジェクト名を指定して、
/GOOG/CL_STORAGE_V1
クラスのDELETE_OBJECTS
メソッドを呼び出します。
/GOOG/MSG: 405 - Error in HTTP Request: Invalid request line(9):
問題: /GOOG/CL_PUBSUB_V1
クラスの CREATE_TOPICS
メソッドを使用して新しい Pub/Sub トピックを作成するときに、リクエストが失敗し、エラー メッセージ /GOOG/MSG: 405 - Error in HTTP Request: Invalid request line(9):
が返される。
原因: 作成する Pub/Sub トピックの名前にスペースが含まれています。
解決策: Pub/Sub トピック名からスペースを削除する必要があります。
Pub/Sub トピック名が次のルールに準拠していることを確認します。
- 文字から始まる
GOOG
で始まらない- スペースを含まない
- 3~255 文字の長さであること
- 次の文字だけが含まれている: 文字
[A-Za-z]
、数字[0-9]
、ダッシュ(-)
、ピリオド.
、アンダースコア_
、チルダ~
、パーセント記号%
、プラス記号+
Pub/Sub トピックの命名に関するガイドラインについては、トピック、サブスクリプション、スキーマ、スナップショットの命名に関するガイドラインをご覧ください。
Google Cloud APIs から返されるエラー メッセージ
すべての API クライアント スタブには、API 戻りコードとエラー メッセージを提供するエクスポート パラメータがあります。
ev_ret_code
には HTTP ステータス コードが含まれています。API からエラーが返された場合、このパラメータには値4XX
が含まれます。ev_err_resp
には API から返されたエラーカテゴリとエラー メッセージが格納されます。
次の例は、すでに存在するトピック名で新しい Pub/Sub トピックを作成して、API からエラーが返されたことを示しています。
ERROR_TEXT
: 競合ERROR_DESCRIPTION
: リソースはすでにプロジェクトに存在します(resource=SAMPLE_TOPIC_01
)
コミュニティのサポートを利用する
Cloud フォーラムのコミュニティで ABAP SDK for Google Cloud について質問したり、ディスカッションに参加できます。
サポートを利用する
ABAP SDK for Google Cloud の問題を解決するためにサポートを必要とする場合は、取得可能なすべての診断情報を収集し、Cloud カスタマーケアにお問い合わせください。
Cloud カスタマーケアへのお問い合わせの詳細については、Google Cloud での SAP に関するサポートを利用するをご覧ください。