Disabling particular financial dimension based on record or on particular form quite tricky in AX 2012.
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
1. Create a new parm method in ‘DimensionDefaultingControllerBase’ class as shown below
1
2
3
4
| void parmEditableDimensionAttributeSetId(RefRecId _editableDimensionAttributeSetId = editableDimensionAttributeSetId) { editableDimensionAttributeSetId = _editableDimensionAttributeSetId; } |
2. Create a new method in ‘CustTable’ form as shown below
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| 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();
Calling newly created method before dimensionDefaultingController.pageActivated();
1
2
3
4
5
6
| 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.
Can see Business Unit financial dimension disabled, highlighted one.
No comments:
Post a Comment