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的参数,指定值,并将其绑定到相应的命令对象。 新创建的参数对象的方向应为 InputOutputOutput

  • 以下 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 设置为参数的值。