EXEC 语句示例
本主题显示各种 EXEC 语句的示例语法。
示例语句
若要执行不采用任何输入参数的 BAPI,请使用以下语法:数据通过 DataReader 对象返回:
EXEC BAPI_COMPANYCODE_GETLIST
若要执行采用输入参数的 RFC,请使用以下语法:
EXEC RFC_CUSTOMER_GET @NAME1='Contoso'
若要执行采用指定为变量的输入参数的 RFC,请使用以下语法:
EXEC RFC_CUSTOMER_GET @var=@var
在此示例中,必须创建一个名为
@var
的参数,并将值显式 (设置为 1001) ,因为 RFC_CUSTOMER_GET 的第一个参数对应于 KUNNR (Customer Number)若要执行使用变量作为输入参数名称的 RFC,请使用以下语法:
EXEC RFC_CUSTOMER_GET @KUNNR=@var1, @NAME1='Contoso'
必须创建名为
@var1
的参数,指定值,然后将其绑定到相应的命令对象。 新创建的参数对象的默认方向为input
。若要执行 BAPI 并将表作为参数返回,请使用以下语法:
EXEC BAPI_COMPANYCODE_GETLIST @COMPANYCODE_LIST=@var1 OUTPUT
必须创建一个名为
@var1
的参数,指定值,并将其绑定到相应的命令对象。 新创建的参数对象的方向应为InputOutput
或Output
。以下 EXEC 示例使用表复杂类型参数。 在此示例中, @fields 是一个 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
以下 EXEC 示例使用 STRUCT 复杂类型。 在示例中, @equimaster 是一个 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
支持复杂参数类型
使用适用于 SAP 的数据提供程序时,可通过两种方法支持复杂的 RFC 参数 (表和结构) :
为复杂类型提供内联 XML 值。 此示例演示如何将 XML 传递给复杂参数类型 字段。 在以下示例中, @fields 是一个表参数。
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
创建包含复杂类型字段列的 DataTable 参数,并将 SAP 参数值设置为 DataTable。 此示例演示如何使用 DataTable 设置@fields复杂类型。
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;
限制
适用于 SAP 的数据提供程序对于复杂类型具有以下限制。
使用 DataTable 在参数中传递复杂类型时,必须在 DataTable 中包括所有字段 (复杂类型的列) 。
适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器不支持 DbNull。 不能将 DbNull 设置为参数的值。