Compartir a través de


Consideraciones al usar el adaptador de SAP con SharePoint

Este tema contiene información sobre los problemas que pueden surgir al usar el adaptador de Microsoft BizTalk para mySAP Business Suite con Microsoft Office SharePoint Server, junto con las resoluciones. Los problemas se dividen en dos categorías:

  • Problemas generales

  • Problemas relacionados con elementos web personalizados

Problemas generales

Esta sección contiene problemas que no tienen ninguna resolución o requieren que modifique el archivo de definición de aplicación para la resolución.

Problema 1: Los datos de tipo simples devueltos por el servicio WCF no se muestran

Explicación: Microsoft Office SharePoint Server espera que los datos devueltos por el servicio WCF sean solo de tipo DataSet o Collection. Si los datos devueltos por el servicio WCF son de tipo simple, Microsoft Office SharePoint Server no muestra los datos.

Resolución: sin resolución. Se trata de una limitación conocida con Microsoft Office SharePoint Server.

Problema 2: se muestra un mensaje de error si los datos devueltos por el servicio WCF son NULL

Explicación: Si los datos devueltos por el servicio WCF son un valor NULL, Microsoft Office SharePoint Server muestra un mensaje de error. Por ejemplo, supongamos que usa el elemento web Lista de datos profesionales para la instancia del método Finder y busca clientes en el sistema SAP en función de una expresión de búsqueda. La expresión de búsqueda que especificó captura un valor NULL. En este caso, Microsoft Office SharePoint Server mostrará un mensaje de error.

Resolución: sin resolución. Se trata de una limitación conocida con Microsoft Office SharePoint Server.

Problema 3: No se muestra una matriz de tipo simple devuelta por el servicio WCF

Explicación: Si los datos devueltos por el servicio WCF son una matriz de tipo simple, Microsoft Office SharePoint Server no muestra los datos. Además, al ejecutar una instancia de método en business Data Catalog Editor de definiciones que devuelve una matriz de tipo simple, se muestra el siguiente mensaje de error: "El adaptador del sistema back-end devolvió una estructura incompatible con los metadatos correspondientes (MethodInstance, Parameter o TypeDescriptor)."

Resolución: sin resolución. Se trata de una limitación conocida con El Editor de definiciones de Microsoft Office SharePoint Server y Business Data Catalog.

Problema 4: No se puede importar un archivo de definición de aplicación que contenga un parámetro de tipo complejo que tenga más de 300 campos

Explicación: Microsoft Office SharePoint Server no puede importar un archivo de definición de aplicación que tenga más de 300 campos en el parámetro de tipo complejo devuelto por el servicio WCF y muestra un mensaje de error si intenta hacerlo. Esto se debe a la limitación de Microsoft Office SharePoint Server de no poder mostrar más de 300 campos de un parámetro de tipo complejo.

Resolución: use el Editor de definiciones de Business Data Catalog para limitar el número de campos del parámetro de tipo complejo a menos o igual que 300. Según sus necesidades, puede eliminar los campos del parámetro de tipo complejo en el Editor de definiciones de Business Data Catalog que no necesita mostrar en Microsoft Office SharePoint Server. Como alternativa, también puede exportar el archivo de definición de aplicación de Business Data Catalog Editor de definiciones con todos los campos y, a continuación, modificar el archivo de definición de aplicación en un Bloc de notas o cualquier aplicación de creación XML para eliminar los campos que no son necesarios para limitar el número de campos a 300.

Problemas relacionados con elementos web personalizados

Esta sección contiene problemas que requieren el uso de elementos web personalizados para una resolución. Para obtener información detallada sobre el uso de un elemento web personalizado para resolver problemas que podrían surgir al trabajar con el adaptador de SAP y Microsoft Office SharePoint Server, vea Usar un elemento web personalizado con el adaptador de SAP.

Problema 1: Limitación con la visualización de un único registro en Microsoft Office SharePoint Server basado en varios valores

Explicación: Si desea mostrar un único registro en Microsoft Office SharePoint Server basado en varios valores (parámetros de entrada) de un sistema SAP, no puede usar ninguno de los tres elementos web (lista de datos profesionales, elemento de datos profesionales y lista relacionada con datos profesionales) especificado en el paso 3: Crear una aplicación de SharePoint para recuperar datos de SAP en el tutorial 1: Presentar datos de un sistema SAP en un sitio de SharePoint.

Resolución: debe usar un elemento web personalizado para hacerlo. Para obtener información sobre el uso de un elemento web personalizado, consulte Usar un elemento web personalizado con el adaptador de SAP. En "Paso 1: Crear un elemento web personalizado" de ese tema, puede usar el ejemplo de código siguiente en el paso 5. En el ejemplo de código siguiente se toma BankCountry y BankKey como parámetros de entrada y, a continuación, se muestran como un único registro en 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>");  
        }  
    }  
  

Nota

El archivo de definición de aplicación debe contener la instancia del método Specific Finder . Un método Finder específico busca un registro específico basado en un identificador. Para obtener información sobre cómo crear una instancia de método Finder específica , vea "Requisito 2: Recuperar detalles de un cliente específico de la lista de clientes" en paso 2: Crear un archivo de definición de aplicación para los artefactos de SAP en el Tutorial 1: Presentación de datos de un sistema SAP en un sitio de SharePoint.

Problema 2: No se pueden especificar valores para los elementos de matriz

Explicación: Si el parámetro de entrada del servicio WCF es una matriz, no puede especificar valores en los elementos de matriz mediante filtros definidos en el archivo de definición de aplicación creado mediante el Editor de definiciones de Business Data Catalog. Implica que no se puede usar el elemento web Lista de datos profesionales o Elemento de datos profesionales de Microsoft Office SharePoint Server para especificar valores para estos parámetros de entrada (elementos de matriz) al servicio WCF. Esto se debe a la forma en que las matrices se definen en el archivo de definición de aplicación.

Resolución: use un elemento web personalizado para asignar valores a elementos de matriz. Para obtener información sobre el uso de un elemento web personalizado, consulte Usar un elemento web personalizado con el adaptador de SAP. Por ejemplo, puede usar el siguiente ejemplo de código en el paso 3 de "Problema 1: Limitación con la visualización de un único registro en Microsoft Office SharePoint Server basado en varios valores" para asignar valores a elementos de matriz.

/***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  
  

Problema 3: Limitación con la especificación de valores NULL en parámetros de tipo complejo

Explicación: Si no especifica ningún valor para un parámetro de tipo complejo de un elemento web en Microsoft Office SharePoint Server, se debe pasar NULL como valor para el parámetro de tipo complejo al servicio WCF. Sin embargo, se pasa un valor distinto de NULL para el parámetro de tipo complejo y se pasa NULL para sus elementos secundarios (de tipo simple). Esto provoca una discrepancia entre el esquema de mensajes esperado y el esquema de mensaje que se pasa al servicio WCF. Como resultado, el adaptador de SAP puede mostrar un mensaje de error.

Nota

Para averiguar el valor predeterminado de un parámetro de tipo complejo cuando no se pasa ningún valor desde un elemento web en Microsoft Office SharePoint Server, use el paso 2 del ejemplo de código mencionado en "Problema 1: Limitación con la visualización de un único registro en Microsoft Office SharePoint Server basado en varios valores".

Resolución: use un elemento web personalizado para asignar un valor NULL al parámetro de tipo complejo. Para obtener información sobre el uso de un elemento web personalizado, consulte Usar un elemento web personalizado con el adaptador de SAP.

Consulte también

Usar el adaptador de SAP con SharePoint