web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Suggested Answer

How to create ledger dimension

(0) ShareShare
ReportReport
Posted on by 210

Hi,
I have a master form where I have entered the main account id and dimensions like cost-center, item category, etc.

How can we create a ledger dimension for this?

I have the same question (0)
  • Suggested answer
    vinitgoyal2005 Profile Picture
    6,332 on at

    Hi Vikash,

    Please check if d365foe.blogspot.com/.../get-ledger-dimension-from-string-in-d.html helps.

  • Ramit Paul Profile Picture
    22,799 Most Valuable Professional on at

    Is it a custom form?

  • vikash_ Profile Picture
    210 on at

    yes, it is a custom form.

  • Suggested answer
    Gunjan Bhattachayya Profile Picture
    35,423 on at

    Hi Vikash,

    If you have the values separately on this new form and you wan to create ledgerDimension for a transaction, try this code -

    public RecId getLedgerDimension(Mainaccount _mainaccount, str dim1,dim2,dim3)
     {
    
       DimensionServiceProvider              DimensionServiceProvider = new DimensionServiceProvider();
       LedgerAccountContract                LedgerAccountContract = new LedgerAccountContract();
       DimensionAttributeValueContract         ValueContract;
       List                                    ListValueContract = new List(Types::Class);
       dimensionAttributeValueCombination     dimensionAttributeValueCombination;
       DimensionStorage                      dimStorage;
    
    
       if (dim1)
       {
         ValueContract = new DimensionAttributeValueContract();
         ValueContract.parmName('dim1') ;
         ValueContract.parmValue(dim1);
         ListValueContract.addEnd(ValueContract);
       }
    
       if (dim2)
       {
         ValueContract = new DimensionAttributeValueContract();
         ValueContract.parmName('dim2') ;
         ValueContract.parmValue(dim2);
         ListValueContract.addEnd(ValueContract);
       }
    
       if (dim3)
       {
         ValueContract = new DimensionAttributeValueContract();
         ValueContract.parmName('dim3') ;
         ValueContract.parmValue(dim3);
         ListValueContract.addEnd(ValueContract);
       }
    
    
    
       
       LedgerAccountContract.parmMainAccount(_MainAccount);
       LedgerAccountContract.parmValues(ListValueContract);
    
       dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
       dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
    
       return dimensionAttributeValueCombination.RecId;
     }

  • vikash_ Profile Picture
    210 on at

     public DimensionDynamicAccount   generateLedgerDimension()
        {
            int             hierarchyCount;
            int             hierarchyIdx;
            RecId           dimAttId_MainAccount;
            LedgerRecId     ledgerRecId;
            MainAccount     mainAccount;
            RefRecId        recordvalue;
            DimensionAttribute      dimensionAttribute;
            DimensionAttributeValue dimensionAttributeValue;
            DimensionSetSegmentName DimensionSet;
            DimensionStorage        dimStorage;
            TPZ_MISReportMaster     master;
            container               _conData;
    
            LedgerAccountContract LedgerAccountContract = new LedgerAccountContract();
            DimensionAttributeValueContract  ValueContract;
            List   valueContracts = new List(Types::Class);
            dimensionAttributeValueCombination dimensionAttributeValueCombination;
            _conData=[master.AccountId,master.AccountingLocationValue,master.Brand,master.CTCValue,master.CostCenter,master.Department,master.EmpCodes,master.ItemCategory,master.Region,master.ResponsibilityCenter,master.Size,master.Type,master.Variant];;
    
    
    
            mainAccount = MainAccount::findByMainAccountId(master.AccountId);
            recordvalue = DimensionHierarchy::getAccountStructure(mainAccount.RecId,Ledger::current());
            hierarchyCount = DimensionHierarchy::getLevelCount(recordvalue);
    
            DimensionSet = DimensionHierarchyLevel::getDimensionHierarchyLevelNames(recordvalue);
    
            for(hierarchyIdx = 1;hierarchyIdx<=hierarchyCount;hierarchyIdx  )
            {
                if(hierarchyIdx == 1)
               continue;
                dimensionAttribute = DimensionAttribute::findByLocalizedName(DimensionSet[hierarchyIdx],false,"en-us");
                if(dimensionAttribute)
                {
                    dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute,conPeek(_conData,hierarchyIdx));
    
                    if(dimensionAttributeValue)
                    {
                        ValueContract = new DimensionAttributeValueContract();
                        ValueContract.parmName(dimensionAttribute.Name) ;
                        ValueContract.parmValue(dimensionAttributeValue.CachedDisplayValue);
                        valueContracts.addEnd(ValueContract);
                    }
                }
            }
    
            LedgerAccountContract.parmMainAccount(master.AccountId);
            LedgerAccountContract.parmValues(valueContracts);
            dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);
            dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());
            ledgerRecId = dimensionAttributeValueCombination.RecId;
            return ledgerRecId;
    
        }

    Hi,

    I tried this code.

  • Thomas Tian Profile Picture
    on at

    Hi Vikash,

    do you still need help on this issue?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > Finance | Project Operations, Human Resources, AX, GP, SL

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 490 Super User 2025 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 429 Most Valuable Professional

#3
BillurSamdancioglu Profile Picture

BillurSamdancioglu 241 Most Valuable Professional

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans