SAP BAPIObjectBAPI_OUTB_DELIVERY_CONFIRM_DECModuleSD_O2C

BAPI_OUTB_DELIVERY_CONFIRM_DEC — Outbound delivery confirmation BAPI, decimal quantities

BAPI_OUTB_DELIVERY_CONFIRM_DEC confirms picked, packed or goods-issued quantities against an existing outbound delivery. It is the decimal-quantity-capable version of the delivery confirmation interface, used mainly when a warehouse system, decentralized WMS, or custom shipping app confirms quantities back into SAP outside the normal VL02N or VL06G screen flow. It does not create the delivery and does not commit its own work.

Covers what BAPI_OUTB_DELIVERY_CONFIRM_DEC does to an existing outbound delivery, which parameters carry confirmed quantities and control flags, and why RETURN table handling and missing commits are the recurring causes of silent, non-persisted or duplicated confirmations. Includes the ownership split between the interface developer and the SD/logistics functional owner when a confirmation call goes wrong.

Published 16 Sept 2026· 1,001 words

What it does

BAPI_OUTB_DELIVERY_CONFIRM_DEC posts a confirmation against an outbound delivery that already exists in the system - picking quantity, packing status, or goods issue, depending on how the calling program populates its control fields. It mirrors the confirmation step normally triggered manually in VL02N (single delivery, goods issue tab) or in collective processing through VL06G/VL06P. It is used almost exclusively for integration scenarios: a decentralized warehouse management system, a third-party shipping execution platform, or an EWM landscape not wired through native document flow, sends back the quantities actually picked or shipped, and this BAPI writes that confirmation into the delivery. The 'DEC' suffix marks it as the decimal-enabled successor to an older confirmation interface whose quantity fields were too short for fractional or high-precision units of measure.

Important parameters

The interface separates delivery identification, header-level control, and item-level confirmation data. Only the parameters below are used with confidence; internal structure field names are described rather than named where uncertain.

  • DELIVERY - the outbound delivery number being confirmed, mandatory.
  • HEADER_DATA - header-level confirmation information such as overall confirmation status and posting date.
  • HEADER_CONTROL - flags that tell the BAPI what to do at header level, including whether to trigger goods issue as part of the call.
  • ITEM_DATA - table of delivery items with the confirmed quantity, unit of measure, and item number for each line being confirmed.
  • ITEM_CONTROL - per-item control flags, including partial confirmation and the specific confirmation step being reported.
  • RETURN - standard BAPI return table of type BAPIRET2, carrying one line per message generated during the call.

Commit behaviour

The BAPI follows the standard SAP pattern of separating business logic from database commit. It does not call COMMIT WORK internally. The calling program is responsible for invoking BAPI_TRANSACTION_COMMIT after checking RETURN for errors. If the caller skips this step, the confirmation appears to succeed inside the same LUW - RETURN can even come back clean - but nothing is written to the database once the session or RFC connection ends. This produces the classic symptom of an interface that logs success on every call but the delivery status in the system never changes, discovered only when someone compares the interface log against VL03N.

Return handling

RETURN is a table, not a flag, and an empty RETURN table is not proof of success - it can also mean the call did nothing because the delivery, item, or quantity combination did not match any confirmable line. The correct check loops through RETURN and treats any line with TYPE 'E' or 'A' as a hard failure that must block the subsequent commit; 'W' lines are warnings, often quantity tolerance or batch determination notices, that still allow a commit but should be logged; 'S' or 'I' lines confirm what actually happened. The recurring interface bug is checking only the first line of RETURN, or checking SY-SUBRC instead of RETURN, both of which miss errors buried further down the table. A second common bug is calling COMMIT WORK regardless of RETURN content, which persists a partially failed confirmation and leaves the delivery in an inconsistent state that is difficult to reverse cleanly afterward.

ECC vs S/4HANA

On S/4HANA, outbound delivery remains the same document type and this BAPI still works and is not formally deprecated. Where embedded or decentralized EWM is in use, however, the confirmation typically originates from EWM's own warehouse task completion and updates the delivery through standard document flow rather than through an external system calling this BAPI directly, so its use shrinks to non-EWM shipping integrations and legacy custom interfaces. The older, non-DEC version of this BAPI should be treated as obsolete on any current release; new builds should always target the DEC variant.

Common pitfalls

Most failures trace back to timing, unit conversion, or missing commit discipline rather than the BAPI itself.

  • Caller commits regardless of RETURN, persisting a confirmation that partially failed and leaving the delivery in a state that needs manual correction in VL02N.
  • Confirmation call arrives twice from the source system (retry after a timeout that actually succeeded), posting goods issue or picking confirmation twice against the same delivery item.
  • Delivery has already been goods-issued or deleted by the time the confirmation arrives, so the BAPI returns an error that the interface log records but no one monitors.
  • Unit of measure passed by the source system does not match the delivery item's base unit and no explicit conversion factor is maintained, so the confirmed quantity is silently wrong rather than rejected.
  • Batch or serial number data expected by the delivery item is not passed, causing the confirmation to fail with a message that looks unrelated to quantity at first read.

Whose problem this is

Functional (SD or logistics execution) owns the business rules behind confirmation - quantity tolerances, which confirmation step triggers goods issue, batch and serial requirements. Development owns the interface plumbing - commit timing, retry handling, RETURN parsing. When a confirmation is disputed, functional needs the delivery number, item, and confirmed quantity from the source system; development needs the RETURN table content and confirmation that BAPI_TRANSACTION_COMMIT was actually called.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-bapis/bapi-outb-delivery-confirm-decERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.