1. Build default dimension
public static RecId GetDefaultDimension(Map _dimNameValueMap)
{
MapEnumerator mapEnum;
//Map dimNameValueMap = new Map(Types::String, Types::String);
RecId defaultDimension;
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionAttributeValueSetStorage dimAttributeValueSetStorage = new DimensionAttributeValueSetStorage();
mapEnum = _dimNameValueMap.getEnumerator();
while(mapEnum.moveNext())
{
str dimName, dimValue;
dimName = mapEnum.currentKey();
dimValue = mapEnum.currentValue();
// find and validate the dimension name.
dimAttribute = DimensionAttribute::findByName(dimName);
if (dimAttribute.RecId == 0)
{
error(strFmt('Dimension {0} doesn\'t exist.', dimName));
}
// find the dimension attribute value and append it to storage.
if (dimValue)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute, dimValue, false, true);
dimAttributeValueSetStorage.addItem(dimAttributeValue);
}
else
{
error(strFmt('Dimension {0} doesn\'t have value.', dimName));
}
}
defaultDimension = dimAttributeValueSetStorage.save();
return defaultDimension;
}
2. Build ledger dimension with main account and default dimension
public static RecId GetLedgerDimension(MainAccountNum _mainAccountId, RecId _defaultDimension)
{
MainAccount mainaccount = MainAccount::findByMainAccountId(_mainAccountId);
RecId ledgerddimension;
LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountId(_mainAccountId);
ledgerddimension = LedgerDimensionFacade::serviceCreateLedgerDimension(LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountId(_mainAccountId), _defaultDimension);
return ledgerddimension;
}
3. Get display value of a specific dimension name from ledger dimension
public staic str GetDisplayValue(RecId _ledgerDimension, str _dimensionName)
{
DimensionAttributeLevelValueView dimAttributeLevelValueView;
DimensionAttribute dimAttribute = DimensionAttribute::findByName(_dimensionName);
select DisplayValue from dimAttributeLevelValueView where dimAttributeLevelValueView.ValueCombinationRecId == _ledgerDimension && dimAttributeLevelValueView.DimensionAttribute == dimAttribute.RecId;
return dimAttributeLevelValueView.DisplayValue;
}