After some testing on this issue, I am concerned, and after some research I found this helpful solution on the Winsoft blog.
Modify this one line of code in the class BomCopyToProd… method copyTo
Original Line: toProdBOM.Dimension = toProdBOM.copyDimension(Dimensions::findDimension(prodTable,inventTable,toProdBOM.Dimension)); toProdBOM.Dimension = toProdBOM.copyDimension(inventTable.Dimension);
Replace with: toProdBOM.Dimension = toProdBOM.copyDimension(inventTable.Dimension);
Note: if the BOMline is a phantom, then when the prodbom is created the BOM line is not exploded… The exploded phantom occurs during estimation.. but AX is consistent. The exploded prod bom lines will also inherit financial dimensions from the production order item.
Therefore.. if you want the exploded phantom prodbom lines to also inherit the finanical dimensions of the actual items and not the production order financial dimensions… you need to make a similar change in class ProdUpdCostEstimation.. method createProdBom
// prodBOM.Dimension = prodBOM.copyDimension(Dimensions::findDimension(_prodTable,inventTable,prodBOM.Dimension));
// reh 4-7-12 when explode phantom want the financial dimensions to come from the bom item not the production order
prodBOM.Dimension = prodBOM.copyDimension(Dimensions::findDimension(inventTable,inventTable,prodBOM.Dimension));
Comment:
In later versions this line of code looks like:
toProdBOM.DefaultDimension = toProdBOM.mergeDimension(prodTable.DefaultDimension, inventTable.DefaultDimension);
It means that for every dimension, it takes current dimension value from prodBOM (if present), then dimension value from prodTable, then dimension value from InventTable. It also does not seem like a good order of things (I would start from InventTable indeed), but it is somewhat more logical than the code in the example above.
If you try to implement this change, keep in mind that dimension in prodBOM can be initialized from several places, so it is better to use XRef to find these places. (In some case they also use merge approach).
( as an aside; AX2012 has some confused logic in the use of financial dimensions - e.g. what is the logic behind the fact that purchase posting uses not the current dimension values, but the original dimension values, which were present on purchase line creation...)