SAP transaction codeObjectVL09ModuleSD_O2C

VL09 — Cancel Goods Issue for Outbound Delivery

VL09 reverses the goods issue (PGI) posted against one or more outbound deliveries. It selects deliveries by shipping point, movement date or delivery number, then lets the user cancel the material document created at PGI, resetting the delivery's goods movement status so quantities, batches or storage locations can be corrected before billing.

This page covers VL09, the transaction used to cancel a posted goods issue on an outbound delivery. It focuses on where the cancellation fails - billing already created, stock already consumed, period closed - and how to trace the reversal through the delivery, material document and document flow tables.

Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,107 words

What it does

VL09 reverses the material document that PGI created against an outbound delivery. It is a selection and mass-cancellation tool: enter shipping point, plant, delivery number range or goods movement date, execute, and the system lists every delivery matching the goods movement status filter. Selecting a line and triggering the cancellation posts a reversing movement type against the original material document, which puts the delivery's goods movement status back to not-yet-posted so it can be corrected and re-processed. The structural fact that causes most confusion: VL09 cancels the goods movement, not the delivery document and not the invoice. The delivery itself is untouched except for its status field, and if a billing document already references that delivery, the cancellation either fails outright or leaves the invoice pointing at a reversed movement.

When it is used

VL09 is reached for whenever a PGI has already posted but something about it was wrong - wrong quantity, wrong batch, wrong storage location, wrong plant, or the delivery needs to be pulled back into picking for correction. It sits between goods issue and billing in the outbound flow: used after VL02N confirmed PGI, before VF01 or VF04 creates the invoice. For a single delivery, the same cancel-goods-movement function is available directly inside VL02N, so consultants use that when they are already on the delivery screen. VL09 is preferred when the reversal has to cover many deliveries at once, selected by shipping point or a date range, typically during a warehouse correction run or an end-of-day cleanup after a batch job posted PGI incorrectly.

How to use it

  • Open VL09 and enter selection criteria: shipping point, plant, delivery number range, goods movement date, or a combination
  • Execute and review the result list, which shows each delivery with its current goods movement status
  • Select the relevant line or lines (multiple selection is supported for mass reversal)
  • Trigger the cancel goods movement function; the system posts a reversing material document against the original
  • Check the return messages for each line - partial success across a multi-line selection is common and easy to miss
  • Confirm the delivery status has reset, then correct the delivery in VL02N and re-post PGI if required

Key fields

  • LIKP - outbound delivery header, holds the delivery number and shipping point used for VL09 selection
  • LIPS - delivery item, holds quantities and batch/storage location data affected by the reversal
  • VBUK - overall status record for the delivery, holds the goods movement status field checked before and after cancellation
  • MKPF and MSEG - material document header and item; the reversal creates a new pair linked back to the original by reference document number and movement type
  • VBFA - document flow, links the delivery to both the original material document and its reversal, and later to any billing document

How to prove it in the data

Start with VBUK filtered on the delivery number to read the goods movement status field; a reversed movement shows a different status value than a normal completed PGI. Cross-check VBFA for that delivery number, filtering on the subsequent document category for material documents - there should be two entries, the original movement and its reversal, tied together by matching reference numbers. Pull MSEG for those material document numbers and compare movement type against its paired reversal movement type to confirm the posting actually cancelled rather than merely being requested and rejected.

ECC vs S/4HANA

VL09 behaves the same on S/4HANA as on ECC; there has been no functional redesign of the cancellation logic. There is no dedicated Fiori app that replaces the mass-selection reversal capability of VL09 - delivery monitoring apps in Fiori surface status and allow navigation to the delivery, but the actual cancel-goods-movement action is still performed through this classic transaction or the equivalent function inside VL02N.

Common pitfalls

  • Billing already created: the invoice references the original material document. VL09 either blocks the cancellation or, if forced through configuration, leaves an invoice pointing at a reversed movement. Check VBFA for a billing document entry against the delivery before attempting cancellation; if one exists, cancel the invoice through VF11 first.
  • Stock already consumed downstream: if the received quantity was moved on, consumed, or transferred after PGI, the reversal fails for lack of stock at the original storage location or batch. Check current stock via the standard stock overview for that plant, storage location and batch before reversing.
  • Multi-line partial failure: selecting several deliveries in one run and cancelling as a batch can leave some lines successful and others rejected with no obvious visual difference in the list. Always read the message log line by line rather than trusting a single overall success message.
  • Period closed for the movement date: if the material management posting period has since closed, the reversal cannot post with the original date and needs to be posted with a current date, which then differs from the original goods issue date and can distort period-based reporting.
  • Valuation drift: because the reversal posts at current valuation logic, a moving average price change between the original PGI and the cancellation can produce a reversal value different from the original posting, which shows up as an unexplained variance in inventory valuation reports.
  • Selection criteria too narrow: filtering only by delivery number misses deliveries that were partially posted across multiple goods movement dates; widen the date range when a delivery expected in the list does not appear.

Whose problem this is

Functional SD or logistics execution territory, worked jointly with the warehouse team that owns the physical stock movement. Escalate to MM only when the block is a closed posting period or valuation configuration. A clean handover includes the delivery number, the material document number and movement type, the goods movement date attempted, and the exact system message returned on cancellation.

Related SAP objects

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

Source: ERPClimb — https://erpclimb.com/sap-tcodes/vl09ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.