Condividi tramite


Esempi di istruzione EXEC

In questo argomento viene illustrata la sintassi di esempio per varie istruzioni EXEC.

Istruzioni di esempio

  • Per eseguire un BAPI che non accetta parametri di input, usare la sintassi seguente; i dati vengono restituiti tramite un oggetto DataReader :

    EXEC BAPI_COMPANYCODE_GETLIST  
    
  • Per eseguire un RFC che accetta parametri di input, usare la sintassi seguente:

    EXEC RFC_CUSTOMER_GET @NAME1='Contoso'  
    
  • Per eseguire un RFC che accetta i parametri di input specificati come variabile, usare la sintassi seguente:

    EXEC RFC_CUSTOMER_GET @var=@var  
    

    In questo esempio è necessario creare un parametro denominato @var e impostare il valore in modo esplicito (ad esempio, su 1001), perché il primo parametro per RFC_CUSTOMER_GET corrisponde a KUNNR (Customer Number)

  • Per eseguire un RFC che usa una variabile per il nome del parametro di input, usare la sintassi seguente:

    EXEC RFC_CUSTOMER_GET @KUNNR=@var1, @NAME1='Contoso'  
    

    È necessario creare un parametro denominato @var1, specificare il valore e quindi associarlo all'oggetto comando corrispondente. La direzione predefinita dell'oggetto parametro appena creato è input.

  • Per eseguire un bapi e restituire le tabelle come parametro, usare la sintassi seguente:

    EXEC BAPI_COMPANYCODE_GETLIST @COMPANYCODE_LIST=@var1 OUTPUT  
    

    È necessario creare un parametro denominato @var1, specificare il valore e associarlo all'oggetto comando corrispondente. La direzione dell'oggetto parametro appena creato deve essere InputOutput o Output.

  • Nell'esempio EXEC seguente viene usato un parametro di tipo complesso della tabella. Nell'esempio @fields è un parametro TABLE.

    exec rfc_read_table @query_table='BNKA', @fields='<FIELDS xmlns='http://Microsoft.LobServices.Sap/2007/03/Rfc/'>  
                <RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
                  <FIELDNAME>BANKL</FIELDNAME>  
                </RFC_DB_FLD>  
                <RFC_DB_FLD  xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
                    <FIELDNAME>BANKS</FIELDNAME>  
                </RFC_DB_FLD>  
              </FIELDS>', @fields=@flds output  
    
  • Nell'esempio EXEC seguente viene usato un tipo complesso STRUCT. Nell'esempio @equimaster è un parametro STRUCT.

    exec BAPI_EQMT_MODIFY @equipment='000000000000000637', @equimaster='<EQUIMASTER>           
                <EQUIPMENT xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">equip</EQUIPMENT>  
                <EQUICATGRY xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">E</EQUICATGRY>  
                <MATERIAL xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">mat</MATERIAL>  
              </EQUIMASTER >', @equimaster=@em output  
    

Supporto per tipi di parametri complessi

Esistono due modi per supportare parametri RFC complessi (tabelle e strutture) quando si usa il provider di dati per SAP:

  • Specificare un valore XML inline per il tipo complesso. In questo esempio viene illustrato come passare XML ai campi di tipo di parametro complessi. Nell'esempio seguente @fields è un parametro di tabella.

    exec rfc_read_table @query_table='BNKA', @fields='<FIELDS xmlns='http://Microsoft.LobServices.Sap/2007/03/Rfc/'>  
                <RFC_DB_FLD xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
                  <FIELDNAME>BANKL</FIELDNAME>  
                </RFC_DB_FLD>  
                <RFC_DB_FLD  xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">  
                    <FIELDNAME>BANKS</FIELDNAME>  
                </RFC_DB_FLD>  
              </FIELDS>', @fields=@flds output  
    
  • Creare un parametro DataTable con colonne per i campi nel tipo complesso e impostare il valore del parametro SAP su DataTable. In questo esempio viene illustrato come impostare il @fields tipo complesso usando un oggetto DataTable.

    cmd.CommandText = "exec rfc_read_table @query_table='BNKA', @fields = @p_fields";  
    DataTable dt = new DataTable();  
    dt.Columns.Add("FIELDNAME");  
    SAPParameter p = new SAPParameter("@p_fields");  
    p.Value = dt;  
    

Limitazioni

Il provider di dati per SAP presenta le limitazioni seguenti per i tipi complessi.

  • Quando si passa un tipo complesso in un parametro utilizzando un oggetto DataTable, è necessario includere tutti i campi (colonne) del tipo complesso in DataTable.

  • L'adapter Microsoft BizTalk per mySAP Business Suite non supporta DbNull. Non è possibile impostare DbNull come valore per i parametri.