Trial Balance call Api Service response

Hello I have form Trial balance this is name LedgerTrialBalanceListPage

I will create custom service and I want calcute balances buton emilator and I will get data in service


I got like this data if I click calculate balances

I want like this but by service api


I was trying when I found sample codes

  1. Dynamics AX | D365 FO tech post: Calculate ledger balance by dimension set in X++ in AX2012/Dynamics 365 FO
  2. Blog on Microsoft Dynamics AX/ D365: Opening and closing balance Mainaccount ax 2012

But Not Worked

My codes like that

var response = new TrialResponse();
    changecompany(_request.parmDataAreaId())
    {
       
        System.Exception exception;
        List data = new List(Types::Class);

        try
        {
            List                                    dimensionValuesList;
            DimensionSetContract                    dimensionSet = new DimensionSetContract();
            DimensionAttributeValueContract         dimensionAttributeValueContract;
            DimensionAttributeValueContract         dimensionAttributeValueContract2;
            DimensionAttributeValueContract         dimensionAttributeValueContract3;
            RecId                                   ledgerDimensionId;
            RecId                                   ledgerId;
            DimensionAttributeValueCombination      dimAttrValueCombo;
            LedgerBalanceDimAttrValueComboAmounts   ledgerBalance;
            DimensionServiceProvider                serviceProvider = new DimensionServiceProvider();
            DimensionSetBalanceContract             result = new DimensionSetBalanceContract();
            DimensionSetCombinationContract         dimensionSetCombinationContract;
         

   
            dimensionValuesList = new List(Types::Class);
    
       

            dimensionSet.parmAccountingDateFrom(mkDate(01,01,2022));
            dimensionSet.parmAccountingDateTo(mkDate(30,12,2022));
            dimensionSet.parmCombination(dimensionSetCombinationContract);


            DimensionServiceProvider::validateDimensionSet(dimensionSet);

            ledgerBalance = LedgerBalanceDimAttrValueComboAmounts::construct();
            ledgerBalance.parmAccountingDateRange(dimensionSet.parmAccountingDateFrom(), dimensionSet.parmAccountingDateTo());
            ledgerBalance.parmIncludeOpeningPeriod(true);//_dimensionSet.parmIncludeOpeningFiscalPeriod());
            ledgerBalance.parmIncludeRegularPeriod(true);///_dimensionSet.parmIncludeOperatingFiscalPeriod());

      

            ledgerBalance.calculateBalance(dimAttrValueCombo);

       
         
            data.addEnd("zz");

            data.addEnd(ledgerBalance.getAccountingCurrencyBalance());
         

        }
        catch(Exception::Error)
        {
            data.addEnd("xx");
            exception = ClrInterop::getLastException();
            if (exception != null)
            {
                exception = exception.get_InnerException();
                if (exception != null)
                {
                    error(exception.ToString());
                }
            }
        }
        catch(Exception::Deadlock)
        {
            retry;
        }
        catch (Exception::CLRError)
        {
            exception = ClrInterop::getLastException();
            if (exception != null)
            {
                exception = exception.get_InnerException();
                if (exception != null)
                {
                    error(exception.ToString());
                }
            }
        }

        response.parmdata(data);
        return response;
    }