Partager via


Syntaxe d’une instruction EXECQUERY dans SAP

Vous pouvez utiliser l’interface graphique utilisateur SAP pour créer des requêtes en sélectionnant graphiquement les tables que vous souhaitez interroger, les colonnes et l’ordre de tri que vous souhaitez inclure dans le jeu de résultats, etc. Le fournisseur de données pour SAP permet aux utilisateurs d’exécuter ces requêtes à partir d’une application ADO.NET en fournissant une opération EXECQUERY que les utilisateurs peuvent utiliser pour exécuter une requête définie dans le système SAP.

Le fournisseur de données pour SAP utilise une Z_EXECUTE_SAP_QUERY RFC personnalisée pour exécuter les requêtes prédéfinies dans le système SAP. La RFC personnalisée exécute à son tour la RSAQ_REMOTE_QUERY_CALL, qui est une RFC standard définie dans le système SAP. Par conséquent, avant de pouvoir utiliser l’opération EXECQUERY, vous devez installer la RFC personnalisée dans le système SAP sur lequel vous allez exécuter vos requêtes. Pour obtenir des instructions sur l’installation du RFC personnalisé, consultez Installer des RFC personnalisés pour le fournisseur de données pour SAP.

Cette rubrique fournit des informations sur la syntaxe de l’opération EXECQUERY et d’autres informations utiles relatives à l’opération EXECQUERY.

Syntaxe d’une instruction EXECQUERY

La section suivante décrit les spécifications grammaticales pour l’utilisation de l’opération EXECQUERY sur le fournisseur de données pour 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']  
  

où :

  • <QueryName> est le nom de la requête définie dans le système SAP.

  • USERGROUP fait référence au groupe d’utilisateurs dans lequel la requête est définie. Ce paramètre est obligatoire.

  • WORKSPACE fait référence à l’espace de travail dans lequel la requête est définie. Dans SAP, il existe deux espaces de travail : Standard et Global. Fournissez un espace vide pour spécifier l’espace de travail Standard. Indiquez X pour spécifier l’espace de travail global. La valeur par défaut est espace vide.

  • VARIANT fait référence à un ensemble enregistré de critères de sélection que vous pouvez spécifier lors de l’exécution d’une requête SAP. Par exemple, vous pouvez utiliser des variantes pour spécifier des valeurs par défaut pour les requêtes.

  • @Pn fait référence aunième champ de sélection dans la définition de requête SAP.

  • USEORIGINALCOLUMNNAMES spécifie si le fournisseur utilise les noms de colonnes d’origine dans le DataSet, tels qu’ils existent dans le système SAP. Par défaut, le fournisseur utilise les noms conviviaux définis dans la requête SAP. Toutefois, si les noms conviviaux de la requête ne sont pas uniques, le client ADO.NET génère une erreur lors de la lecture des données du DataSet. Dans ces scénarios, vous devez spécifier l’option USEORIGINALCOLUMNNAMES, indiquant que le fournisseur utilise les noms de colonnes d’origine dans le DataSet.

    Important

    Vous devez toujours fournir la valeur de l’mot clé OPTION entre guillemets simples, par exemple , « USEORIGINALCOLUMNNAMES ».

Notes

Pour plus d’informations sur la façon dont les paramètres d’une requête SAP se traduisent en syntaxe EXECQUERY, consultez Traduire les paramètres de requête SAP en commande EXECQUERY.

Encadrement d’une syntaxe EXECQUERY

La syntaxe d’encadrement d’une opération EXECQUERY pour exécuter une requête SAP dépend de la façon dont la requête est définie dans le système SAP, y compris chaque valeur de paramètre définie dans SAP. Pour plus d’informations sur la façon de cadrer la syntaxe EXECQUERY pour exécuter une requête SAP, consultez Traduire les paramètres de requête SAP en commande EXECQUERY.

Considérations supplémentaires lors de l’utilisation de l’opération EXECQUERY

Cette section répertorie les points que vous devez garder à l’esprit lors de l’utilisation de l’instruction EXECQUERY avec le fournisseur de données pour SAP.

  • Les valeurs spécifiées pour USERGROUP, WORKSPACE et VARIANT sont transmises telles quelles à la norme SAP RFC, RSAQ_REMOTE_QUERY_CALL. Le fournisseur de données pour SAP ne valide pas les valeurs spécifiées pour ces paramètres.

  • Toutes les valeurs retournées par l’opération EXECQUERY sont de type chaîne.

  • Les mots clés pour les noms de requête, le groupe d’utilisateurs, l’espace de travail et les variantes ne respectent pas la casse. Toutefois, les noms de paramètres doivent toujours être en majusculesP, par @P1exemple , @P2, etc. Par exemple :

    EXECQUERY xyz USERGROUP=’mygrp’, NOT @P1= 'somevalue'  
    

    est identique à

    EXECQUERY xyz uSERgROUP=’mygrp’, NOT @P1= 'somevalue'  
    
  • Les opérateurs pris en charge par EXECQUERY sont >, , ><=, <=, !=, NOT et BETWEEN.

  • Les caractères génériques ne sont pas pris en charge par l’opération EXECQUERY. Par exemple, l’instruction suivante donne la sortie attendue :

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024',  @P1 = '0000003262',@P2 = 'La Quinta Hotel & Towers'  
    

    Toutefois, la même requête lorsqu’elle est exécutée avec un caractère générique génère une erreur. Notez l’utilisation de caractères génériques pour @P2.

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024',  @P1 = '0000003262',@P2 = '*&*'  
    

    Dans cet exemple, vous pouvez obtenir une erreur indiquant qu’aucune donnée n’a été trouvée. En effet, la requête recherche « *&* » sous forme de chaîne et ne considère pas l’astérisque (*) comme caractère générique.

  • Vous devez toujours spécifier des valeurs de date au format AAAAMMJJ.

  • Si vous exécutez une requête dont une variante est définie dans le système SAP, vous pouvez spécifier le nom de la variante dans le cadre de la commande . Par exemple :

    EXECQUERY myquery @usergroup='mygroup',@variant = 'variant1'  
    

    Notes

    Vous n’avez pas besoin de spécifier un nom de variante si une variante par défaut est définie pour la requête dans le système SAP.

Voir aussi

Utiliser le fournisseur de données .NET Framework pour mySAP Business Suite