次の方法で共有


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のパラメーターを作成し、値を指定し、対応するコマンド オブジェクトにバインドする必要があります。 新しく作成されたパラメーター オブジェクトの方向は、 または OutputであるInputOutput必要があります。

  • 次の 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  
    

複合パラメーター型のサポート

DATA Provider for SAP を使用する場合、複雑な RFC パラメーター (テーブルと構造体) をサポートするには、次の 2 つの方法があります。

  • 複合型のインライン 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;  
    

制限事項

Data Provider for SAP には、複合型に関して次の制限があります。

  • DataTable を使用してパラメーターに複合型を渡す場合は、複合型のすべてのフィールド (列) を DataTable に含める必要があります。

  • Microsoft BizTalk Adapter for mySAP Business Suite では 、DbNull はサポートされていません。 DbNull をパラメーターの値として設定することはできません。