this is not a question but may be an answer.
several questions i had this forum have answered me. so i just want to share my contribution.
<-------
Create a new record in dimensionAttributeValueCombination, by AX2012 code.
in ax2012 journal voucher lines, when you key in Ledger account+dimensions information, system will create a record in table dimensionAttributeValueCombination.
this is how i do it in ax2012 coding. the container _c contains the information LedgerAccount and dimensions.
it worked for me.
------->
refRecId getLedgerDimension(container _c)
{
DimensionServiceProvider DimensionServiceProvider = new DimensionServiceProvider();
LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
DimensionAttributeValueContract ValueContract;
List ListValueContract = new List(Types::Class);
dimensionAttributeValueCombination dimensionAttributeValueCombination;
DimensionStorage dimStorage;
str _ledgerAccount = conPeek(_c, #Account);
str _department = conPeek(_c, #Department);
str _location = conPeek(_c, #Location);
str _region = conPeek(_c, #Region);
str _zone = conPeek(_c, #Zone);
str _company = conPeek(_c, #Company);
if (_department)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Department') ;
ValueContract.parmValue(_department);
ListValueContract.addEnd(ValueContract);
}
if (_location)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Location') ;
ValueContract.parmValue(_location);
ListValueContract.addEnd(ValueContract);
}
if (_region)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Region') ;
ValueContract.parmValue(_region);
ListValueContract.addEnd(ValueContract);
}
if (_zone)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Zone') ;
ValueContract.parmValue(_zone);
ListValueContract.addEnd(ValueContract);
}
if (_company)
{
ValueContract = new DimensionAttributeValueContract();
ValueContract.parmName('Company') ;
ValueContract.parmValue(_company);
ListValueContract.addEnd(ValueContract);
}
LedgerAccountContract.parmMainAccount(_ledgerAccount);
LedgerAccountContract.parmValues(ListValueContract);
dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
return dimensionAttributeValueCombination.RecId;
}