Starting from Dynamics NAV 2013, dimension’s structure has changed a lot. Since then, a lot of developers struggle to insert or update dimensions pragmatically.
I will not bother you with what was already explained a hundred times in other blogs on how to calculate Dimension Set ID. Better, I will share with you a simple codeunit “SpecDimensionManagement” that will save you time whenever you will need to update dimensions (by update I mean Create, Update, Delete).
In order to use my codeunit, I invite you respect the following example:
WITH SpecDimensionManagement DO BEGIN
// Get Current Dimension Set ID or init a new one
INIT(MyRecord);
// Update my dimensions values
UPDATE(‘DIM1’, ‘VALUE1’);
UPDATE(‘DIM2’, ‘VALUE2’);
UPDATE(‘DIM3’, ‘VALUE3’);
DELETE(‘DIM4’);
DELETE(‘DIM5’);
DELETE(‘DIM6’);
// Calculate my new Dimension Set ID
MyRecord.”Dimension Set ID” := GetDimSetID;
// Get new values if needed
GetCurrDimValues(DimCode, DimValueCode, MyRecord.”Dimension Set ID”);
END;
I put some comments to explain what the functions do.
In the fob, you’ll find codeunit 92600 that handle the calculation and codeunit 92601 where I create some examples for test.
Feel free to contact me if you need more details / informations. Share your ideas and feedback in comment section 🙂
P.S: the fob is from a NAV 2015 FR (Build 49000) database. I test it on NAV 2017 and 2016 also.
This blog is available also on Microsoft Dynamics NAV Community