Item Fields
The Items master fields in SAP B1 โ ItemCode, ItemType, the sales/purchase/inventory flags, per-warehouse stock (ItemWarehouseInfoCollection), prices, and valuation method.
An Item is any product, raw material, service, or asset that the company buys,
sells, or stores. With the Business Partner (see the Business Partner Fields
reference), it is one of the two pillars of master data; a document line’s
ItemCode points here.
In the Service Layer the item master is the Items entity (object code oItems,
4). The fields below determine what the item is, whether it can be sold, bought, or
stocked, where it lives, what it costs, and how its inventory value is calculated.
Identity and type
| Field | Type | Meaning | Required? |
|---|---|---|---|
ItemCode | Edm.String | Unique identifier, max 20 chars. The primary key used everywhere as ItemCode. | Yes |
ItemName | Edm.String | Display name / description. | Yes |
ForeignName | Edm.String | Name in a foreign/secondary language. | No |
ItemType | SAPB1.ItemTypeEnum | The kind of item โ see the type table below. | No (defaults itItems) |
ItemsGroupCode | Edm.Int32 | Item group (ItemGroups) driving G/L account determination. | No |
BarCode | Edm.String | Item barcode. | No |
Item types
ItemType decides how the item behaves. The confusing part is that “is it
stocked?” is a separate flag (InventoryItem) from the type โ a physical
product is itItems with InventoryItem = tYES.
| Scenario | ItemType | Notes |
|---|---|---|
| Physical product you buy and sell | itItems | Set InventoryItem = tYES to stock it. |
| Labour / consulting time | itLabor | No stock. |
| Travel cost billed to a customer | itTravel | No stock. |
| Machine / equipment you own | itFixedAssets | Depreciated asset, not traded stock. |
The three role flags โ sales / purchase / inventory
Three independent yes/no flags decide what the item can do. They are the fields
most often misconfigured (e.g. InventoryItem = tNO on something that should be
stocked).
| Field | Type | Meaning | Required? |
|---|---|---|---|
SalesItem | SAPB1.BoYesNoEnum | Can it appear on sales documents? (tYES/tNO) | No |
PurchaseItem | SAPB1.BoYesNoEnum | Can it appear on purchasing documents? | No |
InventoryItem | SAPB1.BoYesNoEnum | Is it stocked (tracked in inventory, with a stock value)? | No |
An item can be any combination โ e.g. a resale product is sales + purchase + inventory; a consulting service is sales only, no inventory.
Warehouses and stock
An item lives in one or more warehouses. There is a default warehouse for new document lines, and a per-warehouse breakdown of stock.
| Field | Type | Meaning | Required? |
|---|---|---|---|
DefaultWarehouse | Edm.String | Warehouse pre-filled on document lines for this item. | No |
ManageStockByWarehouse | SAPB1.BoYesNoEnum | Whether stock is tracked per warehouse. | No |
QuantityOnStock | Edm.Double | Total current stock across all warehouses (read-only). | Read-only |
ItemWarehouseInfoCollection | collection | Per-warehouse stock breakdown โ see below. | No |
ItemWarehouseInfoCollection โ per-warehouse stock
Each entry gives the stock position in one warehouse. These are the read-only numbers behind an “is it available?” question.
| Field (per entry) | Type | Meaning |
|---|---|---|
WarehouseCode | Edm.String | The warehouse this row describes. |
InStock | Edm.Double | Quantity physically in stock in this warehouse. |
Committed | Edm.Double | Quantity committed to open sales/production documents. |
Ordered | Edm.Double | Quantity on open purchase orders inbound to this warehouse. |
MinimalStock | Edm.Double | Reorder / minimum level. |
MaximalStock | Edm.Double | Maximum stock level. |
Available-to-promise is derived from these: roughly InStock โ Committed + Ordered.
Tracking
| Field | Type | Meaning | Required? |
|---|---|---|---|
ManageSerialNumbers | SAPB1.BoYesNoEnum | Track each unit by serial number. | No |
ManageBatchNumbers | SAPB1.BoYesNoEnum | Track by batch / lot. | No |
Enabling serial/batch tracking mid-life is a known trap: historical stock has no serial/batch and blocks new transactions until reconciled.
Prices
An item has a price per price list; the price that lands on a document line is resolved from the BP’s default price list (plus any special pricing).
| Field | Type | Meaning | Required? |
|---|---|---|---|
ItemPrices | collection | Price per price list โ see below. | No |
PurchaseUnit | Edm.String | Unit of measure for purchasing. | No |
SalesUnit | Edm.String | Unit of measure for sales. | No |
ItemPrices โ price per list
| Field (per entry) | Type | Meaning |
|---|---|---|
PriceList | Edm.Int32 | Which price list this price belongs to. |
Price | Edm.Double | The unit price on that list. |
Currency | Edm.String | Currency of the price. |
A missing price for the price list a BP uses is a common cause of a zero-priced or rejected document line.
Valuation method
How the item’s inventory value (and cost of goods sold) is calculated. Set once and rarely changed.
| Field | Type | Meaning | Required? |
|---|---|---|---|
CostAccountingMethod | SAPB1.ItemPriceCostingType | Valuation method โ see values below. | No |
AvgStdPrice | Edm.Double | The moving-average / standard cost (read-only, method-dependent). | Read-only |
Common CostAccountingMethod values:
| Value | Meaning |
|---|---|
bomMovingAverage | Moving average cost โ recalculated on each receipt. |
bomStandard | Standard cost โ a fixed planned cost, variances posted separately. |
bomFIFO | First-in-first-out โ value drawn from oldest layers first. |
bomSerialAndBatch | Cost tracked per serial/batch. |
Common data problems
InventoryItem = tNOon something that should be stocked (no stock tracking).- No
DefaultWarehouseset. - Missing price for the price list the BP uses.
- Wrong sales/purchase unit of measure (buys in boxes, sells in units โ not configured).
- Batch/serial tracking enabled after transactions already exist.
Discovering user-defined fields
Items commonly carry UDFs, prefixed U_. The item table is OITM; list its UDFs
with:
GET /b1s/v1/UserFieldsMD?$filter=TableName eq 'OITM'