Cost Shares
This feature extends the standard BOM Cost Shares page so you can calculate the cost of a manufactured item for a specific location and as at a specific date.
Standard Business Central always calculates BOM Cost Shares from the Item Card, using whatever production BOM and routing versions are effective on the work date. That is fine for a single-site business, but it cannot answer two common questions:
- What does this item cost to make at this site, where the production BOM or routing differs?
- What did, or will, this item cost using the BOM and routing versions effective on a particular date?
This feature answers both.
The figures produced with a location or an effective date will not reconcile to Calculate Standard Cost. This is intentional and unavoidable. See Relationship to standard costing before using these figures for valuation.
Opening the page
| From | Behaviour |
|---|---|
| Item Card → Cost Shares | The standard action. Opens for that item with Location Code blank, and behaves exactly as standard BOM Cost Shares until you enter a location or change the date. |
| Stockkeeping Unit Card → Cost Shares | Opens for the item, with Location Code and Variant Code already filled in from the stockkeeping unit, and calculates immediately. |
| Stockkeeping Unit List → Cost Shares | As above, for the selected line. |
The page can also still be reached from the Assembly BOM page, as in standard.
Fields
| Field | Description |
|---|---|
| Item Filter | Standard field. Accepts one item or a filter expression covering several. |
| Location Code | The location to calculate for. A single location, not a filter. Leave blank to calculate from the Item Card exactly as standard does. |
| Variant Code | The item variant. Only shown when the item in the filter actually has variants, because the variant forms part of the stockkeeping unit key. |
| Effective Date | The date used to select production BOM and routing versions. Defaults to the work date. |
Changing Location Code, Variant Code or Effective Date clears the list. Choose Recalculate to populate it again. This is deliberate: a multi-level cost roll-up is expensive, and clearing the result guarantees the grid can never show figures that disagree with the inputs above it.
How the location is applied
For every manufactured item in the structure — not just the top one — the calculation looks for a stockkeeping unit matching the Location Code, Item No. and Variant Code, and takes three things from it:
| Value | Rule |
|---|---|
| Production BOM No. | Use the stockkeeping unit's value. If blank, use the item's. |
| Routing No. | Use the stockkeeping unit's value. If blank, use the item's. |
| Lot Size | Use the stockkeeping unit's value. If zero, use the item's. If that is also zero, use 1. |
Each value falls back independently. A stockkeeping unit that specifies a routing but no production BOM will use its own routing and the item's production BOM.
If no stockkeeping unit exists for a component at that location, the component simply uses its Item Card setup. This is expected and needs no action — a location only matters where a stockkeeping unit exists and specifies something different.
Scrap % is always taken from the item, never from the stockkeeping unit, which matches how Business Central's own standard cost calculation behaves. The Scrap % field on the stockkeeping unit is not used.
How the effective date is applied
The effective date selects the production BOM version and routing version to explode.
Business Central versions do not have an end date. A version is effective from its Starting Date onward, and remains effective until superseded by the next version's Starting Date. The calculation selects the version with the latest Starting Date on or before the effective date.
If no version is effective on that date, the header lines of the production BOM or routing are used. This is normal Business Central behaviour, not an error — many production BOMs have no version records at all and are maintained entirely on the header.
Only certified versions are considered. A version that is New, Under Development or Closed is never selected, regardless of its dates.
Production BOM lines also carry their own Starting Date and Ending Date, and these are applied against the effective date as well.
The same date is used at every level
Standard Business Central offsets each component's date backwards by its lead time as it walks down the structure, so a component three levels down is evaluated at an earlier date than the finished item. That is correct for scheduling, because components are needed before the parent is assembled.
This feature deliberately does not do this. It applies one date to the whole structure, because the question being answered is "what was the cost as at this date", not "when must each part arrive". Without this, a single effective date would silently evaluate different levels at different dates.
This is a deliberate divergence from standard Business Central behaviour.
The fact boxes
Two fact boxes sit beside the grid and answer what was this calculated from.
Each one shows the production BOM and the routing as a single value, so it stays compact:
| What you see | What it means |
|---|---|
PBOM-100 | The production BOM has no version effective on the effective date, so its header lines were used. |
PBOM-100 (V3 from 1/07/2027) | Version V3 was used. It is effective from 1 July 2027. |
Choose the value to open it. You get the version where one is effective, and the production BOM or routing itself where none is.
Both fact boxes show Item, BOM, Routing and Lot Size — the setup the figures were calculated from. Lot size matters because it is what setup cost is spread across: it comes from the stockkeeping unit where one specifies it, otherwise from the item, and falls back to 1.
On these rows the unit of measure follows in brackets — FG-100 - Widget Assembly (PCS) and PBOM-100 (V3 from 1/07/2027) (KG) — so you can see at a glance whether the production BOM is stated in the item's own unit. The production BOM unit is the version's where a version is effective, otherwise the header's. The list columns below leave the unit off to keep the fact box narrow.
Top-Level Item
Fixed on the first line of the structure — the item you are costing. It does not move as you scroll, so you always have a reference for what the figures belong to.
Current Item
The four rows at the top of this fact box describe the item the selected line belongs to. You do not have to be standing on an item line:
| Line you select | Item shown |
|---|---|
| A sub-assembly | The sub-assembly itself. |
| A purchased component | The item above it, whose production BOM lists the component. |
| A work centre or machine centre | The item above it, whose routing produced the operation. |
Below that is every production BOM and routing available to that item, so you can see the alternatives without recalculating.
The first row is the item card, which is the setup used wherever nothing else is specified. Below it is a row for each stockkeeping unit that resolves to a different production BOM or routing. A stockkeeping unit that specifies nothing, or that names the same production BOM and routing as the item card, produces an identical cost and so is not listed.
The Source column names where each row comes from — Item card, or the location code, or AUCKLAND - RED where the stockkeeping unit carries a variant. It is called Source rather than Location because the first row is not a location.
Because the two fields fall back independently, a stockkeeping unit that changes only the routing still appears — which is the more common case.
The row the displayed figures were calculated from is shown in bold, and the fact box opens on it. That row is the production BOM and routing the selected line was actually costed with.
The rows are a list of setups, not a list of locations. If no stockkeeping unit changes anything, you see a single row, however many locations the item is stocked at.
When the selected line belongs to the top item, this fact box and Top-Level Item describe the same item. That is expected.
Versions in both fact boxes are resolved using the Effective Date at the top of the page, so they always agree with the grid.
Traceability
Four columns show exactly what the calculation resolved for each line:
- Production BOM No. and Production BOM Version Code
- Routing No. and Routing Version Code
All four are hidden by default. Add them with Personalise when you need them.
A blank version code means the header lines were used.
Use these columns to verify a figure. If a cost looks wrong, these four values tell you whether the cause is the resolution or the underlying setup.
Relationship to standard costing
The figures on this page will not match Calculate Standard Cost once a location or a non-default date is used. There are three separate reasons, and none of them can be resolved by configuration.
Standard costing only applies the location at the top level. When you run Calculate Standard Cost from a stockkeeping unit, Business Central uses the stockkeeping unit's production BOM, routing and lot size for that item, and then costs every component from its Item Card. Component stockkeeping units are never consulted. Cost Shares applies the location at every level, which is the behaviour most people expect but is not what standard does.
Stockkeeping unit standard costs are never rolled up. Business Central writes Standard Cost to the stockkeeping unit but no calculation ever reads it back. It is a reporting value only. Cost Shares therefore calculates component costs live rather than reading stored stockkeeping unit figures, which also means it is never affected by a stockkeeping unit whose cost was last calculated long ago.
Costs are always current, even for a historical date. The effective date selects historical structure — which BOM version and routing version applied. It does not select historical rates. Item unit costs, work and machine centre direct unit costs, overhead rates and indirect cost percentages have no history in Business Central, so a historical calculation shows the historical structure valued at today's rates.
Use these figures for analysis and comparison, not for inventory valuation or financial reporting. Valuation must continue to come from Calculate Standard Cost.
Setup
Cost Shares by Location on the Advanced Production Setup page is enabled by default. It shows Location Code, Variant Code and Effective Date on BOM Cost Shares, and adds the Cost Shares actions to the stockkeeping unit pages. When disabled, BOM Cost Shares behaves exactly as it does in standard Business Central.
Leaving Location Code blank and Effective Date on the work date produces results identical to standard Business Central, so the feature has no effect on existing users until it is deliberately used.
Worked example
An item FG-100 is made at two sites. At AUCKLAND it uses the standard production BOM. At CHRISTCHURCH a stockkeeping unit specifies an alternative production BOM with a locally sourced component, and a larger lot size.
| Location Code | Effective Date | Result |
|---|---|---|
| (blank) | Work date | Item Card production BOM and routing. Identical to standard BOM Cost Shares. |
AUCKLAND | Work date | Stockkeeping unit exists but specifies no production BOM, so the Item Card setup is used. Lot size comes from the stockkeeping unit if set. |
CHRISTCHURCH | Work date | The alternative production BOM and the larger lot size are used, reducing the setup cost per unit. |
CHRISTCHURCH | 1 July 2027 | As above, but using the production BOM and routing versions that will be effective on 1 July 2027. Component costs are still today's. |