I have been asked a few times to retrieve the description along with the value of a particular dimension in Dynamics AX. For example, in AX go to a sales order and select a sales line, below the lines grid expand the Line details fast tab and click on the Financial dimensions fast tab.
Often times in reports or forms, you want to see not just OU_241 but also the descriptive name of a particular dimension, in this case Projects. While this example is based on a sales order it applies to many different transaction types in AX.
To retrieve the descriptive name you can do the following:
- Find the DefaultDimension value saved on the line. On every transaction line I have seen there is a field called DefaultDimension. It stores the combination of dimension values saved on that line.
2. With the DefaultDimension field retrieve the DefaultDimensionView. You can use a query similar to this one:
1 2 3 4 5 6 7 8 9 10 |
DefaultDimensionView dimensionView; DimensionAttribute dimensionAttribute; select firstOnly dimensionView where dimensionView.DefaultDimension == _dimensionDefault //DefaultDimension saved on the SalesLine table join dimensionAttribute where dimensionView.Name == dimensionAttribute.Name && dimensionView.Name == _dimensionName; //Name of the dimension to retrieve. For the example above it would be Department |
3. With the DimensionView find the corresponding DimensionAttribute:
1 |
DimensionAttribute dimAttribute; dimAttribute = DimensionAttribute::find(dimensionView.DimensionAttributeId); |
4. With the DimensionAttribute retrieve the descriptive name from the DimensionFinancialTag table:
1 2 3 |
DimensionFinancialTag::findByFinancialTagCategoryAndValue(dimAttribute.financialTagCategory(), dimensionView.DisplayValue).Description; |
Hi Becky,
Thanks a lot for the information, My need is shown the dimension description at the report level and i have copied your code .
DefaultDimensionView dimensionView;
DimensionAttribute dimensionAttribute;
select firstOnly dimensionView
where dimensionView.DefaultDimension == 5637144584
join dimensionAttribute
where dimensionView.Name == dimensionAttribute.Name;
DimensionAttribute dimAttribute; dimAttribute = DimensionAttribute::find(dimensionView.DimensionAttributeId);
DimensionFinancialTag::findByFinancialTagCategoryAndValue(dimAttribute.financialTagCategory(), dimensionView.DisplayValue).Description;
Here is getting the error as Invalid Token, Please have a look if you are free any time
Hello Amar,
I spoke with the author and they are suggesting that you create a job and debug the code so you know specifically where it’s failing. That should help you identify the problem that needs to be fixed. If you find something more specific and are unsure how to solve it feel free to respond back here with the specifics.
Regards,
Taylor
Hi Taylor Valnes,
Thanks for the updates,
I got a solution , the mistake i was making in the last line of code is, i should initialize it to the str variable to get the output.. i am good.. thanks again for your help
DimensionFinancialTag::findByFinancialTagCategoryAndValue(dimAttribute.financialTagCategory(), dimensionView.DisplayValue).Description;
Hello Amar,
That’s good to hear! Thank you for your blog comment!
Regards,
Taylor