haring some x++ code which is require when you work with dimensions.
Creation of default dimension using map , if you are getting values different resources e.g. file , any http request etc.
MapEnumerator mapEnum; boolean validDim = true; List _contractList; Map dimMap = new Map(Types::String, Types::String); RecId defaultDimension; DimensionDefaultContract dimensionDefaultContract = DimensionDefaultContract::construct(); dimMap.insert('Client', '003501_036'); dimMap.insert('Purpose', '2016GBG'); dimMap.insert('Division', 'CORP'); dimMap.insert('Department', 'ADMIN'); dimMap.insert('Location', 'LOSANGELES'); dimMap.insert('SubDepartment', 'AP'); dimMap.insert('Employee', '100077'); mapEnum = dimMap.getEnumerator(); while(mapEnum.moveNext()) { str dimName, dimValue; boolean dimNameValid; dimName = mapEnum.currentKey(); dimValue = mapEnum.currentValue(); DimensionAttributeValueContract dimAttrValContract = DimensionAttributeValueContract::construct(dimName, dimValue); _contractList = dimensionDefaultContract.parmValues(); _contractList.addEnd(dimAttrValContract); } if(dimensionDefaultContract && !dimensionDefaultContract.parmValues().empty()) { DimensionNameValueListServiceProvider dimensionDefaultServiceProvider = DimensionNameValueListServiceProvider::newForDimensionNameValueListContract(dimensionDefaultContract); DimensionStorageResult dimensionStorageResult = dimensionDefaultServiceProvider.resolve(); switch(dimensionStorageResult.parmStatus()) { case DimensionStorageResultStatus::Valid: defaultDimension = dimensionStorageResult.parmSavedRecId(); break; default: error(strFmt("Validation Status: %1", dimensionStorageResult.parmStatus())); break; } } info(strFmt("Default Dimension %1",defaultDimension));
Here is created Default dimension
If you would like to combine main account with default dimension and create LedgerDimension use below code
MainAccount mainaccount = MainAccount::findByMainAccountId('000103'); LedgerDimensionAccount ledgerddimensoin ; ledgerddimensoin = LedgerDimensionFacade::serviceCreateLedgerDimension(mainaccount.RecId, defaultDimension); info(strFmt("LedgerDimension :%1",ledgerddimensoin));