public LedgerDimensionAccount getLedgerDimensionModified( LedgerDimensionAccount _ledgerDimension, DimensionValue _toDimTaxDeductionVal) { LedgerDimensionAccount ledgerDimension; DimensionDefault defaultDimension; LedgerDimensionDefaultAccount defaultAccount; DimensionAttribute dimAttr; DimensionAttributeValue dimAttrValue; DimensionAttributeValueSetStorage dimAttrValDimStorage; DimensionStorage dimAttrStorage; int i; // Name of dimension attribute to change, example: TaxDeduction #define.DimAttrTaxDeductionName('TaxDeduction') ; dimAttr = DimensionAttribute::findByName(#DimAttrTaxDeductionName); if (_toDimTaxDeductionVal != '') { // convert to Default dimensions defaultDimension = DimensionStorage::getDefaultDimensionFromLedgerDimension(_ledgerDimension); dimAttrValDimStorage = DimensionAttributeValueSetStorage::find(defaultDimension); // find DimensionAttributeValue for specified display value of TaxDeduction dimension dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttr, _toDimTaxDeductionVal); // add dimension value to Default dimension dimAttrValDimStorage.addItemValues(dimAttr.RecId, dimAttrValue.RecId, dimAttrValue.HashKey); defaultDimension = dimAttrValDimStorage.save(); // combine default dimension with ledger dimension representing main account defaultAccount = DimensionStorage::getLedgerDefaultAccountFromLedgerDim(_ledgerDimension); ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(defaultAccount, defaultDimension); } // remove dimension from combination else { dimAttrStorage = DimensionStorage::findById(_ledgerDimension); for (i = 1; i <= dimAttrStorage.segmentCount(); i++) { if (dimAttrStorage.getAttributeIdForSegment(i) == dimAttr.RecId) dimAttrStorage.clearSegment(i); } ledgerDimension = dimAttrStorage.save(); } return ledgerDimension; } // https://daxtarkowski.wordpress.com/2014/04/16/changing-value-in-ledger-dimension-combination/