Compartir a través de


Solucionar problemas relacionados con el proveedor de datos para SAP

En esta sección se describe el uso de técnicas de solución de problemas para resolver los errores operativos que puede encontrar al usar el proveedor de datos de .NET Framework para mySAP Business Suite.

Error de parámetro desconocido mediante el proveedor de datos para SAP

Problema

El proveedor de datos para SAP proporciona el siguiente error:

Microsoft.Data.SAPClient.SAPException: Failed to retrieve data from SAP server --- > Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Unknown Parameter OUT_ZDATATABLE.  

Causa

La RFC personalizada, Z_EXTRACT_DATA_OO, instalada en el sistema SAP no es la más reciente. El proveedor de datos para SAP usa una RFC personalizada, Z_EXTRACT_DATA_OO, para realizar operaciones SELECT en la tabla de SAP.

Resolución

Debe actualizar la RFC personalizada a la versión más reciente disponible. Este RFC, Z_EXTRACT_DATA_OO, está disponible con adapterpacknoversion. Para obtener más información sobre cómo instalar y desinstalar la RFC personalizada, consulte Instalación de RFC personalizados para el proveedor de datos para SAP.

Excepciones de memoria insuficiente al seleccionar datos de una tabla de SAP

Problema

El proveedor de datos para SAP produce una excepción de memoria insuficiente al seleccionar datos de un sistema SAP.

Causa

De forma predeterminada, el proveedor de datos para SAP recupera 10 000 filas a la vez. Además, cada lote de filas recuperadas del sistema SAP se almacena en la memoria. Por lo tanto,

  • Si la tabla de la que se recuperan los datos contiene un gran número de filas, o

  • Si la tabla contiene columnas de tipos de datos que consumen una cantidad significativa de memoria,

    El consumo de memoria por parte del proveedor de datos para SAP aumenta significativamente y puede dar lugar a una excepción de memoria insuficiente.

    Resolución

    Puede cambiar el número máximo de filas recuperadas del sistema SAP. Para ello, especifique una opción "batchsize" con la instrucción SELECT. Por ejemplo:

SELECT * FROM <tablename> OPTION 'batchsize 1000'  

El proveedor de datos de SAP ahora recupera solo 1000 filas a la vez y, por tanto, no consume una gran cantidad de memoria.

Excepción al ejecutar una consulta que toma parámetros con valores de fecha

Problema

Se obtiene la siguiente excepción al ejecutar una consulta mediante el comando EXECQUERY que tiene un parámetro que toma un valor de fecha:

ErrorCode=RFC_SYS_EXCEPTION. ErrorGroup=RFC_ERROR_SYSTEM_FAILURE.   
SapErrorMessage=Enter date in the format __.__.____.  

Causa

Al ejecutar consultas mediante el comando EXECQUERY, siempre debe especificar valores de fecha en formato AAAAMMDD.

Resolución

Asegúrese de especificar valores de fecha en formato AAAAMMDD. Por ejemplo:

EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1='20080606'  

NO_VARIANT excepción que ejecuta consultas mediante el comando EXECQUERY

Problema

Obtiene la siguiente excepción al ejecutar una consulta mediante el 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

Puede haber dos causas probables para esta excepción:

  1. La consulta que intenta ejecutar tiene variantes definidas en el sistema SAP. Las variantes hacen referencia a un conjunto guardado de criterios de selección que puede especificar al ejecutar una consulta de SAP. Por ejemplo, puede usar variantes para especificar valores predeterminados para las consultas.

  2. La consulta que está intentando ejecutar no tiene definida una variante ni espera que se pase un valor de parámetro.

    Resolución

  3. Por el motivo 1, asegúrese de especificar el nombre de la variante asociada a la consulta. Por ejemplo:

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @variant =  ‘variant1’  
    
  4. Por el motivo 2, asegúrese de proporcionar un nombre de parámetro ficticio y un valor al especificar el comando de consulta. Por ejemplo, si la consulta "myquery" no requiere que se ejecute ningún parámetro, el comando EXECQUERY debe especificarse como:

    EXECQUERY myquery @usergroup='mygroup',@P1 = 'dummy_value'  
    

Consulte también

Solución de problemas del adaptador de SAP