Partager via


Syntaxe d’une instruction EXEC dans SAP

La section suivante décrit les spécifications grammaticales pour l’implémentation d’instructions EXEC sur le fournisseur de données .NET Framework pour mySAP Business Suite. Notez que dans plusieurs cas, la syntaxe est quelque peu différente de la syntaxe Transact-SQL.

EXEC rfc_name {<argument_element>} [ , …n ]  {;}[0,1] [ OPTION <disabledatavalidation>, <firstresultset> ]  

où :

  • rfc_name spécifie le nom de l’appel de fonction à exécuter.

  • <>argument_element ::= @param_name = [0,1] <const> {[ INPUT | OUTPUT ]}[0,1]

    • param_name spécifie le nom du paramètre défini dans l’interface de fonction.

    • <const> ::= integer | real | string | ? | NULL | xml_element

  • OPTION fournit une option sur la façon dont vous souhaitez présenter les données. Options disponibles :

    • l’option disabledatavalidation définit la propriété de liaison EnableSafeTyping dans l’adaptateur SAP sous-jacent. Lorsque la saisie sécurisée est activée, les types de données DATS, TIMS et NUMC sont représentés sous forme de chaînes. Pour plus d’informations sur cette propriété de liaison, consultez En savoir plus sur les propriétés de liaison de l’adaptateur BizTalk pour mySAP Business Suite.

    • firstresultset spécifie le premier jeu de résultats retourné par le fournisseur de données pour SAP. Quand une instruction est exécutée sur une source de fournisseur ADO, seul le premier jeu de résultats retourné est disponible. Pour les scénarios RFC EXEC, plusieurs paramètres de table sont généralement retournés, mais si seul le premier jeu de résultats est disponible pour le programme client, ce qui peut ne pas être utilisé. En spécifiant le « firstresultset » mot clé dans le cadre de la clause OPTION, les clients peuvent spécifier le premier paramètre de table qu’ils souhaitent que le fournisseur retourne. Par exemple :

      EXEC Z_TEST_ALL_TYPES @P_IN='TestInput' OPTION 'disabledatavalidation', firstresultset TAB_ALLTYPES'  
      

      Dans cet exemple, l’instruction EXEC spécifie que le premier paramètre de table retourné doit être TAB_ALLTYPES.

    Important

    Vous devez toujours fournir les valeurs de l’option mot clé entre guillemets uniques, par exemple, « disabledatavalidation ».

    Dans la syntaxe précédente, xml_element peut être utilisé pour fournir une entrée pour les types complexes. La structure des éléments xml sera différente pour les structures et les tables. Le xml_element de structure ressemble à ce qui suit :

<PARAM_NAME>  
    <FIELDNAME_1 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_1>  
    <FIELDNAME_2 xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">value</FIELDNAME_2>  
    ...  
    ...  
</ PARAM_NAME>  

Le xml_element pour la table ressemble à ce qui suit :

<PARAM_NAME>  
    <STRUCT_NAME  xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
        <FIELDNAME_1>value</FIELDNAME_1>  
    <STRUCT_NAME/>  
    <STRUCT_NAME  xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
        <FIELDNAME_1>value</FIELDNAME_1>  
    <STRUCT_NAME/>  
    ...  
    ...  
</ PARAM_NAME>  

Par exemple, l’élément XML d’un type de structure ressemble à ce qui suit :

<INOUT_STRUCT>  
       <ACCPFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">2006</ACCPFIELD>  
       <CHARFIELD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">John</CHARFIELD>                 
</INOUT_STRUCT>  

De même, l’élément XML d’un type de table ressemble à ce qui suit :

<TAB_ALLTYPES>   
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
       <ACCPFIELD>2006</ACCPFIELD>  
       <CHARFIELD>John</CHARFIELD>                          
</ZZSTRUCTALLTYPES_RFC>  
<ZZSTRUCTALLTYPES_RFC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
       <ACCPFIELD>2007</ACCPFIELD>  
       <CHARFIELD>James</CHARFIELD>                          
</ZZSTRUCTALLTYPES_RFC>  
</TAB_ALLTYPES>  

Pour obtenir des exemples d’instructions, consultez Exemples d’instruction EXEC.

Gestion des paramètres nommés

Voici des instructions pour spécifier des paramètres nommés dans les requêtes EXEC :

  • Vous devez spécifier les paramètres en les nommant (par exemple, @param_name=value).

    Notes

    Les paramètres sans nom ne sont pas pris en charge

  • Lorsqu’un paramètre est défini à l’aide d’une valeur par défaut, vous pouvez exécuter la procédure sans spécifier de paramètre.

  • Les requêtes EXEC ne prennent pas en charge l’utilisation de paramètres avec les propriétés suivantes :

    • Structures imbriquées (structures qui contiennent des structures en tant que champs).

    • Tables imbriquées.

    • Table contenant une structure.

    • Structure contenant une table.

    • Structure ou table qui a des champs avec des types de chaînes composites, par exemple SSTRING ou RAWSTRING.

      Le tableau suivant répertorie les mappages logiques entre les types de paramètres RFC et les directions des paramètres lors de l’exécution d’une RFC.

    RFC Param Type Mot clé de requête Direction des paramètres
    Importer des paramètres Rien Paramdirection.Input
    Paramètres d’exportation Output Paramdirection.Output
    Paramètres de table Sortie/Rien InputOutput

    Voici des instructions générales pour la gestion des paramètres :

  • Vous pouvez spécifier des valeurs de paramètre sous forme de constantes ou à l’aide d’espaces réservés dans la requête.

  • Lorsque vous utilisez des espaces réservés dans la requête, vous devez créer un SAPParameter objet et l’ajouter à l’objet de commande correspondant. Vous passez ensuite le nom de l’espace réservé au constructeur ; la direction et la valeur dépendent du contexte.

    • Pour Input les paramètres, ne spécifiez pas dans la requête une mot clé pour la direction du paramètre. Le value champ de l’objet de paramètre doit être défini, sinon le fournisseur lève une exception. Vous ne devez pas définir explicitement le direction champ de l’objet de paramètre, car le fournisseur a la Inputvaleur par défaut .

    • Pour les autres paramètres, utilisez le formulaire @paramname=@placeholder et spécifiez explicitement le Output mot clé dans la requête. Vous devez ensuite ajouter un SAPParameter qui correspond à l’espace réservé et définir explicitement la direction du paramètre sur ParamDirection.Output ou ParamDirection.InputOutput, en fonction du type de paramètre.

  • Les noms de paramètres et les noms d’espace réservé ne respectent pas la casse.

  • Les noms de paramètres ne peuvent pas être répétés dans une requête, sauf s’ils ont des directions différentes.

  • Les noms d’espace réservé ne peuvent pas être répétés dans une requête.

Considérations relatives à l’appel d’une instruction EXEC

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

  • Pour une instruction EXEC, le fournisseur de données pour SAP retourne TIMS des valeurs de champ en tant qu’objets .NET System.DateTime .

    Notes

    Pour une instruction SELECT, le fournisseur de données pour SAP retourne TIMS des valeurs de champ en tant qu’objets .NET System.TimeSpan . Pour plus d’informations sur l’instruction SELECT, consultez Syntaxe d’une instruction SELECT dans SAP.

Voir aussi

À propos du fournisseur de données .NET Framework pour mySAP Business Suite