I am trying to to find create a dimension as given in below blog for General journal Offset dimension.
https://community.dynamics.com/ax/f/microsoft-dynamics-ax-forum/67891/create-a-new-record-in-dimensionattributevaluecombination-by-ax2012-code/191381
But for some records I am getting error as "Unable to return DimensionAttributeValue record for Dimension with value 20 as no record exists in table through view ."
Below is the code I am using to create it, has anyone ever faced this issue.
LedgerAccountContract ledgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract ValueContract;
List ListValueContract = new List(Types::Class);
dimensionAttributeValueCombination dimensionAttributeValueCombination;
DimensionStorage dimStorage;
DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage ;
DimensionAttribute dimensionAttribute;
DimensionValue dimensionValue;
;
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_defaultDimension);
dimensionAttribute = dimensionAttribute::findbyname('BusinessUnit');
dimensionValue = dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
if (dimensionValue)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('BusinessUnit') ;
ValueContract.parmValue(dimensionValue);
ListValueContract.addEnd(ValueContract);
}
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_dimensionAttributeValueCombination.RecId);
dimensionAttribute = dimensionAttribute::findbyname('CostCenter');
dimensionValue = dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
if (dimensionValue)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('CostCentre') ;
ValueContract.parmValue(dimensionValue);
ListValueContract.addEnd(ValueContract);
}
dimensionAttributeValueSetStorage = dimensionAttributeValueSetStorage::find(_dimensionAttributeValueCombination.RecId);
dimensionAttribute = dimensionAttribute::findbyname('Department');
dimensionValue = dimensionAttributeValueSetStorage.getDisplayValueByDimensionAttribute(dimensionAttribute.recId);
if (dimensionValue)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Department') ;
ValueContract.parmValue(dimensionValue);
ListValueContract.addEnd(ValueContract);
}
ledgerAccountContract.parmMainAccount(MainAccount::find(_dimensionAttributeValueCombination.MainAccount).MainAccountId);
ledgerAccountContract.parmValues(ListValueContract);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(ledgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
return dimensionAttributeValueCombination.RecId;
}