Partager via


Considérations sur l’utilisation de l’adaptateur SAP avec SharePoint

Cette rubrique contient des informations sur les problèmes que vous pouvez rencontrer lors de l’utilisation de l’adaptateur Microsoft BizTalk pour mySAP Business Suite avec Microsoft Office SharePoint Server, ainsi que des résolutions. Les problèmes sont répartis en deux catégories :

  • Problèmes d’ordre général

  • Problèmes impliquant des composants WebPart personnalisés

Problèmes généraux

Cette section contient des problèmes qui n’ont pas de résolution ou qui vous obligent à modifier le fichier de définition d’application pour la résolution.

Problème 1 : Les données de type simple retournées par le service WCF ne sont pas affichées

Explication : Microsoft Office SharePoint Server s’attend à ce que les données retournées par le service WCF soient de type DataSet ou Collection uniquement. Si les données retournées par le service WCF sont de type simple, Microsoft Office SharePoint Server n’affiche pas les données.

Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server.

Problème 2 : un message d’erreur s’affiche si les données retournées par le service WCF sont NULL

Explication : Si les données retournées par le service WCF sont une valeur NULL, Microsoft Office SharePoint Server affiche un message d’erreur. Par exemple, supposons que vous utilisez le composant WebPart Liste de données métiers pour la méthode Finder instance et que vous recherchez des clients dans le système SAP en fonction d’une expression de recherche. L’expression de recherche que vous avez spécifiée extrait une valeur NULL. Dans ce cas, Microsoft Office SharePoint Server affiche un message d’erreur.

Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server.

Problème 3 : Un tableau de type simple retourné par le service WCF n’est pas affiché

Explication : Si les données retournées par le service WCF sont un tableau de type simple, Microsoft Office SharePoint Server n’affiche pas les données. De plus, lorsque vous exécutez une méthode instance dans Business Data Catalog Definition Editor qui retourne un tableau de type simple, le message d’erreur suivant s’affiche : « L’adaptateur système principal a retourné une structure incompatible avec les métadonnées correspondantes (MethodInstance, Parameter ou TypeDescriptor). »

Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server et Business Data Catalog Definition Editor.

Problème 4 : Impossible d’importer un fichier de définition d’application qui contient un paramètre de type complexe ayant plus de 300 champs

Explication : Microsoft Office SharePoint Server ne peut pas importer un fichier de définition d’application qui contient plus de 300 champs dans le paramètre de type complexe retourné par le service WCF et affiche un message d’erreur si vous essayez de le faire. Cela est dû à la limitation de Microsoft Office SharePoint Server qui ne peut pas afficher plus de 300 champs d’un paramètre de type complexe.

Résolution : utilisez l’Éditeur de définition business Data Catalog pour limiter le nombre de champs du paramètre de type complexe à inférieur ou égal à 300. Selon vos besoins, vous pouvez supprimer les champs du paramètre de type complexe dans l’Éditeur de définition Business Data Catalog que vous n’avez pas besoin d’afficher dans Microsoft Office SharePoint Server. Vous pouvez également exporter le fichier de définition d’application à partir de Business Data Catalog Definition Editor avec tous les champs, puis modifier le fichier de définition d’application dans un bloc-notes ou toute application de création XML pour supprimer les champs qui ne sont pas obligatoires afin de limiter le nombre de champs à 300.

Problèmes impliquant des composants WebPart personnalisés

Cette section contient les problèmes qui nécessitent l’utilisation d’un composant WebPart personnalisé pour une résolution. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé pour résoudre les problèmes qui peuvent survenir lors de l’utilisation de l’adaptateur SAP et de Microsoft Office SharePoint Server, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur SAP.

Problème 1 : Limitation de l’affichage d’un enregistrement unique dans Microsoft Office SharePoint Server basé sur plusieurs valeurs

Explication : Si vous souhaitez afficher un enregistrement unique dans Microsoft Office SharePoint Server en fonction de plusieurs valeurs (paramètres d’entrée) à partir d’un système SAP, vous ne pouvez utiliser aucun des trois composants WebPart (Liste des données métiers, Élément de données métiers et Liste liée aux données métiers) spécifiés à l’étape 3 : Créer une application SharePoint pour récupérer des données à partir de SAP dans le tutoriel 1 : Présentation des données d’un système SAP sur un site SharePoint.

Résolution : vous devez utiliser un composant WebPart personnalisé pour ce faire. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur SAP. Dans « Étape 1 : Créer un composant WebPart personnalisé » de cette rubrique, vous pouvez utiliser l’exemple de code suivant à l’étape 5. L’exemple de code suivant prend BankCountry et BankKey comme paramètres d’entrée, puis les affiche en tant qu’enregistrement unique dans Microsoft Office SharePoint Server.

namespace CustomWebPart  
{  
    public class CustomWebPart : WebPart  
    {  
        private string displayText = "Hello World!";  
  
        [WebBrowsable(true), Personalizable(true)]  
        public string DisplayText  
        {  
            get { return displayText; }  
            set { displayText = value; }  
        }  
        protected override void Render(System.Web.UI.HtmlTextWriter writer)  
        {  
            string BankCountry = "US";  
            string BankKey = "134329042";  
  
/***Step 1: Get the required entity and method.***/  
  
            LobSystem newSystem = ApplicationRegistry.GetLobSystems()["BAPI_BANK_GETDETAIL"]; // Name specified in application definition file  
            LobSystemInstance newSystemInstance = newSystem.GetLobSystemInstances()["BAPI_BANK_GETDETAIL_Instance"]; // Name specified in application definition file  
            Entity CategoryEntity = newSystem.GetEntities()["Entity"]; // Name specified in application definition file  
            Method newMethod = CategoryEntity.GetMethods()["BAPI_BANK_GETDETAIL"]; // Name specified in application definition file  
            MethodInstance methodInstance = newMethod.GetMethodInstances()["MethodInstance"]; // Name specified in application definition file  
  
/***Step 2: Get the list of input parameters.***/  
  
            Object[] args = methodInstance.GetMethod().CreateDefaultParameterInstances(methodInstance); //Get the default values of the input parameters.  
            Object[] ArgsInput = new Object[args.Length];  
  
/***Step 3: Assign them required values.***/  
  
            Type t = null;  
            char[] myString = BankCountry.ToCharArray();  
            String s = new String(myString);  
            t = s.GetType();  
            ArgsInput[0] = Activator.CreateInstance(t, myString);  
  
            myString = BankKey.ToCharArray();  
            s = new String(myString);  
            t = s.GetType();  
            ArgsInput[1] = Activator.CreateInstance(t, myString);  
  
/***Step 4: Execute the particular method instance using the required value.***/  
  
            IEntityInstance IE = (IEntityInstance)CategoryEntity.Execute(methodInstance, newSystemInstance, ref ArgsInput); //Method instance of type Specific Finder is being used here.  
  
/***Step 5: Display the output on the custom Web Part in Microsoft Office SharePoint Server.***/  
  
            writer.Write("<table>");  
            writer.Write("<tr>");  
            foreach (Field f in CategoryEntity.GetFinderView().Fields)  
            {  
                writer.Write("<td>");  
                writer.Write(IE[f]);  
                writer.Write("</td>");  
            }  
            writer.Write("</tr>");  
            writer.Write("</table>");  
        }  
    }  
  

Notes

Le fichier de définition d’application doit contenir la méthode Finder spécifique instance. Une méthode De recherche spécifique recherche un enregistrement spécifique en fonction d’un identificateur. Pour plus d’informations sur la création d’une méthode Finder spécifique instance, consultez « Condition requise 2 : Récupérer les détails d’un client spécifique à partir de la liste des clients » à l’étape 2 : Créer un fichier de définition d’application pour les artefacts SAP dans le tutoriel 1 : Présentation de données à partir d’un système SAP sur un site SharePoint.

Problème 2 : Impossible de spécifier des valeurs aux éléments de tableau

Explication : Si le paramètre d’entrée du service WCF est un tableau, vous ne pouvez pas spécifier de valeurs aux éléments du tableau à l’aide de filtres définis dans le fichier de définition d’application créé à l’aide de l’Éditeur de définition Business Data Catalog. Cela implique que vous ne pouvez pas utiliser le composant WebPart Liste de données métiers ou Élément de données métiers dans Microsoft Office SharePoint Server pour spécifier des valeurs pour ces paramètres d’entrée (éléments de tableau) au service WCF. Cela est dû à la façon dont les tableaux sont définis dans le fichier de définition d’application.

Résolution : utilisez un composant WebPart personnalisé pour affecter des valeurs à des éléments de tableau. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur SAP. Par exemple, vous pouvez utiliser l’exemple de code suivant à l’étape 3 dans « Problème 1 : Limitation de l’affichage d’un enregistrement unique dans Microsoft Office SharePoint Server basé sur plusieurs valeurs » pour affecter des valeurs à des éléments de tableau.

/***Assign required values to parameters of type array.***/   
/***Assumption is that the ith parameter of Method is of type Array and all the simple type elements in the array are of string type.***/  
  
            Type t = asm.GetType(args[i].GetType().ToString()); // Get type of the parameter  
            Type TElement = t.GetElementType(); // Getting type of element of array  
            int index = 5; //Size of Array  
            Array ElementArray = Array.CreateInstance(TElement, index); //Creating an array of length: index  
  
            for (int ind = 0; ind < index; ind++)  
            {  
                //Creating an instance of an element of array  
                object ElementType = Activator.CreateInstance(TElement);  
                FieldInfo[] FI = ElementType.GetType().GetFields();  
                for (int f = 0; f \< FI.Length; f++)  
                {  
                    ElementType.GetType().GetFields()[f].SetValue(ElementType, (Object)"ElementValue");  
                }  
                ElementArray.SetValue(ElementType, ind);  
            }  
  
            ArgsInput[i] = (object)ElementArray; // As shown in sample, ArgsInput is fed as input while executing Method Instance  
  

Problème 3 : Limitation de la spécification de valeurs NULL à des paramètres de type complexes

Explication : si vous ne spécifiez aucune valeur pour un paramètre de type complexe à partir d’un composant WebPart dans Microsoft Office SharePoint Server, null doit être transmis en tant que valeur pour le paramètre de type complexe au service WCF. Toutefois, une valeur non NULL est transmise pour le paramètre de type complexe, et NULL pour ses éléments enfants (de type simple). Cela entraîne une incompatibilité entre le schéma de message attendu et le schéma de message transmis au service WCF. Par conséquent, l’adaptateur SAP peut afficher un message d’erreur.

Notes

Pour connaître la valeur par défaut d’un paramètre de type complexe lorsqu’aucune valeur n’est transmise à partir d’un composant WebPart dans Microsoft Office SharePoint Server, utilisez l’étape 2 de l’exemple de code mentionné dans « Problème 1 : Limitation de l’affichage d’un enregistrement unique dans Microsoft Office SharePoint Server basé sur plusieurs valeurs ».

Résolution : utilisez un composant WebPart personnalisé pour affecter une valeur NULL au paramètre de type complexe. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur SAP.

Voir aussi

Utiliser l’adaptateur SAP avec SharePoint