SAP Document sales_order

Sales Order

The customer's commitment to buy โ€” may commit (reserve) stock, but posts no G/L entry. The hub of the sales chain.

A Sales Order is the customer’s confirmed commitment to buy. It records what the customer has agreed to purchase, at what price, for delivery when. It sits at the centre of the order-to-cash chain: everything downstream โ€” deliveries and invoices โ€” is typically based on it, and the order is the document that ties the whole sale together.

Purpose

A sales order is created when a customer confirms an order โ€” whether taken over the phone, received by email, or copied from an accepted quotation. It captures the commitment: the items, the agreed quantities and prices, the ship-to address, and the requested delivery date. Unlike a quotation, an order is a promise to deliver, and it can influence stock planning immediately.

An order can be delivered in parts โ€” one order may spawn several deliveries as goods become available โ€” and it stays open until fully delivered and invoiced. Once a delivery is based on it, the order can no longer be deleted; it must be cancelled instead, preserving the audit trail.

Position in the document chain

The order copies forward from a quotation and is the base for deliveries and invoices.

flowchart TD
    SQ[Sales Quotation] -->|confirmed| SO[Sales Order]
    SO -->|goods ship| DEL[Delivery]
    SO -->|billing| ARI[A/R Invoice]
    DEL -->|triggers| ARI

    style SQ fill:#dbeafe,stroke:#3b82f6
    style SO fill:#dbeafe,stroke:#3b82f6,stroke-width:3px
    style DEL fill:#dcfce7,stroke:#16a34a
    style ARI fill:#fef9c3,stroke:#ca8a04
  • Copies from: a Sales Quotation (optional), or created directly.
  • Becomes: a Delivery (when goods ship) and/or an A/R Invoice (when billed). Each downstream line records the order in its BaseType/BaseEntry/BaseLine fields, so the chain can be traced Order โ†’ Delivery โ†’ Invoice.

Key fields

The order is a Document entity keyed by DocEntry, with DocObjectCode = oOrders.

Header

FieldMeaning
DocEntryInternal primary key.
DocNumUser-visible order number.
CardCodeCustomer business-partner code.
DocDateOrder (posting) date.
DocDueDateRequested delivery date.
DocCurrencyOrder currency.
DocTotalOrder total in document currency.
ShipToCodeShip-to address code.
SalesPersonCodeSales employee.
DocumentStatusbost_Open until fully delivered and invoiced, then bost_Close.
CommentsFree-text remarks.

Lines (DocumentLines)

FieldMeaning
LineNum0-based line index.
ItemCodeItem master code.
QuantityOrdered quantity.
PriceUnit price before VAT.
LineTotalQuantity ร— Price.
WarehouseCodeWarehouse from which stock will be committed / shipped.
ShipDateRequired delivery date for the line.
VatGroupTax code.
BaseType/BaseEntry/BaseLineLink back to a quotation line, if copied.

Stock and G/L effect

No accounting entry. A sales order posts nothing to the general ledger โ€” the customer has committed but nothing has shipped or been billed yet.

Stock may be committed. Depending on configuration, an order reserves stock: the ordered quantity shows as committed in inventory reports (it reduces available quantity) but the on-hand quantity is unchanged โ€” no goods have physically moved. This reservation is a planning signal, not a stock transaction. The actual reduction of on-hand stock happens at the Delivery stage.

Service Layer entity

PropertyValue
SL entityOrders
Object codeoOrders (17)
Norma path/b1s/v1/Orders

How to create it in Norma

Use the create_sales_order tool. It needs:

  • card_code โ€” the customer’s code (e.g. C001).
  • lines โ€” each an item_code + quantity.

Prices come from the item master; the sales-order tool does not take an authoritative per-line price (unlike the quotation, invoice, and credit-memo tools). Use it when the customer wants to order, buy, or purchase items โ€” not for quotes, deliveries, or invoices.

As with every Norma write, the order is held for human review. The tool assembles the order, the review gate presents the customer, lines, and total, and only on approval does the connector POST it to /b1s/v1/Orders. No approval, no write.