Warning: Deprecated articles
You are using the old version of the knowledge base for ERPConnect.
Make sure to use the samples within the new HelpCenter for ERPConnect.

This sample shows how to change the batch values in SAP in an outbound delivery using the BAPI BAPI_OUTB_DELIVERY_CHANGE.

Call BAPI_OUTB_DELIVERY_CHANGE #

The following sample code changes the batch values in SAP in an outbound delivery:

using System;
using ERPConnect;

// Set your ERPConnect license
LIC.SetLic("xxxx");

using var connection = new R3Connection(
    host: "server.acme.org",
    systemNumber: 00,
    userName: "user",
    password: "passwd",
    language: "EN",
    client: "001")
{
    Protocol = ClientProtocol.NWRFC,
};

connection.Open();

try
{
 
    // Create a function object, fill parameters and execute
    RFCFunction f = connection.CreateFunction("BAPI_OUTB_DELIVERY_CHANGE");
      
    //Fill in values for HEADER_DATA SAP Import Structure
    RFCStructure fHeader = f.Exports["HEADER_DATA"].ToStructure();
    fHeader["DELIV_NUMB"] = "0080016236";
         
    f.Exports["DELIVERY"].ParamValue = "0080016236";
         
    // first Batch
    RFCTable fPosT = f.Tables["ITEM_DATA"];
    RFCStructure fPos = fPosT.AddRow();
    fPos["DELIV_NUMB"] = "0080016236";
    fPos["DELIV_ITEM"] = "000010";
    fPos["MATERIAL"] = "100-302";
    fPos["BATCH"] = "EIGEN_HALB";
    fPos["HIERARITEM"] = "10";
         
    fPos["USEHIERITM"] = "1";
 
    fPos["DLV_QTY"] = 1;
    fPos["DLV_QTY_IMUNIT"] = 1;
 
    fPos["FACT_UNIT_NOM"] = "1";
    fPos["FACT_UNIT_DENOM"] = "1";
 
    fPos["SALES_UNIT"] = "ST";
 
    //Second Batch
    fPos = fPosT.AddRow();
    fPos["DELIV_NUMB"] = "0080016236";
    fPos["DELIV_ITEM"] = "000010";
    fPos["MATERIAL"] = "100-302";
    fPos["BATCH"] = "FREMD_HALB";
 
    fPos["HIERARITEM"] = "10";
 
    fPos["USEHIERITM"] = "1";
    fPos["DLV_QTY"] = 2;
    fPos["DLV_QTY_IMUNIT"] = 2;
 
    fPos["FACT_UNIT_NOM"] = "1";
    fPos["FACT_UNIT_DENOM"] = "1";
 
    fPos["SALES_UNIT"] = "ST";
 
    //Fill in values for ITEM_CONTROL Table
    RFCTable fPosCtrlT = f.Tables["ITEM_CONTROL"];
    RFCStructure fPosCtrl = fPosCtrlT.AddRow();
 
    fPosCtrl["DELIV_NUMB"] = "0080016236";
    fPosCtrl["DELIV_ITEM"] = "000010";
 
    fPosCtrl["CHG_DELQTY"] = "X";
    // Execute function
    f.Execute();
 
    //Create commit function object
    RFCFunction funcCommit = r3Connection1.CreateFunction("BAPI_TRANSACTION_COMMIT");
    funcCommit.Exports["WAIT"].ParamValue = "X";
 
    // Execute commit function
    funcCommit.Execute();
}

catch (Exception e1)
{
    Console.WriteLine(e1.Message);
}

connection.Close();