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 essereInputOutput
oOutput
.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.