Risolvere i problemi relativi al provider di dati per SAP
Questa sezione illustra l'uso di tecniche di risoluzione dei problemi per risolvere gli errori operativi che potrebbero verificarsi quando si usa il provider di dati .NET Framework per mySAP Business Suite.
Errore del parametro sconosciuto usando il provider di dati per SAP
Problema
Il provider di dati per SAP restituisce l'errore seguente:
Microsoft.Data.SAPClient.SAPException: Failed to retrieve data from SAP server --- > Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Unknown Parameter OUT_ZDATATABLE.
Causa
La RFC personalizzata, Z_EXTRACT_DATA_OO, installata nel sistema SAP non è la più recente. Il provider di dati per SAP usa un RFC personalizzato, Z_EXTRACT_DATA_OO, per eseguire operazioni SELECT nella tabella SAP.
Risoluzione
È necessario aggiornare il controllo RFC personalizzato alla versione più recente disponibile. Questo RFC, Z_EXTRACT_DATA_OO, è disponibile con l'adapterpacknoversion. Per altre informazioni su come installare e disinstallare la RFC personalizzata, vedere Installare schede di rete personalizzate per il provider di dati per SAP.
Eccezioni di memoria insufficiente durante la selezione dei dati da una tabella SAP
Problema
Il provider di dati per SAP genera un'eccezione di memoria insufficiente durante la selezione dei dati da un sistema SAP.
Causa
Per impostazione predefinita, il provider di dati per SAP recupera 10.000 righe alla volta. Inoltre, ogni batch di righe recuperate dal sistema SAP viene archiviato nella memoria. Quindi
Se la tabella da cui vengono recuperati i dati contiene un numero elevato di righe o
Se la tabella contiene colonne di tipi di dati che utilizzano una quantità significativa di memoria,
L'utilizzo della memoria da parte del provider di dati per SAP aumenta significativamente e può causare un'eccezione di memoria insufficiente.
Risoluzione
È possibile modificare il numero massimo di righe recuperate dal sistema SAP. È possibile farlo specificando un'opzione "batchsize" con l'istruzione SELECT. Ad esempio:
SELECT * FROM <tablename> OPTION 'batchsize 1000'
Il provider di dati per SAP recupera ora solo 1000 righe alla volta e quindi non utilizza una grande quantità di memoria.
Eccezione durante l'esecuzione di una query che accetta parametri con valori di data
Problema
Si ottiene l'eccezione seguente quando si esegue una query usando il comando EXECQUERY con un parametro che accetta un valore di data:
ErrorCode=RFC_SYS_EXCEPTION. ErrorGroup=RFC_ERROR_SYSTEM_FAILURE.
SapErrorMessage=Enter date in the format __.__.____.
Causa
Quando si eseguono query usando il comando EXECQUERY, è necessario specificare sempre i valori di data nel formato AAAAMMDD.
Risoluzione
Assicurarsi di specificare i valori di data nel formato AAAAMMDD. Ad esempio:
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1='20080606'
NO_VARIANT'eccezione che esegue query usando il comando EXECQUERY
Problema
Si ottiene l'eccezione seguente quando si esegue una query usando il comando EXECQUERY:
Exception: Details: ErrorCode=RFC_EXCEPTION. ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION. SapErrorMessage=NO_VARIANT.
AdapterErrorMessage=Error returned by RfcCallReceiveEx while calling RFC: <RFC name>
Causa
È possibile che siano presenti due cause probabili per questa eccezione:
La query che si sta tentando di eseguire include varianti definite nel sistema SAP. Le varianti fanno riferimento a un set salvato di criteri di selezione che è possibile specificare durante l'esecuzione di una query SAP. Ad esempio, è possibile usare varianti per specificare i valori predefiniti per le query.
La query che si sta tentando di eseguire non ha una variante definita né prevede che venga passato un valore di parametro.
Risoluzione
Per motivo 1, assicurarsi di specificare il nome della variante associata alla query. Ad esempio:
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @variant = ‘variant1’
Per il motivo 2, assicurarsi di specificare un nome e un valore di parametro fittizio durante la specifica del comando di query. Ad esempio, se la query "myquery" non richiede alcun parametro da eseguire, il comando EXECQUERY deve essere specificato come:
EXECQUERY myquery @usergroup='mygroup',@P1 = 'dummy_value'