Condividi tramite


Sintassi per un'istruzione EXEC in SAP

La sezione seguente descrive le specifiche grammaticali per l'implementazione di istruzioni EXEC sul provider di dati .NET Framework per mySAP Business Suite. Si noti che in diversi casi la sintassi è leggermente diversa dalla sintassi Transact-SQL.

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

dove:

  • rfc_name specifica il nome della chiamata di funzione da eseguire.

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

    • param_name specifica il nome del parametro definito nell'interfaccia della funzione.

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

  • OPTION offre l'opzione per la modalità di presentazione dei dati. Sono disponibili le opzioni seguenti:

    • l'opzione disabledatavalidation imposta la proprietà di associazione EnableSafeTyping nell'adattatore SAP sottostante. Quando la digitazione sicura è abilitata, i tipi di dati DATS, TIMS e NUMC sono rappresentati come stringhe. Per altre informazioni su questa proprietà di associazione, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione mySAP Business Suite.

    • firstresultset specifica il primo set di risultati restituito dal provider di dati per SAP. Quando un'istruzione viene eseguita in un'origine del provider ADO, è disponibile solo il primo set di risultati restituito. Per gli scenari RFC EXEC, in genere vengono restituiti più parametri di tabella, ma se è disponibile solo il primo set di risultati per il programma client, che potrebbe non essere d'uso. Specificando la parola chiave "firstresultset" come parte della clausola OPTION, i client possono specificare il primo parametro di tabella che desiderano che il provider restituisca. Ad esempio:

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

      In questo esempio, l'istruzione EXEC specifica che il primo parametro di tabella restituito deve essere TAB_ALLTYPES.

    Importante

    È sempre necessario specificare i valori per la parola chiave OPTION all'interno di virgolette singole, ad esempio "disabledatavalidation".

    Nella sintassi precedente è possibile usare xml_element per fornire input per tipi complessi. La struttura degli elementi xml sarà diversa per le strutture e le tabelle. Il xml_element per la struttura è simile al seguente:

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

Il xml_element per la tabella è simile al seguente:

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

Ad esempio, l'elemento XML per un tipo di struttura è simile al seguente:

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

Analogamente, l'elemento XML per un tipo di tabella è simile al seguente:

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

Per istruzioni di esempio, vedere Esempi per l'istruzione EXEC.

Gestione dei parametri denominati

Di seguito sono riportate le linee guida per specificare i parametri denominati nelle query EXEC:

  • È necessario specificare i parametri assegnandole un nome, @param_name=value)ad esempio .

    Nota

    I parametri senza nome non sono supportati

  • Quando un parametro viene definito usando un valore predefinito, è possibile eseguire la procedura senza specificare un parametro.

  • Le query EXEC non supportano l'uso di parametri con le proprietà seguenti:

    • Strutture annidate (strutture che contengono strutture come campi).

    • Tabelle nidificate.

    • Tabella contenente una struttura.

    • Struttura contenente una tabella.

    • Struttura o tabella con campi con tipi stringa compositi, ad esempio SSTRING o RAWSTRING.

      Nella tabella seguente sono elencati i mapping logici tra i tipi di parametro RFC e le direzioni dei parametri durante l'esecuzione di un RFC.

    Tipo param RFC Parola chiave query Direzione parametro
    Importare parametri Nothing Paramdirection.Input
    Esportare i parametri Output Paramdirection.Output
    Parametri di tabella Output/Nothing InputOutput

    Di seguito sono riportate linee guida generali per la gestione dei parametri:

  • È possibile specificare i valori dei parametri come costanti o usando segnaposto nella query.

  • Quando si usano segnaposto nella query, è necessario creare un SAPParameter oggetto e aggiungerlo all'oggetto comando corrispondente. Si passa quindi il nome segnaposto al costruttore; la direzione e il valore dipendono dal contesto.

    • Per Input i parametri, non specificare nella query una parola chiave per la direzione del parametro. Il value campo dell'oggetto parametro deve essere impostato oppure il provider genererà un'eccezione. Non è necessario impostare in modo esplicito il direction campo dell'oggetto parametro, perché per impostazione predefinita il provider è Input.

    • Per altri parametri, usare il modulo @paramname=@placeholder e specificare la Output parola chiave in modo esplicito nella query. È quindi necessario aggiungere un SAPParameter oggetto che corrisponde al segnaposto e impostare in modo esplicito la direzione del parametro su ParamDirection.Output o ParamDirection.InputOutput, a seconda del tipo di parametro.

  • I nomi dei parametri e i nomi segnaposto non fanno distinzione tra maiuscole e minuscole.

  • I nomi dei parametri non possono essere ripetuti in una query a meno che non abbiano direzioni diverse.

  • I nomi segnaposto non possono essere ripetuti in una query.

Considerazioni sulla chiamata a un'istruzione EXEC

Questa sezione elenca i punti da tenere presenti quando si usa l'istruzione EXEC con il provider di dati per SAP.

  • Per un'istruzione EXEC, il provider di dati per SAP restituisce TIMS i valori di campo come oggetti .NET System.DateTime .

    Nota

    Per un'istruzione SELECT, il provider di dati per SAP restituisce TIMS i valori di campo come oggetti .NET System.TimeSpan . Per altre informazioni sull'istruzione SELECT, vedere Sintassi per un'istruzione SELECT in SAP.

Vedere anche

Informazioni sul provider di dati .NET Framework per mySAP Business Suite