Vous pouvez résoudre les problèmes les problèmes liés à l'environnement sur site ou n'importe quelle édition cloud du SDK ABAP pour Google Cloud en utilisant les journaux d'application SAP pour examiner les messages d'erreur et les messages de journal.
Vérifier la configuration requise et les prérequis
Assurez-vous que tous les logiciels système s'exécutent avec les versions minimales requises et que toutes les conditions préalables à l'utilisation du SDK ABAP pour Google Cloud sont remplies.
Pour en savoir plus sur les conditions préalables à l'installation du SDK, consultez la section Avant de commencer.
Lire la documentation d'assistance SAP
Si vous disposez d'un compte utilisateur SAP, vous trouverez la résolution de nombreux problèmes logiciels SAP en lisant les notes SAP et les articles de la base de connaissances SAP disponibles sur le tremplin de lancement de l'assistance SAP ONE.
Journalisation
Lorsque la journalisation est configurée, le SDK ABAP pour Google Cloud consigne les messages d'erreur dans les journaux d'application SAP. Pour en savoir plus sur la journalisation, consultez la section Journalisation des applications.
Pour afficher les messages de journal, procédez comme suit :
- Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction
SLG1
. - Saisissez le nom de l'objet journal et le nom du sous-objet.
- Sélectionnez une date et une période valides.
- Exécutez la transaction. Tous les messages de journaux générés par le SDK sont affichés.
Un message de journal comprend généralement les deux entrées suivantes :
- Entrée : fournit des informations sur l'emplacement du code où l'erreur s'est précisément produite. Pour résoudre des problèmes, vous pouvez utiliser cet emplacement de code comme point d'arrêt lors du débogage.
- Message d'erreur : fournit des informations sur une erreur qui s'est produite lors d'une opération.
Débogage
Si vous disposez de l'autorisation requise, vous pouvez déboguer les classes du client API.
Pour déboguer les classes du client API, utilisez l'une des options suivantes :
Ajoutez un point d'arrêt au constructeur de la classe
/GOOG/CL_HTTP_CLIENT
, puis exécutez votre programme.Vous pouvez également ajouter un point d'arrêt à la méthode que vous utilisez, puis exécuter votre programme.
Trace HTTP
Lors de la résolution des erreurs, vous pouvez activer la trace HTTP dans la transaction SMICM
ou ST05
.
Pour limiter l'impact sur les performances, désactivez la trace HTTP dès que vous avez terminé.
Problèmes de configuration courants
/GOOG/MSG 461: Insufficient privileges for execution
Problème : l'utilisateur ne peut pas effectuer des configurations du SDK, exécuter des programmes utilitaires ou des programmes de démonstration.
Cause : l'utilisateur ne dispose pas des autorisations nécessaires.
Résolution : identifiez les autorisations manquantes requises pour le SDK à l'aide de la transaction SU53
.
Pour obtenir ces autorisations requises pour votre ID utilisateur, contactez vos administrateurs de sécurité SAP. Pour en savoir plus, consultez la section Gérer les autorisations.
/GOOG/MSG: 403 - Permission iam.serviceAccountTokenCreator
denied on resource (or it may not exist)
iam.serviceAccountTokenCreator
denied on resource (or it may not exist)Problème : pour votre système SAP hébergé sur une VM Compute Engine, vous ne pouvez pas accéder aux API Google Cloud lorsque vous utilisez la méthode d'authentification basée sur des jetons.
Cause : pour votre système SAP hébergé sur une VM Compute Engine, dans la configuration de clé client, le compte de service spécifié est créé dans un autre projet Google Cloud que le projet contenant votre VM hôte SAP.
Résolution : pour résoudre ce problème, procédez comme suit :
- Dans le projet Google Cloud contenant votre VM hôte SAP, attribuez au compte de service de la VM hôte le rôle
Service Account Token Creator
. Pour plus d'informations sur les étapes, consultez la page Attribuer un rôle unique. - Dans le projet Google Cloud contenant votre VM hôte SAP :
- Créez un compte de service. Spécifiez le nom du compte de service. Vous spécifiez ce nom lorsque vous ajoutez le compte de service en tant que compte principal à l'autre projet contenant les API Google Cloud. Pour en savoir plus sur la création d'un compte de service, consultez la page Créer un compte de service.
- Dans la configuration de la clé client du SDK, spécifiez ce compte de service.
- Dans l'autre projet contenant les API Google Cloud :
- Ajoutez le compte de service en tant que compte principal.
- Attribuez les rôles appropriés pour vous connecter aux API Google Cloud. Pour en savoir plus sur les rôles prédéfinis spécifiques à l'API, consultez la documentation de référence sur les rôles IAM de base et prédéfinis.
Pour en savoir plus, consultez la section S'authentifier à l'aide de jetons pour SAP sur une VM Compute Engine.
Problèmes opérationnels courants
Lorsque vous utilisez des API Google Cloud via les méthodes publiques du bouchon client, les développeurs peuvent rencontrer des erreurs et des exceptions. Ces erreurs et exceptions sont généralement classées dans deux catégories :
- Erreurs et exceptions déclenchées par le SDK ABAP pour Google Cloud
- Erreurs renvoyées par les API Google Cloud
Cette section traite des erreurs et des exceptions déclenchées par le SDK. Pour les erreurs renvoyées par les API, nous vous recommandons de consulter la documentation publique de l'API correspondante.
/GOOG/MSG : 461 - Bad Request: Client key is not found in /GOOG/CLIENT_KEY table
Problème : vous ne pouvez pas instancier un objet de bouchon d'un client API.
Cause : la table de clés client /GOOG/CLIENT_KEY
ne contient pas de clé client valide.
Solution : Dans la table de clés client /GOOG/CLIENT_KEY
, conservez une clé client valide.
Lors de l'instanciation d'un bouchon de client API, transmettez une clé client valide avec le paramètre d'importation iv_key_name
.
Configurez la clé client à l'aide des informations spécifiques à votre méthode d'authentification. Pour en savoir plus sur les méthodes d'authentification et la configuration des clés client associées, consultez la page Authentification.
Pour en savoir plus sur la transmission d'une clé client avec le paramètre d'importation iv_key_name
, consultez la section Constructeur.
/GOOG/MSG : 461 - Log Object not maintained in TCode SLG0
Problème : vous ne pouvez pas instancier un objet de bouchon d'un client API.
Cause : un objet journal par défaut non valide est conservé dans la table /GOOG/LOG_CONFIG
ou un objet journal non valide est transmis au paramètre d'importation iv_log_object
.
Solution : assurez-vous qu'un objet journal valide existe dans le système SAP.
Pour obtenir des informations sur la journalisation, consultez la section Journalisation des applications.
Pour savoir comment transmettre un objet journal, consultez la section Constructeur.
/GOOG/MSG : 461 - Log SubObject not maintained in TCode SLG0
Problème : vous ne pouvez pas instancier un objet de bouchon d'un client API.
Cause : un sous-objet de journal par défaut non valide est conservé dans la table /GOOG/LOG_CONFIG
ou un sous-objet de journal non valide est transmis au paramètre d'importation iv_log_subobject
.
Solution : assurez-vous qu'un sous-objet de journal valide existe dans le système SAP.
Pour obtenir des informations sur la journalisation, consultez la section Journalisation des applications.
Pour savoir comment transmettre un sous-objet de journal, consultez la section Constructeur.
/GOOG/MSG : 461 - Destination does not exist exception occurred in reading RFC destination
Problème : vous ne pouvez pas instancier un objet de bouchon d'un client API.
Cause : dans la table /GOOG/SERVIC_MAP
, une destination RFC n'existe pas dans le système SAP pour la clé client spécifiée.
Solution : créez les destinations RFC requises. Pour en savoir plus, consultez la section Configurer des destinations RFC.
/GOOG/MSG : 461 - Invalid RFC Destination GOOGLE_API exception occurred in reading RFC destination
Problème : vous ne pouvez pas vous connecter à GOOGLE_API.
Cause : ce problème peut être dû à l'une des causes suivantes :
- Le type de connexion RFC n'est pas
G - HTTP connection to external server
. - Le numéro de service
443
n'est pas spécifié. - Le client SSL par défaut (standard) est inactif.
Solution : pour les destinations RFC requises, procédez comme suit :
- Mettez à jour le type de connexion RFC sur
G - HTTP connection to external server
. - Assurez-vous que le numéro de service est
443
. - Pour le champ Certificat SSL, assurez-vous que l'option Client SSL par défaut (standard) est sélectionnée.
- Pour SAP sur l'environnement Google Cloud, si vous avez créé une destination RFC pour un serveur de métadonnées, assurez-vous que le numéro de service est
80
.
Pour en savoir plus sur la création de destinations RFC, consultez les ressources suivantes :
/GOOG/MSG : 461 - ERROR_MESSAGE exception occurred during the request creation
Problème : vous ne pouvez pas vous connecter aux API Google Cloud.
Cause : le système SAP ne peut pas créer d'objet client HTTP.
Solution : assurez-vous que votre ICM est configuré pour communiquer via HTTP avec un serveur externe. Pour en savoir plus, consultez la section Valider le gestionnaire de communication Internet (ICM).
/GOOG/MSG: 461 - Secret Manager Client Key not maintained in table /GOOG/CLIENT_KEY ERROR_MESSAGE
Problème : vous ne pouvez pas vous connecter aux API Google Cloud à l'aide de la classe d'autorisation Secret Manager /GOOG/CL_AUTH_API_KEY_SM
.
Cause : dans la configuration de la clé client, Authorization Parameter 1
ou Authorization Parameter 2
est manquant.
Solution : dans la table de clés client, mettez à jour les paramètres Authorization Parameter 1
ou Authorization Parameter 2
requis. Pour en savoir plus, consultez la section Configurer une clé client pour accéder à Secret Manager.
/GOOG/MSG: 461 - SSF Application APPLICATION_NAME is not set up in the system ERROR_MESSAGE
Problème : vous ne pouvez pas vous connecter aux API Google Cloud à l'aide de la classe d'autorisation SSF /GOOG/CL_AUTH_API_KEY_SSF
.
Cause : dans la configuration de la clé client, Authorization Parameter 1
est manquant.
Solution : dans la table de clés client, mettez à jour le paramètre Authorization Parameter 1
requis. Pour en savoir plus, consultez la section Configurer une clé client pour SSF.
/GOOG/MSG: 461 - Method call of /GOOG/IF_AUTH~GET_ACCESS_TOKEN failed; the class CLASS_NAME does not exist
Problème : vous ne pouvez pas vous connecter aux API Google Cloud à l'aide de la configuration gérée dans la table de clés client.
Cause : la classe Authorization Class
n'est pas correcte dans la table de clés client.
Solution : conservez la classe Authorization Class
appropriée.
Pour en savoir plus, consultez la section S'authentifier à l'aide d'un jeton.
/GOOG/MSG: 404 - Not Found
Problème : vous ne pouvez pas vous connecter aux API Google Cloud. Le point de terminaison de l'API n'est pas accessible.
Cause : les destinations RFC utilisées par le SDK pour se connecter aux API Google Cloud ne sont pas configurées correctement. Par exemple, un point de terminaison non valide est configuré dans les destinations RFC.
Solution : vérifiez si les destinations RFC sont correctement configurées. Pour en savoir plus, consultez la section Configurer une destination RFC.
DESCRIPTION_OF_ISSUE while signing JWT using profile KEY_FILE_NAME.pse. Check JWT config in STRUST
STRUST
Problème : vous ne pouvez pas vous connecter aux API Google Cloud.
Cause : les paramètres de configuration JWT et de clé de compte de service ne sont pas configurés correctement dans STRUST
.
Solution : vérifiez que la configuration JWT et la clé de compte de service sont configurées, comme expliqué dans la section Authentification.
Bad Request invalid_grant. Invalid JWT Signature
Problème : vous ne pouvez pas vous connecter aux API Google Cloud.
Cause : le fichier de clé PSE ou P12 importé dans STRUST
n'appartient pas au compte de service que vous avez utilisé pour signer le jeton JWT.
Solution : veillez à importer le fichier de clé de compte de service approprié dans STRUST
. Pour obtenir des informations sur l'importation de la clé de compte de service dans STRUST
, consultez la section Importer la clé de compte de service dans STRUST.
/GOOG/MSG : 417 - Direct connect to googleapis.com/oauth:443 failed: NIEHOST_UNKNOWN (-2)
Problème : l'authentification auprès de Google Cloud a échoué avec le message d'erreur /GOOG/MSG : 417 - Direct connect to googleapis.com/oauth:443 failed: NIEHOST_UNKNOWN (-2)
.
Cause : dans les destinations RFC utilisées par le SDK ABAP pour Google Cloud pour s'authentifier auprès de Google Cloud, l'hôte cible n'est pas valide.
Résolution : pour résoudre ce problème, procédez comme suit :
Créez une destination RFC à l'aide de l'exemple de destination RFC
GOOG_OAUTH2_TOKEN
. Pour en savoir plus sur la création de destinations RFC, consultez la section Destinations RFC.Assurez-vous que votre destination RFC utilise les valeurs suivantes :
- Hôte :
oauth2.googleapis.com
- Préfixe de chemin d'accès :
/token
.
- Hôte :
Si votre système SAP utilise un proxy pour se connecter à Internet, conservez les informations de proxy requises dans la destination RFC.
OAuth RFC HTTP Destination not maintained in /GOOG/SERVIC_MAP
/GOOG/SERVIC_MAP
Problème : vous ne pouvez pas vous connecter aux API Google Cloud.
Cause : la destination RFC pour OAuth 2.0 n'est pas disponible dans la table de mappage de service /GOOG/SERVIC_MAP
.
Solution : mettez à jour la destination RFC pour OAuth 2.0 dans la table de mappage de service /GOOG/SERVIC_MAP
. Pour obtenir des informations sur la spécification des destinations RFC, consultez la section Spécifier des destinations RFC dans /GOOG/SERVIC_MAP
.
/GOOG/MSG: 503 - HTTP Communication Failure - SSL client SSL Client (Standard)
Problème : une requête HTTP vers une méthode API a échoué.
Cause : pour votre charge de travail SAP exécutée sur Google Cloud, dans les destinations RFC utilisées par le SDK pour se connecter aux API Google Cloud pour lesquelles la configuration est conservée dans la table /GOOG/SERVIC_MAP
, la valeur du champ Hôte cible est incorrecte.
Solution : vérifiez si les destinations RFC sont correctement configurées. Pour en savoir plus, consultez la section Configurer une destination RFC.
/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the request sending
Problème : une requête HTTP vers une méthode API a échoué.
Cause : ce problème peut être dû à des problèmes de connectivité.
Résolution : vérifiez votre connexion et assurez-vous que votre réseau est correctement configuré, qu'il s'exécute sans erreur et qu'il n'est pas encombré.
Pour identifier le problème de connectivité réseau, vérifiez le fichier de suivi ICM à l'aide de la transaction SMICM
. Pour en savoir plus, consultez 2351619 – Obtenir la trace SMICM.
/GOOG/MSG: 503 - HTTP Communication Failure exception occurred during the response receiving
Problème : une requête HTTP vers une méthode API a échoué.
Ce problème peut être dû aux circonstances suivantes :
SSL n'est pas activé dans vos destinations RFC
Cause : dans les destinations RFC utilisées par le SDK pour se connecter aux API Google Cloud, l'option de sécurité permettant d'utiliser un certificat SSL n'est pas activée.
Solution : vérifiez si les destinations RFC sont correctement configurées. Pour en savoir plus, consultez la section Configurer une destination RFC.
Échec du handshake SSL
Cause : le handshake SSL a échoué entre l'hôte SAP et le point de terminaison de l'API Google Cloud. Cela se produit lorsque le certificat présenté par le serveur TLS n'est pas valide pour le nom d'hôte cible fourni par le serveur SAP, peut-être parce que l'envoi côté client de l'indication de nom de serveur (Server Name Indication, SNI) de l'extension TLS facultative n'est pas implémentée sur votre noyau NetWeaver.
Résolution : dans la transaction SMICM
, recherchez le code de retour, SSLERR_SERVER_CERT_MISMATCH
. Si vous trouvez ce code de retour SSLERR_SERVER_CERT_MISMATCH
, vous devez activer l'envoi de l'extension TLS SNI. En outre, assurez-vous que votre noyau NetWeaver implémente l'envoi côté client de l'extension TLS facultative SNI.
Pour activer l'envoi de l'extension TLS SNI, définissez le paramètre de profil icm/HTTPS/client_sni_enabled
ou ssl/client_sni_enabled
sur TRUE
, selon votre version de noyau NetWeaver. Pour en savoir plus sur SAP, consultez les pages suivantes :
- Note SAP 510007 - Autres considérations sur la configuration de SSL sur le serveur d'applications ABAP
- Note SAP 2582368 - Mise à jour de SapSSL pour l'envoi côté client de l'extension TLS SNI par saphttp, sapkprotp
- Note SAP 2124480 - ICM / Coordinateur Web : Extension TLS SNI (Server Name Indication) en tant que client
The caller does not have permission
Problème: Même si vous êtes authentifié, vous ne pouvez pas accéder aux ressources de l'API Google Cloud.
Cause:vous ne disposez pas des autorisations nécessaires pour afficher la ressource d'API.
Résolution : pour résoudre ce problème, procédez comme suit :
- Assurez-vous que la ressource API est partagée avec les identifiants de votre compte Google.
- Envoyez une requête à l'API et vérifiez la réponse.
Google API_NAME API has not been used in project PROJECT_ID before or it is disabled
Problème:vous ne pouvez pas accéder aux API Google Cloud à l'aide de vos identifiants client OAuth 2.0.
Cause: vous utilisez un ID client créé dans un projet Google Cloud pour appeler une API activée dans un autre projet Google Cloud.
Un ID client d'un projet Google Cloud ne peut pas être utilisé pour appeler des API à partir d'un autre projet, même s'ils appartiennent tous les deux à la même organisation.
Solution:Créez un ID client dans le projet Google Cloud où l'API est activée. Pour en savoir plus, consultez l'article Créer des identifiants ID client OAuth 2.0.
/GOOG/MSG : 461 - OAuth 2.0 Client Profile CLIENT_PROFILE_NAME is assigned to multiple OAuth 2.0 clients
Problème : vous ne pouvez pas accéder aux API Google Cloud à l'aide de vos identifiants client OAuth 2.0.
Cause:vous appelez une API Google Cloud à l'aide d'un profil OAuth 2.0 attribué à plusieurs clients OAuth 2.0.
Toutefois, le nom de configuration du client OAuth 2.0 n'est pas spécifié dans le champ Authorization Parameter 2
de la table de clé client /GOOG/CLIENT_KEY
.
Résolution:Pour attribuer un profil OAuth 2.0 à plusieurs clients OAuth 2.0, vous devez définir un nom de configuration unique pour chaque client OAuth 2.0 et spécifier le nom de la configuration dans le champ Authorization Parameter 2
de la table de clé client /GOOG/CLIENT_KEY
. Pour en savoir plus, consultez la section Scénario de projets Google Cloud multiples.
/GOOG/MSG : 461 - No refresh token available for current user
Problème : vous ne pouvez pas accéder aux API Google Cloud à l'aide de vos identifiants client OAuth 2.0.
Cause:vous appelez une API Google Cloud à l'aide des identifiants client OAuth 2.0 sans accorder le jeton d'actualisation OAuth 2.0 pour l'ID client.
Solution: Demandez un jeton OAuth 2.0 pour l'ID client à l'aide des identifiants de votre compte Google. Pour en savoir plus, consultez la section Demander des jetons d'accès OAuth 2.0.
Access blocked: This app's request is invalid (Error 400: redirect_uri_mismatch)
Problème: lorsque vous demandez des jetons d'accès OAuth 2.0, l'écran Se connecter avec Google s'affiche avec le message d'erreur Access blocked: This app's request is invalid (Error 400: redirect_uri_mismatch)
.
Cause : l'URI de redirection autorisé dans les identifiants d'ID client OAuth 2.0 est incorrect ou n'est pas géré.
Résolution : pour résoudre ce problème, procédez comme suit :
- Dans votre système SAP, saisissez la transaction
OA2C_CONFIG
. La page de connexion SAP s'ouvre dans votre navigateur par défaut. - Connectez-vous avec vos identifiants SAP.
- Sélectionnez l'ID client requis.
- Dans le champ URI de redirection, notez votre URI de redirection SAP.
Dans la console Google Cloud, accédez à Menu > API et services > Identifiants.
Sélectionnez l'ID client de votre application Web.
Dans le champ URI de redirection autorisés, saisissez l'URI de redirection SAP.
Enregistrez les modifications.
/GOOG/MSG : 406 - IcmIConnCheckClientEnabled: Connect for protocol HTTP denied by configuration HTTP Response
Problème:vous ne pouvez pas accéder aux API Google Cloud.
Cause:la configuration du port HTTP est manquante dans votre système SAP.
Résolution : les ports HTTP et HTTPS doivent être créés et être actifs dans votre système SAP.
Les métadonnées de VM sont stockées sur un serveur de métadonnées, qui n'est accessible que via un port HTTP. Par conséquent, pour accéder aux métadonnées de VM, vous devez vous assurer qu'un port HTTP est actif. Vous devez également vous assurer qu'un port HTTPS est actif pour les appels d'API suivants.
Pour résoudre ce problème, procédez comme suit :
Dans l'interface utilisateur graphique de SAP, saisissez le code de transaction
SMICM
.Dans la barre de menu, cliquez sur Goto > Services (Accéder à > Services).
Assurez-vous que les ports HTTP et HTTPS sont créés et actifs. Une coche verte dans la colonne Actv indique que les ports HTTP et HTTPS sont actifs.
Pour en savoir plus sur la configuration des ports HTTP et HTTPS, consultez la page Paramètres HTTP(S) dans ICM.
Problème : /GOOG/MSG: 403 - Request had insufficient authentication scopes
Problème : l'appel d'API a échoué avec le message d'erreur /GOOG/MSG: 403 - Request
had insufficient authentication scopes
.
Cause : pour votre charge de travail SAP exécutée sur Google Cloud, dans la table /GOOG/CLIENT_KEY
, le compte de service spécifié ne dispose pas du champ d'application requis pour accéder aux API Google Cloud.
Résolution : pour résoudre ce problème, procédez comme suit :
Dans la console Google Cloud, accédez à la page Instances de VM Compute Engine.
Cliquez sur l'instance de VM sur laquelle votre charge de travail SAP est exécutée.
Cliquez sur Arrêter, puis suivez les instructions pour arrêter l'instance de VM.
Cliquez sur Modifier.
Pour le compte de service associé, modifiez les Niveaux d'accès pour autoriser l'accès complet à toutes les API Cloud.
Cliquez sur Enregistrer.
Cliquez sur Démarrer/Reprendre pour redémarrer la VM.
Messages d'erreur renvoyés par les API Google Cloud
Chaque bouchon de client API contient les paramètres d'exportation qui fournissent le code et les messages d'erreur renvoyés par une API.
ev_ret_code
contient les codes d'état HTTP. En cas d'erreur renvoyée par une API, ce paramètre contient une valeur4XX
.ev_err_resp
contient la catégorie d'erreur et le message d'erreur renvoyés par une API.
L'exemple suivant présente une erreur renvoyée par une API lorsque vous créez un sujet Pub/Sub avec un nom de sujet qui existe déjà.
ERROR_TEXT
: conflitERROR_DESCRIPTION
: la ressource existe déjà dans le projet (ressourceSAMPLE_TOPIC_01
)
Obtenir l'aide de la communauté
Posez vos questions concernant le SDK ABAP pour Google Cloud et discutez de celui-ci avec la communauté sur les forums Cloud.
Obtenir de l'aide
Si vous avez besoin d'aide pour résoudre des problèmes liés au SDK ABAP pour Google Cloud, collectez toutes les informations de diagnostic disponibles et contactez Cloud Customer Care.
Pour en savoir plus sur la manière de contacter Cloud Customer Care, consultez la page Obtenir de l'aide concernant SAP sur Google Cloud.