Résolution des problèmes du connecteur SAP Business Warehouse

Cet article fournit des situations de résolution des problèmes (et des solutions possibles) pour l’utilisation du connecteur SAP Business Warehouse (BW).

Collecter les traces avancées SAP BW

Remarque

La collecte d’une trace d’une requête envoyée au serveur SAP BW nécessite certaines options et paramètres qui ne peuvent être fournis qu’à l’aide de Power BI Desktop. Si vous n’avez pas encore de copie de Power BI Desktop, vous pouvez l’obtenir dans le Centre de téléchargement Microsoft. Vous pouvez définir l’ensemble des options et paramètres requis pour les traces avancées à l’aide de cette version gratuite.

Souvent, lorsqu’une erreur se produit, il peut être avantageux de collecter une trace de la requête envoyée au serveur SAP BW et sa réponse. La procédure suivante montre comment configurer des traces avancées pour les problèmes qui se produisent à l’aide du connecteur SAP BW.

  1. Fermez Power BI Desktop s’il est en cours d’exécution.

  2. Créez une variable d’environnement :

    1. Dans le Panneau de configuration Windows, sélectionnez Système>Paramètres système avancés.

      Vous pouvez également ouvrir une invite de commandes et entrer sysdm.cpl.

    2. Dans Propriétés système, sélectionnez l’onglet Avancé, puis Variables d’environnement.

    3. Dans Variables d’environnement, sous Variables système, sélectionnez Nouveau.

    4. Dans Nouvelle variable système, sous Nom de la variable, entrez PBI_EnableSapBwTracing et, sous Valeur de la variable, entrez true.

    5. Cliquez sur OK.

    Lorsque ce suivi avancé est activé, un dossier supplémentaire appelé SapBw est créé dans le dossier Traces. Consultez le reste de cette procédure pour connaître l’emplacement du dossier Traces.

  3. Ouvrez Power BI Desktop.

  4. Videz le cache avant la capture.

    1. Dans Power BI Desktop, sélectionnez l’onglet Fichier.
    2. Sélectionnez Options et paramètres>Options.
    3. Sous Paramètres globaux, choisissez Chargement des données.
    4. Sélectionner Effacer le cache
  5. Alors que vous êtes toujours dans Options et paramètres, activez le suivi.

    1. Sous Paramètres globaux, choisissez Diagnostics.
    2. Sélectionnez Activer le suivi.
  6. Alors que vous êtes toujours dans Options et paramètres>Paramètres globaux>Diagnostics, sélectionnez Ouvrir le dossier des traces/vidages sur incident. Vérifiez que le dossier est vide avant de capturer de nouvelles traces.

  7. Reproduisez le problème.

  8. Quand vous avez terminé, fermez Power BI Desktop afin que les journaux soient vidés sur le disque.

  9. Vous pouvez afficher les traces nouvellement capturées sous le dossier SapBw (le dossier Traces qui contient le dossier SapBw est affiché en sélectionnant Ouvrir le dossier des traces/vidages sur incident dans la page Diagnostics dans Power BI Desktop).

  10. Veillez à désactiver ce suivi avancé une fois que vous avez terminé, en supprimant la variable d’environnement ou en définissant PBI_EnableSapBwTracing sur false.

Collecter des traces avancées SAP BW avec des traces CPIC

Si vous investiguez des problèmes d’authentification ou d’authentification unique, utilisez la même procédure que celle décrite dans Collecter les traces avancées SAP BW, sauf à l’étape 2d, entrez les variables et valeurs système supplémentaires suivantes :

  • CPIC_TRACE—3
  • CPIC_TRACE_DIR—un dossier valide, par exemple : E:\traces\CPIC

Le reste de la procédure ne change pas. Vous pouvez afficher les traces CPIC dans le dossier que vous avez spécifié dans la variable d’environnement CPIC_TRACE_DIR. Vous pouvez également afficher les traces standard sous le dossier SapBw.

Veillez également à désactiver ce suivi avancé une fois que vous avez terminé, en supprimant les variables d’environnement ou en définissant BI_EnableSapBwTracing sur false et CPIC_TRACE sur 0.

Effectuer une nouvelle installation de SAP .NET Connector

S’il devient nécessaire de réinstaller SAP .NET Connector :

  1. Supprimez (désinstallez) SAP .NET Connector.

  2. Après l’avoir supprimé, vérifiez que SAP .NET Connector n’est pas installé dans le GAC (Global Assembly Cache), en vous assurant que les chemins suivants n’existent PAS ou ne contiennent PAS de DLL :

    • GAC 32 bits :

      C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23

      C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23

    • GAC 64 bits :

      C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23

      C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23

  3. Vérifiez que les fichiers binaires ne sont pas dans Program Files. Vérifiez que les emplacements suivants n’existent PAS ou sont vides :

    C:\Program Files\SAP\SAP_DotNetConnector3_Net40_x64

    C:\Program Files (x86)\sap\SAP_DotNetConnector3_Net40_x86

  4. Réinstallez le connecteur et pensez à sélectionner l’option Installer les assemblys dans le GAC. Nous vous recommandons d’utiliser la version la plus récente, 3.0.23.

Dépannage des messages d'erreur

Méthode ErrorCode SAP BW introuvable

Method not found: 'Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()'

Cette erreur est levée lorsqu’une erreur se produit sur le serveur SAP BW et que SAP .NET Connector tente de récupérer des informations sur cette erreur. Toutefois, cette erreur peut masquer l’erreur réelle. Cette erreur peut se produire dans les cas suivants :

  • Utilisation d’une ancienne version de SAP .NET Connector.

  • Plusieurs versions de SAP .NET Connector sont installées.

  • SAP .NET Connector a été installé deux fois, une fois dans le GAC (Global Assembly Cache) et une fois à un autre endroit.

Suivez les instructions décrites sous Effectuer une nouvelle installation de SAP .NET Connector pour réinstaller le connecteur.

Cela ne résout pas le problème, mais fournit le message d’erreur réel.

Exception : Une exception a été levée par l’initialiseur de type pour « Microsoft.Mashup.Engine1.Library.SapBusinessWarehouse.
SapBwMicrosoftProviderFactoryService ».

Suivez les instructions décrites sous Effectuer une nouvelle installation de SAP .NET Connector pour réinstaller le connecteur.

Ce connecteur nécessite un ou plusieurs composants supplémentaires

Si vous recevez ce message d’erreur, utilisez la procédure de dépannage suivante :

  1. Vérifiez que la version de SAP .NET Connector est installée dans la longueur en bits correcte. Si Power BI Desktop 64 bits est installé, vérifiez que vous avez installé SAP .NET Connector 64 bits.

  2. Vérifiez que, lors de l’installation de SAP .NET Connector, l’option Installer les assemblys dans le GAC a été cochée. Pour vérifier que le GAC est installé, ouvrez l’Explorateur Windows et accédez à :

          C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco

    Par exemple, le chemin complet pourrait être :

          C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll

Si vous avez installé la version 32 bits de SAP .NET Connector, il s’agit de C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll (et vous avez besoin d’une version 32 bits de Power BI Desktop).

Une autre façon de vérifier le GAC consiste à utiliser gacutil (l’une des options de désactivation de la signature avec un nom fort). Vous devez l’exécuter à partir d’une invite de commandes 64 bits. Vous pouvez vérifier le contenu du GAC en ouvrant une invite de commandes, en accédant au chemin de gacutil.exe et en exécutant :

      gacutil -l

Par exemple, dans la sortie, vous devez voir :

      sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64 sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64

« Aucune autorisation RFC pour la fonction ...*

Implementation 2.0 nécessite l’accès aux BAPI suivantes. Pour résoudre ce problème, contactez l’équipe SAP Basis et demandez des autorisations concernant ces BAPI et RFC pour l’utilisateur.

  • Connectivité :

    • RFC_PING
    • RFC_METADATA_GET
  • Exécution de MDX :

    • RSR_MDX_CREATE_OBJECT
    • BAPI_MDDATASET_CREATE_OBJECT
    • BAPI_MDDATASET_SELECT_DATA
    • BAPI_MDDATASET_DELETE_OBJECT
    • RSR_MDX_GET_AXIS_INFO
    • RSR_MDX_GET_AXIS_DATA
    • RSR_MDX_GET_CELL_DATA
    • BAPI_MDDATASET_GET_AXIS_INFO
    • BAPI_MDDATASET_GET_AXIS_DATA
    • BAPI_MDDATASET_GET_CELL_DATA
  • Aplatissement d’ExecutionMode :

    • RSR_MDX_GET_FLAT_DATA
    • RSR_MDX_GET_FS_DATA
    • BAPI_MDDATASET_GET_FLAT_DATA
    • BAPI_MDDATASET_GET_FS_DATA
  • Streaming d’ExecutionMode :

    • BAPI_MDDATASET_GET_STREAMDATA
    • BAPI_MDDATASET_GET_STREAMINFO
  • BasXml ExecutionMode :

    • RSR_MDX_BXML_GET_DATA
    • RSR_MDX_BXML_GET_GZIP_DATA
    • RSR_MDX_BXML_GET_INFO
    • RSR_MDX_BXML_SET_BINDING
  • Métadonnées :

    • BAPI_MDPROVIDER_GET_DIMENSIONS
    • BAPI_MDPROVIDER_GET_CATALOGS
    • BAPI_MDPROVIDER_GET_CUBES
    • BAPI_MDPROVIDER_GET_MEASURES
    • BAPI_MDPROVIDER_GET_HIERARCHYS
    • BAPI_MDPROVIDER_GET_LEVELS
    • BAPI_MDPROVIDER_GET_PROPERTIES
    • BAPI_MDPROVIDER_GET_MEMBERS
    • BAPI_MDPROVIDER_GET_VARIABLES
  • Informations :

    • BAPI_IOBJ_GETDETAIL (obligatoire pour les dimensions typées (DATS, TIMS))
    • BAPI_USER_GET_DETAIL (utilisée uniquement pour l’interface d’aplatissement)
    • RFC_READ_TABLE (obligatoire pour les noms de catalogue et certains appels de valeurs de variables)
  • Peut être appelée par le connecteur SAP .NET Connector sous-jacent :

    • RFC_GET_FUNCTION_INTERFACE
    • FUNCTION_IMPORT_INTERFACE
    • DDIF_FIELDINFO_GET
    • SYSTEM_FINISH_ATTACH_GUI
    • BGRFC_DEST_CONFIRM
    • BGRFC_CHECK_UNIT_STATE_SERVER
    • BGRFC_DEST_SHIP
    • ARFC_DEST_SHIP
    • RFC_FUNCTION_SEARCH
    • RFC_SYSTEM_INFO
    • RFC_SET_REG_SERVER_PROPERTY
    • RFC_DOCU
    • SEO_GET_CLIF_REMOTE
    • SYSTEM_PREPARE_ATTACH_GUI
    • API_CLEAR_TID
    • ARFC_DEST_CONFIRM

Méthode introuvable « Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()

Vérifiez que SAP .NET Connector est installé correctement. Reportez-vous à Effectuer une nouvelle installation de SAP .NET Connector.

Cette erreur s’affiche lorsque la version installée dans le GAC est inférieure à la version 3.0.18.0 attendue. La note SAP 2417315 décrit ce scénario.

Propriétés de chaîne de connexion définies par le connecteur

Lorsque le nom du partenaire SNC et la bibliothèque SNC sont tous deux fournis, le connecteur de serveur d’applications SAP BW (Implementation 2.0) définit ces propriétés dans la chaîne de connexion :

  • SNC_MODE—SncModeApply
  • SNC_LIB—avec le chemin de bibliothèque spécifié ; s’il s’agit d’une variable d’environnement, elle est développée à ce stade
  • SNC_PARTNERNAME—avec la valeur fournie
  • SNC_QOP = RfcConfigParameters.RfcSncQOP.Default

Ces propriétés sont utilisées pour les connexions au serveur d’applications SAP BW et au serveur de messages SAP BW.

Pour les deux types de connexions, le connecteur définit :

  • LANG (langue)
  • DOMAINE DE

Pour la connexion au serveur d’applications SAP BW, le connecteur définit :

  • ASHOST (AppServerHost)
  • SYSNR (SystemNumber)

Pour les connexions au serveur de messages SAP BW, le connecteur définit :

  • MSHOST (MessageServerHost)
  • SYSID (SystemID)
  • GROUP (LogonGroup)

Commande MDX non valide avec <interne>

Cette erreur provient directement du serveur SAP BW. Implementation 1 du connecteur, basée sur Netweaver RFC, n’a pas exposé ces erreurs à l’utilisateur, retournant un jeu de résultats vide à la place.

Ce problème est abordé dans les notes SAP suivantes. L’accès à ces notes nécessite un compte super utilisateur. Contactez votre équipe SAP Basis pour appliquer les correctifs pertinents pour ce problème.

En outre, pour d’autres erreurs similaires, vous pouvez examiner le contenu des notes SAP suivantes et les appliquer selon les besoins à votre environnement :

Problèmes et limitations

La modification des noms de variable sur un cube SAP place le rapport DirectQuery dans un état défectueux et irrécupérable

Les symptômes suivants se produisent :

  • Message d’erreur—[Expression.Error] The import [XXXX] matches no exports.

  • Dans les journaux—Message: [Expression.Error] The key didn't match any rows in the table.

  • StackTrace :

    at Microsoft.Mashup.Engine1.Runtime.TableValue.get_Item(Value key)
    at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.GetParameterValue(CubeValue cubeValue, Value parameter)
    at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.TypedInvoke(TableValue cube, Value parameter, Value arguments)
    Detail: [Key = [Id = \"[!V000004]\"], Table = #table({...}, {...})]
    

Une solution de contournement possible consiste à procéder comme suit :

  1. Effectuez une copie du fichier PBIX (en cas de dommages).

  2. Ajoutez une variable d’environnement appelée PBI_AlwaysEnableQueryEditor avec la valeur true. Ce paramètre autorise l’accès à l’éditeur de requête même en mode DirectQuery.

    Remarque

    Cette variable d’environnement n’est pas prise en charge. Elle ne doit donc être utilisée que comme indiqué ici.

  3. Cliquez avec le bouton droit sur la requête « Cube » et sélectionnez Éditeur avancé.

  4. La requête ici doit avoir une ligne qui commence par « {Cube.ApplyParameter, « [!V000004] » (paramètre manquant). » Supprimez cette ligne.

  5. Cliquez sur Terminé.

  6. Fermez l’éditeur Power Query.

  7. Actualisez le visuel affecté.

Si la solution de contournement ci-dessus ne fonctionne pas, la seule solution alternative consiste à recréer le rapport.

Données numériques de SAP BW

Remarque

Les informations suivantes s’appliquent uniquement lors de l’utilisation d’Implementation 1.0 du connecteur SAP BW ou d’Implementation 2.0 du connecteur SAP BW avec le mode d’aplatissement (quand ExecutionMode=67).

Les comptes d’utilisateur dans SAP BW ont des paramètres par défaut pour la mise en forme des valeurs décimales ou de date/d’heure lorsqu’elles sont affichées à l’utilisateur dans l’interface graphique utilisateur (GUI) SAP.

Les paramètres par défaut sont conservés dans le système SAP dans le profil utilisateur d’un compte, et l’utilisateur peut afficher ou modifier ces paramètres dans l’interface graphique utilisateur SAP avec le chemin de menu Système>Profil utilisateur>Own Data (Données personnelles).

Menu de paramètres de notation décimale.

Power BI Desktop interroge le système SAP pour la notation décimale de l’utilisateur connecté et utilise cette notation pour mettre en forme les valeurs décimales dans les données de SAP BW.

SAP BW renvoie des données décimales avec une , (virgule) ou un . (point) comme séparateur décimal. Pour spécifier lequel de ces SAP BW doit utiliser pour le séparateur décimal, le pilote utilisé par Power BI Desktop effectue un appel à BAPI_USER_GET_DETAIL. Cet appel renvoie une structure appelée DEFAULTS, qui possède un champ appelé DCPFM qui stocke la notation au format décimal. Le champ prend l’une des valeurs suivantes :

  • ' ' (espace) = La décimale est une virgule : N.NNN,NN
  • « X » = Le point décimal est la période : N,NNN.NN
  • « Y » = Le point décimal est N NNN NNN,NN

Les clients qui ont signalé ce problème ont constaté que l’appel à BAPI_USER_GET_DETAIL échoue pour un utilisateur particulier, qui affiche des données incorrectes, avec un message d’erreur semblable au suivant :

   You are not authorized to display users in group TI:
      <item>
         <TYPE>E</TYPE>
         <ID>01</ID>
         <NUMBER>512</NUMBER>
         <MESSAGE>You are not authorized to display users in group TI</MESSAGE>
         <LOG_NO/>
         <LOG_MSG_NO>000000</LOG_MSG_NO>
         <MESSAGE_V1>TI</MESSAGE_V1>
         <MESSAGE_V2/>
         <MESSAGE_V3/>
         <MESSAGE_V4/>
         <PARAMETER/>
         <ROW>0</ROW>
         <FIELD>BNAME</FIELD>
         <SYSTEM>CLNTPW1400</SYSTEM>
      </item>

Pour résoudre cette erreur, les utilisateurs doivent demander à leur administrateur SAP d’accorder à l’utilisateur SAP BW utilisé dans Power BI le droit d’exécuter BAPI_USER_GET_DETAIL. Il est également important de vérifier que l'utilisateur a la valeur requise, comme DCPFM décrit précédemment dans cette solution de dépannage.

Connectivité pour les requêtes SAP BEx

Vous pouvez effectuer des requêtes BEx dans Power BI Desktop en activant une propriété spécifique, comme illustré dans l’image suivante :

Activer la publication pour accès externe.

Limitation de l’interface MDX

Une limitation de l’interface MDX est que les variables longues perdent leur nom technique et sont remplacées par V00000#.

Aucun aperçu des données dans la fenêtre Navigateur

Dans certains cas, la boîte de dialogue Navigateur n’affiche pas d’aperçu des données, mais le message d’erreur La référence d’objet n’est pas définie à une instance d’un objet à la place.

Les utilisateurs SAP doivent accéder à des modules de fonctions BAPI spécifiques pour obtenir des métadonnées et récupérer des données auprès des InfoProviders de SAP BW. Ces modules incluent :

  • BAPI_MDPROVIDER_GET_CATALOGS
  • BAPI_MDPROVIDER_GET_CUBES
  • BAPI_MDPROVIDER_GET_DIMENSIONS
  • BAPI_MDPROVIDER_GET_HIERARCHYS
  • BAPI_MDPROVIDER_GET_LEVELS
  • BAPI_MDPROVIDER_GET_MEASURES
  • BAPI_MDPROVIDER_GET_MEMBERS
  • BAPI_MDPROVIDER_GET_VARIABLES
  • BAPI_IOBJ_GETDETAIL

Pour résoudre ce problème, vérifiez que l’utilisateur a accès aux différents modules MDPROVIDER et BAPI_IOBJ_GETDETAIL. Pour résoudre ce problème ou des problèmes similaires, vous pouvez activer le suivi. Sélectionnez Fichier>Options et paramètres>Options. Dans Options, sélectionnez Diagnostics, puis Activer le suivi. Essayez de récupérer des données à partir de SAP BW lorsque le suivi est actif et examinez le fichier de suivi pour plus de détails.

Exceptions de mémoire

Dans certains cas, vous pouvez rencontrer l’une des erreurs de mémoire suivantes :

  • Message: No more memory available to add rows to an internal table.
  • Message: [DataSource.Error] SAP Business Warehouse: The memory request for [number] bytes could not be complied with.
  • Message: The memory request for [number] bytes could not be complied with.

Ces exceptions de mémoire proviennent du serveur SAP BW et sont dues au serveur qui manque de mémoire disponible pour traiter la requête. Cela peut se produire quand la requête retourne un grand ensemble de résultats ou qu’elle est trop complexe pour être gérée par le serveur, par exemple lorsqu’une requête comporte de nombreuses jointures croisées.

Pour résoudre cette erreur, il est recommandé de simplifier la requête ou de la diviser en requêtes plus petites. Si possible, envoyez une agrégation plus importante au serveur. Vous pouvez également contacter votre équipe SAP Basis pour augmenter les ressources disponibles sur le serveur.

Le chargement de chaînes de texte de plus de 60 caractères dans Power BI Desktop échoue

Dans certains cas, vous pouvez constater que les chaînes de texte sont tronquées à 60 caractères dans Power BI Desktop.

Tout d’abord, suivez les instructions de 2777473 - MDX : FAQ pour Power BI accédant à BW ou BW/4HANA et vérifiez si cela résout votre problème.

Étant donné que le connecteur Power Query SAP Business Warehouse utilise l’interface MDX fournie par SAP pour l’accès tiers, vous devez contacter SAP pour obtenir les solutions possibles, car la couche entre l’interface MDX et le serveur SAP BW leur appartient. Demandez comment « le texte long est XL » peut être spécifié pour votre scénario spécifique.

Image montrant où définir le paramètre « le texte long est XL ».

Limite CARACTÈRES de 60 malgré « texte long » dans SAP BW

Il existe une limitation connue où les caractéristiques de « texte long » dans SAP BW apparaissent avec une limite de 60 caractères dans Power BI. Cette limite de caractères est due à une limitation dans l’interface MDX et aucune solution de contournement connue n’est disponible. SAP a documenté cette limitation MDX dans cette note SAP.

Migration vers l’implémentation 2.0 lors de l’utilisation de Direct Query

En raison de la dépréciation de l’implémentation 1.0 du connecteur SAP Business Warehouse, vous devrez peut-être mettre à jour vos requêtes pour tirer parti de l’implémentation 2.0. Lorsque vous utilisez Direct Query, l’accès à l’éditeur de requête est restreint. Vous ne pouvez donc pas facilement passer à l’implémentation 2.0 sans recréer l’intégralité de votre requête. La solution de contournement consiste à ajouter une variable d’environnement système pour autoriser l’accès à l’éditeur de requête. Notez que les étapes suivantes ne sont pas officiellement prises en charge et ne doivent être utilisées que comme indiqué ici.

  1. Créez une variable d’environnement en accédant à l’Explorateur de fichiers>Ce PC>Propriétés>Paramètres système avancés>Variables d’environnement>Variables système>Nouveau, ou en ouvrant une invite de commande et en entrant sysdm.cpl puis en sélectionnant Nouveau sous Variables système.
  2. Nommez la variable d’environnement PBI_AlwaysEnableQueryEditor et définissez la valeur true. Ce paramètre de variable permet d’accéder à l’éditeur de requête même en mode Direct Query.
  3. Dans Power BI Desktop, dans l'onglet Accueil, sélectionnez Transformer les données pour ouvrir l’éditeur Power Query.
  4. Mettez à jour la requête pour utiliser l’implémentation 2.0 en suivant ces instructions, en commençant par l’étape 2 de cet article.

Votre requête finale devrait se présenter comme ceci SapBusinessWarehouse.Cubes("server", "system", "clientId", [Implementation = "2.0"]).