Disabling particular financial dimension based
on record or on particular form quite tricky in AX 2012 compared to AX 2009.
Here is an example to achieve disabling Business unit
financial dimension on Customers form in AX 2012.
Process to disable Business Unit financial dimension on
Customers form.
1. Create
a new parm method in ‘DimensionDefaultingControllerBase’ class as shown below
void parmEditableDimensionAttributeSetId(RefRecId
_editableDimensionAttributeSetId =
editableDimensionAttributeSetId)
{
editableDimensionAttributeSetId = _editableDimensionAttributeSetId;
}
2. Create
a new method in ‘CustTable’ form as shown below
private void
setDimensionAttributeSetStorage()
{
DimensionAttribute dimAttr;
DimensionAttributeSetItem
dimAttrSetItem;
DimensionEnumeration
dimensionSetId =
DimensionCache::getDimensionAttributeSetForLedger();
DimensionAttributeSetStorage
dimensionAttributeSetStorage;
;
dimensionAttributeSetStorage
= new
DimensionAttributeSetStorage();
while select
* from dimAttr
order by
Name
where dimAttr.Type !=
DimensionAttributeType::MainAccount
join RecId from
dimAttrSetItem
where dimAttrSetItem.DimensionAttribute ==
dimAttr.RecId &&
dimAttrSetItem.DimensionAttributeSet == dimensionSetId
{
if (dimAttr.Name != 'BusinessUnit')
// Except BusinessUnit rest should enable
dimensionAttributeSetStorage.addItem(dimAttr.RecId,
dimAttr.HashKey,NoYes::Yes);
}
dimensionDefaultingController.parmEditableDimensionAttributeSetId(dimensionAttributeSetStorage.save());
}
3. Add
below highlighted code in ‘init’ method of ‘CustTable’ form as shown below
Calling newly created method
before dimensionDefaultingController.pageActivated();
dimensionDefaultingController =
DimensionDefaultingController::constructInTabWithValues(true, true,
true, 0,
this, tabFinancialDimensions, "@SYS138487");
dimensionDefaultingController.parmAttributeValueSetDataSource(custTable_ds,
fieldStr(CustTable,
DefaultDimension));
// Added by Shankar on 25/11/2013 DisableFinDimensions -
Begin
this.setDimensionAttributeSetStorage();
// Added by Shankar on 25/11/2013 DisableFinDimensions -
End
dimensionDefaultingController.pageActivated();
4. Now
open Customers form & check financial dimensions tab it shows as below.
Can see Business Unit financial dimension disabled,
highlighted one.
Hope this topic would be helpful...Enjoy...