SAP Document goods_issue

Goods Issue

A manual stock decrease with no sales document behind it โ€” inventory falls and posts to an expense account, against a warehouse and never a business partner.

A Goods Issue records stock leaving a warehouse when there is no sales order, no delivery, and no customer behind the movement. It is the mirror image of a Goods Receipt: where the receipt brings stock in against an offset account, the issue takes stock out and charges it to an expense account.

In the Service Layer this is the GoodsIssues service, object code oInventoryGenExit (60) โ€” internally an Inventory General Exit, an exit of goods from stock. It is created at /b1s/v1/InventoryGenExits.

Like the Goods Receipt, a Goods Issue has no CardCode and no CardName. The stock is not going to a customer โ€” it is being consumed, scrapped, or written down. The counterparty is a general ledger expense account, chosen against a warehouse and an item, never a trading partner.

When it is used

A Goods Issue is the right document whenever stock must decrease for a reason that is not a sale:

  • Scrap and damage โ€” units are broken, expired, or spoiled and must come off the books at cost.
  • Internal consumption โ€” stock used by the company itself (office supplies, workshop parts, materials consumed in a task) rather than sold.
  • Shrinkage write-down โ€” a count shows fewer units than the system holds, and the shortfall is written off.
  • Samples and giveaways issued to prospects or staff with no invoice.
  • Disposal of obsolete inventory that will never sell.

If the goods are actually being shipped to a customer, the correct document is a Delivery (oDeliveryNotes, 15), which carries the CardCode and posts cost of goods sold against that sale. The Goods Issue exists for every stock-out that is not a customer shipment.

Key fields

The document is a small header over one or more DocumentLines. Each line names its own warehouse and quantity, so one Goods Issue can remove several items from several warehouses.

FieldTypeNotes
DocEntryEdm.Int32Internal primary key (system-assigned)
DocNumEdm.Int32User-visible document number
DocObjectCodeSAPB1.BoObjectTypesAlways oInventoryGenExit (60)
DocDateEdm.StringPosting date โ€” YYYYMMDD string
Reference2Edm.StringFree reference to the originating event
CommentsEdm.StringFree-text reason for the issue
JournalMemoEdm.StringMemo written onto the generated journal entry
SeriesEdm.Int32Numbering series

Notably absent: CardCode, CardName, ShipToCode โ€” no business partner.

Line (DocumentLines)

FieldTypeNotes
LineNumEdm.Int32Line index (0-based)
ItemCodeEdm.StringItem being removed from stock
ItemDescriptionEdm.StringItem name
QuantityEdm.DoubleUnits issued โ€” the amount stock falls by
WarehouseCodeEdm.StringWhich warehouse the stock leaves โ€” required
UnitPriceEdm.DoubleUnit cost used to value the issue (usually item cost)
LineTotalEdm.DoubleQuantity ร— unit cost โ€” the value expensed
AccountCodeEdm.StringG/L expense account to debit (overrides the default)
CostingCodeEdm.StringCost centre / profit-centre dimension
ProjectCodeEdm.StringProject dimension

The AccountCode here is the meaningful choice: it names which expense the loss lands on โ€” scrap, consumption, write-off โ€” so the P&L reflects the real reason stock left.

GL and stock effect

Stock: the on-hand quantity of each line’s ItemCode in its WarehouseCode decreases by Quantity. This is an unconditional stock-out movement.

Accounting (perpetual inventory): the issue posts a journal entry that debits an expense and credits inventory:

DR  Expense / Write-off account   (value of goods issued)
CR      Inventory                          (same value)

The credit lowers the inventory balance-sheet account by the cost of the goods removed; the debit charges that cost to the expense account chosen by the item group’s G/L determination or the line’s AccountCode override. The value is the item’s carrying cost under its valuation method (moving average, standard, or FIFO), not a sale price โ€” no revenue and no customer are involved.

Under non-perpetual inventory no journal entry is generated; only the quantity falls, and finance values the stock reduction periodically.

Service Layer

PropertyValue
Service (entity)GoodsIssues
Object codeoInventoryGenExit (60)
Create pathPOST /b1s/v1/InventoryGenExits
Read oneGET /b1s/v1/InventoryGenExits(<DocEntry>)
Sub-collectionDocumentLines (carries ItemCode, Quantity, WarehouseCode)

A minimal create payload names the reason, the item, the quantity, and the warehouse โ€” no partner:

POST /b1s/v1/InventoryGenExits
{
  "Comments": "Scrap โ€” water-damaged stock, warehouse 01",
  "DocumentLines": [
    { "ItemCode": "A00001", "Quantity": 3, "WarehouseCode": "01", "AccountCode": "610000" }
  ]
}

Norma’s connector and mock use the /b1s/v1/ paths shown here; a live SAP B1 on Feature Pack 2405 or later exposes the same entity under /b1s/v2/ with identical shape.

The response returns the assigned DocEntry and DocNum, and โ€” under perpetual inventory โ€” a TransNum pointing at the journal entry the issue created.