D365/AX7:Create Ledger Dimension From Main Account & Financial Dimension Values

Requirement

Create Ledger Dimension From Main Account & Financial Dimension Values.

Sample Code

_mainAccountNum = '100920' // your main account or ledger account from a valid chart                                                           //of accounts

_conValue = ['001', 'ABC', 0]     //values of financial dimension added to a container.

static int64 getLedgerDim(MainAccountNum _mainAccountNum, container _conValue)

{

container   _conData;

int hierarchyCount;

int hierarchyIdx;

RecId                   dimAttId_MainAccount;

LedgerRecId            ledgerRecId;

MainAccount mainAccount;

RefRecId recordvalue;

DimensionAttribute     dimensionAttribute;

DimensionAttributeValue dimensionAttributeValue;

DimensionSetSegmentName DimensionSet;

DimensionStorage         dimStorage;

LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();

DimensionAttributeValueContract  ValueContract;

List   valueContracts = new List(Types::Class);

dimensionAttributeValueCombination dimensionAttributeValueCombination;

_conData = _conValue;//["033", "abc", 0];

mainAccount = MainAccount::findByMainAccountId(_mainAccountNum);

recordvalue = DimensionHierarchy::getAccountStructure(mainAccount.RecId,Ledger::current());

hierarchyCount = DimensionHierarchy::getLevelCount(recordvalue);

DimensionSet = DimensionHierarchyLevel::getDimensionHierarchyLevelNames(recordvalue);

for(hierarchyIdx = 1;hierarchyIdx<=hierarchyCount;hierarchyIdx++)

{

if(hierarchyIdx == 1)

continue;




dimensionAttribute = DimensionAttribute::findByLocalizedName(DimensionSet[hierarchyIdx],false,"en-in");




if(dimensionAttribute)

{

dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,conPeek(_conData,hierarchyIdx));

if(dimensionAttributeValue)

{

ValueContract = new DimensionAttributeValueContract();

ValueContract.parmName(dimensionAttribute.Name) ;

ValueContract.parmValue(dimensionAttributeValue.CachedDisplayValue);

valueContracts.addEnd(ValueContract);

}

}

}

LedgerAccountContract.parmMainAccount(_mainAccountNum);

LedgerAccountContract.parmValues(valueContracts);

dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);

dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());

ledgerRecId = dimensionAttributeValueCombination.RecId;

return ledgerRecId;

}

Leave a Reply