Sintaxis de una instrucción EXECQUERY en SAP
Puede usar la GUI de SAP para crear consultas seleccionando gráficamente las tablas que desea consultar, las columnas y el criterio de ordenación que desea incluir en el conjunto de resultados, etc. El proveedor de datos para SAP permite a los usuarios ejecutar estas consultas desde una aplicación de ADO.NET proporcionando una operación EXECQUERY que los usuarios pueden usar para ejecutar una consulta definida en el sistema SAP.
El proveedor de datos para SAP usa un Z_EXECUTE_SAP_QUERY RFC personalizado para ejecutar las consultas predefinidas en el sistema SAP. A su vez, la RFC personalizada ejecuta el RSAQ_REMOTE_QUERY_CALL, que es un RFC estándar definido en el sistema SAP. Por lo tanto, para poder usar la operación EXECQUERY, debe instalar la RFC personalizada en el sistema SAP en el que ejecutará las consultas. Para obtener instrucciones sobre cómo instalar la RFC personalizada, consulte Instalación de RFC personalizados para el proveedor de datos para SAP.
En este tema se proporciona información sobre la sintaxis de la operación EXECQUERY y otra información útil relacionada con la operación EXECQUERY.
Sintaxis de una instrucción EXECQUERY
En la sección siguiente se describen las especificaciones gramaticales para usar la operación EXECQUERY en el proveedor de datos para SAP.
EXECQUERY <QueryName> @USERGROUP='usergroup' [, @WORKSPACE='X'] [, @VARIANT='variant']
[, @P1='<value 1>’] [, @P2='<value 2>'] ... [, @Pn = '<value n>'] [, @P1!='<value 3>'] [, @P1 > '<value 4>'] [, @P1 <= '<value 2>']
[, NOT @P1 = '<value 2>'] [, NOT @P1 != '<value 2>'] [, NOT @P1 > '<value 2>']
[, @P1 BETWEEN '<value 1>' AND '<value 2>'] [, NOT @P1 BETWEEN '<value 1>' AND '<value2>’]
[OPTION 'USEORIGINALCOLUMNNAMES']
donde:
<QueryName> es el nombre de la consulta definida en el sistema SAP.
USERGROUP hace referencia al grupo de usuarios en el que se define la consulta. Es un parámetro obligatorio.
WORKSPACE hace referencia al área de trabajo en la que se define la consulta. En SAP, hay dos áreas de trabajo: Estándar y Global. Proporcione un espacio vacío para especificar el área de trabajo Estándar. Proporcione
X
para especificar el área de trabajo Global. El valor predeterminado es espacio vacío.VARIANT hace 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.
@Pn hace referencia al campo de selecciónnº en la definición de consulta de SAP.
USEORIGINALCOLUMNNAMES especifica si el proveedor usa los nombres de columna originales en el Conjunto de datos, tal como existen en el sistema SAP. De forma predeterminada, el proveedor usa los nombres descriptivos definidos en la consulta de SAP. Sin embargo, si los nombres descriptivos de la consulta no son únicos, el cliente de ADO.NET producirá un error al leer los datos del conjunto de datos. En estos escenarios, debe especificar la opción USEORIGINALCOLUMNNAMES, lo que indica que el proveedor usa los nombres de columna originales en el Conjunto de datos.
Importante
Siempre debe proporcionar el valor de la palabra clave OPTION entre comillas simples, por ejemplo, "USEORIGINALCOLUMNNAMES".
Nota
Para obtener información sobre cómo los parámetros de una consulta de SAP se traducen en una sintaxis EXECQUERY, consulte Traducción de parámetros de consulta de SAP al comando EXECQUERY.
Enmarcar una sintaxis EXECQUERY
La sintaxis de marco de una operación EXECQUERY para ejecutar una consulta sap depende de cómo se define la consulta en el sistema SAP, incluido cada valor de parámetro definido en SAP. Para obtener información sobre cómo enmarcar la sintaxis EXECQUERY para ejecutar una consulta SAP, consulte Traducción de parámetros de consulta de SAP en el comando EXECQUERY.
Consideraciones adicionales al usar la operación EXECQUERY
En esta sección se enumeran los puntos que debe tener en cuenta al usar la instrucción EXECQUERY con el proveedor de datos para SAP.
Los valores especificados para USERGROUP, WORKSPACE y VARIANT se pasan tal cual a la RFC de SAP estándar, RSAQ_REMOTE_QUERY_CALL. El proveedor de datos para SAP no valida los valores especificados para estos parámetros.
Todos los valores devueltos por la operación EXECQUERY son de tipo cadena.
Las palabras clave para los nombres de consulta, el grupo de usuarios, el área de trabajo y las variantes no distinguen mayúsculas de minúsculas. Sin embargo, los nombres de parámetro siempre deben estar en mayúsculasP, como @P1, @P2, etc. Por ejemplo:
EXECQUERY xyz USERGROUP=’mygrp’, NOT @P1= 'somevalue'
equivale a:
EXECQUERY xyz uSERgROUP=’mygrp’, NOT @P1= 'somevalue'
Los operadores admitidos por EXECQUERY son >, , ><=, =, <!=, NOT y BETWEEN.
La operación EXECQUERY no admite caracteres comodín. Por ejemplo, la siguiente instrucción proporciona el resultado esperado:
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1 = '0000003262',@P2 = 'La Quinta Hotel & Towers'
Sin embargo, la misma consulta cuando se ejecuta con un carácter comodín da un error. Observe el uso de caracteres comodín para @P2.
EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1 = '0000003262',@P2 = '*&*'
En este ejemplo, podría obtener un error que indica que no se encontró ningún dato. Esto se debe a que la consulta busca '*&*' como una cadena y no considera asterisco (*) como carácter comodín.
Siempre debe especificar valores de fecha en formato AAAAMMDD.
Si está ejecutando una consulta que tiene una variante definida en el sistema SAP, puede especificar el nombre de la variante como parte del comando. Por ejemplo:
EXECQUERY myquery @usergroup='mygroup',@variant = 'variant1'
Nota
No es necesario especificar un nombre de variante si se define una variante predeterminada para la consulta en el sistema SAP.
Consulte también
Uso del proveedor de datos de .NET Framework para mySAP Business Suite