We raised a support ticket, this is the answer from MS:
I ran a test in W1 and got the result of 350,594 which is then consistently presented in the BOM Cost Share page as well as in the Standard Cost worksheet. However, it doesn’t really matter in the sense that I’ve met this situation some years ago and had development team to investigate it.
To summarize the conclusions of that investigation, the BOM Cost Shares report calculations of cost amounts and quantities are separated from each other. The algorithm first traverses the BOM structure and fills a buffer table with quantities, then rolls up cost amounts. Quantities placed into the table in the first step, are rounded, and these rounded values are further used in cost calculation. To achieve the expected result, the rounding needs to be removed from the first part of the process and unrounded values stored in the buffer table. However, then there are discrepancies within a line.
In the analysis of moving the rounding and store unrounded values in the BOM buffer table and its consequences to the line calculation as mentioned, the task was growing extensively as the table is in the core of availability calculation as well. Therefore, it was established that this issue is outside the scope of a hotfix and needs to be further investigated. If it will be changed, it can be released in relation to a new major release.
As of today, it has not been prioritized to pursue such a change.
I therefore encourage you to raise a new product suggestion, describing your scenario, at the Ideas site to make current functionality and improvement request visible to others. They can vote for it and as votes increase the Product team will use this information for planning and prioritization of improving this functionality in upcoming releases.
For your information, the established scenario in previous investigation was as follows:
- Items. Create the following new Items:
- Item No.=50000, Description=Product A, Base Unit of Measure=PCS, Item Category Code=MISC, Replenishment System=Prod. Order.
Set up a UOM conversion with 1 BOX=585.8 PCS,
- Item No.=50001, Description=Component 1, Base Unit of Measure=PCS, Item Category Code=MISC, Costing Method = FIFO, Unit Cost = FIFO, Unit Cost = 31,23, Rounding Precision=0.00001,
- Item No.=50002, Description=Product B, Base Unit of Measure=PCS, Rounding Precision=0.00001, , Item Category Code=MISC, Replenishment System=Prod. Order.
- Item No. 50002-2, , Description=Component 2, Base Unit of Measure=PCS, Item Category Code=MISC, Costing Method = FIFO, Unit Cost = FIFO, Unit Cost = 11,00 Rounding Precision=0.00001,
- Create a new Prod. BOMs, as follows:
- No.=50002, Description=Prod. BOM, UOM Code=PCS.
Add 1 lines, as follows, then set Status=Certified:
ii) Type=Item, No.=50002-2, Quantity Per=579.9, UOM=PCS.
- No.=50000, Description=Prod. BOM, UOM Code=BOX. Add lines, as follows, then set Status=Certified:
i) Type=Item, No.=50001, Quantity Per=5.9, UOM=PCS, and
ii) Type=Production BOM, No.=50002, Quantity Per=7.235, UOM=PCS,
- Items.
- Edit Item No.=50000 and set Production BOM No.=50000.
- Edit Item No.=50002 and set Production BOM No.=50002.
- Edit Item 500002
- Run Navigate – Production – Calculate Standard Cost – All levels
Result = 6378,90
- Run Standard Cost worksheet
Run Function – Roll up Standard Cost: Item 50000
Result: New Standard cost = 79,09798
- Open Item card 50000
Run Navigate – Cost Shares in the Assembly/Production section
Result: Rolled Up Material Cost = 79,09792 (there is only material in this setup)
ACTUAL RESULT:
Cost Shares - Rolled Up Material Cost = 79,09792
EXPECTED RESULT:
Cost Shares - Rolled Up Material Cost = 79,09798
Comments to numbers:
In the repro, Qty. per Top Item for the “Component 1” item is 5.9 / 585.8 which is rounded to 5 decimal places as 0.01007. Cost amount, therefore, is 0.01007 * 31.23 = 0,314486, while unrounded amount should be 0,314539.
To remove rounding from the first part of the process and store unrounded values in the buffer table we’ll have discrepancies within a line. Total amount in this case would be calculated exactly as expected, but now if we multiply “Qty. per Parent” by the unit cost, we won’t have the material cost for the same line: 0.01007 * 31.23009 = 0.31449, while the report shows 0.31454.
So finally it boils down to a well-known problem — precision of the product is lower than the precision of its multipliers. We cannot have quantity, unit cost, and rolled-up cost, all rounded to 5 decimal places and make the results match up to the last digit.
---------------------------------------------------------------------