Compartir a través de


Sintaxis de una instrucción EXEC en SAP

En la sección siguiente se describen las especificaciones gramaticales para implementar instrucciones EXEC en el proveedor de datos de .NET Framework para mySAP Business Suite. Observe que, en varios casos, la sintaxis es algo diferente de la sintaxis de Transact-SQL.

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

donde:

  • rfc_name especifica el nombre de la llamada de función que se va a ejecutar.

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

    • param_name especifica el nombre del parámetro definido en la interfaz de función.

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

  • OPTION proporciona la opción sobre cómo desea presentar los datos. Las opciones disponibles son:

    • la opción disabledatavalidation establece la propiedad de enlace EnableSafeTyping en el adaptador de SAP subyacente. Cuando se habilita la escritura segura, los tipos de datos DATS, TIMS y NUMC se representan como cadenas. Para obtener más información sobre esta propiedad de enlace, vea Leer sobre el adaptador de BizTalk para las propiedades de enlace de mySAP Business Suite.

    • firstresultset especifica el primer conjunto de resultados devuelto por el proveedor de datos para SAP. Cuando se ejecuta cualquier instrucción en un origen del proveedor de ADO, solo está disponible el primer conjunto de resultados devuelto. En escenarios DE RFC EXEC, normalmente se devuelven varios parámetros de tabla, pero si solo el primer conjunto de resultados está disponible para el programa cliente, que podría no ser de uso. Al especificar la palabra clave "firstresultset" como parte de la cláusula OPTION, los clientes pueden especificar el primer parámetro de tabla que quieren que devuelva el proveedor. Por ejemplo:

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

      En este ejemplo, la instrucción EXEC especifica que el primer parámetro de tabla devuelto debe ser TAB_ALLTYPES.

    Importante

    Siempre debe proporcionar los valores de la palabra clave OPTION entre comillas simples, por ejemplo, "disabledatavalidation".

    En la sintaxis anterior, xml_element se puede usar para proporcionar entradas para tipos complejos. La estructura del elemento xml será diferente para las estructuras y las tablas. El xml_element de estructura es similar al siguiente:

<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>  

El xml_element de la tabla es similar al siguiente:

<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>  

Por ejemplo, el elemento XML de un tipo de estructura es similar al siguiente:

<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>  

Del mismo modo, el elemento XML de un tipo de tabla es similar al siguiente:

<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>  

Para obtener instrucciones de ejemplo, vea Examples for EXEC Statement.

Control de parámetros con nombre

A continuación se muestran instrucciones para especificar parámetros con nombre en consultas EXEC:

  • Para especificar parámetros, asígneles un nombre (por ejemplo, @param_name=value).

    Nota

    No se admiten parámetros sin nombre

  • Cuando se define un parámetro mediante un valor predeterminado, puede ejecutar el procedimiento sin especificar un parámetro.

  • Las consultas EXEC no admiten el uso de parámetros con las siguientes propiedades:

    • Estructuras anidadas (estructuras que contienen estructuras como sus campos).

    • Tablas anidadas.

    • Tabla que contiene una estructura.

    • Estructura que contiene una tabla.

    • Estructura o tabla que tiene campos con tipos de cadena compuestos, por ejemplo SSTRING o RAWSTRING.

      En la tabla siguiente se enumeran las asignaciones lógicas entre los tipos de parámetros RFC y las instrucciones de los parámetros al ejecutar una RFC.

    Tipo de parámetro RFC Palabra clave Query Dirección del parámetro
    Importar parámetros Nada Paramdirection.Input
    Exportar parámetros Resultados Paramdirection.Output
    Parámetros de tabla Salida o nada InputOutput

    A continuación se muestran instrucciones generales para controlar parámetros:

  • Puede especificar valores de parámetro como constantes o mediante marcadores de posición en la consulta.

  • Al usar marcadores de posición en la consulta, debe crear un SAPParameter objeto y agregarlo al objeto de comando correspondiente. Después, pase el nombre del marcador de posición al constructor; la dirección y el valor dependen del contexto.

    • Para Input los parámetros, no especifique en la consulta una palabra clave para la dirección del parámetro. El value campo del objeto de parámetro debe establecerse o el proveedor producirá una excepción. No debe establecer explícitamente el direction campo del objeto de parámetro, ya que el proveedor tiene Inputcomo valor predeterminado .

    • Para otros parámetros, use el formulario @paramname=@placeholder y especifique la Output palabra clave explícitamente en la consulta. A continuación, debe agregar un SAPParameter que se corresponda con el marcador de posición y establecer explícitamente la dirección ParamDirection.Output del parámetro en o ParamDirection.InputOutput, según el tipo de parámetro.

  • Los nombres de parámetros y los nombres de marcador de posición no distinguen mayúsculas de minúsculas.

  • Los nombres de parámetro no se pueden repetir en una consulta a menos que tengan direcciones diferentes.

  • Los nombres de marcador de posición no se pueden repetir en una consulta.

Consideraciones al llamar a una instrucción EXEC

En esta sección se enumeran los puntos que debe tener en cuenta al usar la instrucción EXEC con el proveedor de datos para SAP.

  • Para una instrucción EXEC, el proveedor de datos para SAP devuelve TIMS valores de campo como objetos .NET System.DateTime .

    Nota

    Para una instrucción SELECT, el proveedor de datos para SAP devuelve TIMS valores de campo como objetos .NET System.TimeSpan . Para obtener más información sobre la instrucción SELECT, vea Sintaxis para una instrucción SELECT en SAP.

Consulte también

Acerca del proveedor de datos de .NET Framework para mySAP Business Suite