Considerazioni sull'uso dell'adapter SAP con SharePoint
Questo argomento contiene informazioni sui problemi che potrebbero verificarsi durante l'uso dell'adapter Microsoft BizTalk per mySAP Business Suite con Microsoft Office SharePoint Server, insieme alle risoluzioni. I problemi sono divisi in due categorie:
Problemi generali
Problemi relativi alle web part personalizzate
Problemi generali
Questa sezione contiene problemi che non hanno risoluzione o richiedono di modificare il file di definizione dell'applicazione per la risoluzione.
Problema 1: i dati di tipo semplice restituiti dal servizio WCF non vengono visualizzati
Spiegazione: Microsoft Office SharePoint Server prevede che i dati restituiti dal servizio WCF siano solo di tipo DataSet o Raccolta. Se i dati restituiti dal servizio WCF sono di tipo semplice, Microsoft Office SharePoint Server non visualizza i dati.
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server.
Problema 2: viene visualizzato un messaggio di errore se i dati restituiti dal servizio WCF sono NULL
Spiegazione: se i dati restituiti dal servizio WCF sono un valore NULL, Microsoft Office SharePoint Server visualizza un messaggio di errore. Si supponga, ad esempio, di usare la Web part Elenco dati business per l'istanza del metodo Finder e di cercare i clienti nel sistema SAP in base a un'espressione di ricerca. L'espressione di ricerca specificata recupera un valore NULL. In questo caso, Microsoft Office SharePoint Server visualizzerà un messaggio di errore.
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server.
Problema 3: non viene visualizzata una matrice di tipi semplici restituiti dal servizio WCF
Spiegazione: se i dati restituiti dal servizio WCF sono una matrice di tipo semplice, Microsoft Office SharePoint Server non visualizza i dati. Inoltre, quando si esegue un'istanza di metodo in Business Data Catalog Definition Editor che restituisce una matrice di tipo semplice, viene visualizzato il seguente messaggio di errore: "La scheda di sistema back-end ha restituito una struttura incompatibile con i metadati corrispondenti (MethodInstance, Parameter o TypeDescriptor)."
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server e Business Data Catalog Definition Editor.
Problema 4: Impossibile importare un file di definizione dell'applicazione contenente un parametro di tipo complesso con più di 300 campi
Spiegazione: Microsoft Office SharePoint Server non può importare un file di definizione dell'applicazione con più di 300 campi nel parametro di tipo complesso restituito dal servizio WCF e viene visualizzato un messaggio di errore se si tenta di farlo. Ciò è dovuto alla limitazione di Microsoft Office SharePoint Server di non essere in grado di visualizzare più di 300 campi di un parametro di tipo complesso.
Risoluzione: usare l'editor di definizione business Data Catalog per limitare il numero di campi del parametro di tipo complesso a meno di o uguale a 300. A seconda delle esigenze, è possibile eliminare i campi del parametro di tipo complesso nell'Editor di definizione di Business Data Catalog che non è necessario visualizzare in Microsoft Office SharePoint Server. In alternativa, è anche possibile esportare il file di definizione dell'applicazione da Business Data Catalog Definition Editor con tutti i campi e quindi modificare il file di definizione dell'applicazione in un blocco note o in qualsiasi applicazione di creazione XML per eliminare i campi che non sono necessari per limitare il numero di campi a 300.
Problemi relativi alle web part personalizzate
Questa sezione contiene problemi che richiedono l'uso della web part personalizzata per una risoluzione. Per informazioni dettagliate sull'uso di una web part personalizzata per risolvere i problemi che potrebbero verificarsi durante l'uso della scheda SAP e di Microsoft Office SharePoint Server, vedere Usare una web part personalizzata con l'adattatore SAP.
Problema 1: Limitazione con la visualizzazione di un singolo record in Microsoft Office SharePoint Server in base a più valori
Spiegazione: se si vuole visualizzare un singolo record in Microsoft Office SharePoint Server in base a più valori (parametri di input) da un sistema SAP, non è possibile usare una delle tre web part (Elenco dati aziendali, elemento dati business e elenco correlati ai dati aziendali) specificata nel passaggio 3: Creare un'applicazione SharePoint per recuperare dati da SAP nell'esercitazione1: Presentazione dei dati da un sistema SAP in un sito di SharePoint.
Risoluzione: è necessario usare una web part personalizzata per eseguire questa operazione. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter SAP. In "Passaggio 1: Creare una web part personalizzata" di tale argomento, è possibile usare l'esempio di codice seguente nel passaggio 5. L'esempio di codice seguente accetta BankCountry e BankKey come parametri di input e quindi li visualizza come singolo record in 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
Il file di definizione dell'applicazione deve contenere l'istanza del metodo Specific Finder . Un metodo Specific Finder trova un record specifico basato su un identificatore. Per informazioni sulla creazione di un'istanza specifica del metodo Finder, vedere "Requisito 2: Recuperare i dettagli per un cliente specifico dall'elenco dei clienti" nel passaggio 2: Creare un file di definizione applicazione per gli artefatti SAPnell'esercitazione 1: Presentazione dei dati da un sistema SAP in un sito di SharePoint.
Problema 2: Impossibile specificare valori per gli elementi della matrice
Spiegazione: se il parametro di input del servizio WCF è una matrice, non è possibile specificare i valori agli elementi della matrice usando i filtri definiti nel file di definizione dell'applicazione creato usando l'editor di definizione business Data Catalog. Implica che non è possibile usare la Web part Business Data List o Business Data Item in Microsoft Office SharePoint Server per specificare i valori per questi parametri di input (elementi della matrice) al servizio WCF. Ciò è dovuto alla modalità di definizione delle matrici nel file di definizione dell'applicazione.
Risoluzione: usare una web part personalizzata per assegnare valori agli elementi della matrice. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter SAP. Ad esempio, è possibile usare l'esempio di codice seguente nel passaggio 3 in "Problema 1: Limitazione con la visualizzazione di un singolo record in Microsoft Office SharePoint Server in base a più valori" per assegnare valori agli elementi della matrice.
/***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: Limitazione con la specifica dei valori NULL ai parametri di tipo complessi
Spiegazione: se non si specifica alcun valore per un parametro di tipo complesso da una web part in Microsoft Office SharePoint Server, NULL deve essere passato come valore per il parametro di tipo complesso al servizio WCF. Tuttavia, un valore non NULL viene passato per il parametro di tipo complesso e NULL viene passato per i relativi elementi figlio (di tipo semplice). In questo modo si verifica una mancata corrispondenza tra lo schema del messaggio previsto e lo schema del messaggio passato al servizio WCF. Di conseguenza, l'adapter SAP potrebbe visualizzare un messaggio di errore.
Nota
Per scoprire il valore predefinito di un parametro di tipo complesso quando non viene passato alcun valore da una web part in Microsoft Office SharePoint Server, usare il passaggio 2 nell'esempio di codice indicato in "Problema 1: Limitazione con la visualizzazione di un singolo record in Microsoft Office SharePoint Server in base a più valori".
Risoluzione: usare una Web part personalizzata per assegnare un valore NULL al parametro di tipo complesso. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter SAP.