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 :

Function DimensionValidationRequest::newForLedgerDimensionType has been incorrectly called inD365 F&O

Rahul Kiran Profile Picture Rahul Kiran 481
Usually we see the below error when we create payment/general journals using X++ code.

Function DimensionValidationRequest::newForLedgerDimensionType has been incorrectly called.

The reason for this error is ledger dimension/offset ledger dimension(Main account) format is incorrect and assigned this format to ledgerjournalTrans.LedgerDimension or ledgerjournalTrans.OffsetLedgerDimension.

Below is the way to create and assign ledger dimensions.

//Variables
        DimensionDynamicAccount     offsetLedgerDim;
Array  acctDimAttrArray                     = new Array(Types::String);
            acctDimAttrArray.value(1,"MainAccount");

            Array acctDimArray                          = new Array(Types::String);
            acctDimArray.value(1,'123456');

            DefaultDimensionIntegrationValues DefaultDimensionIntegrationValues   = DimensionResolver::getEntityDisplayValue
                    (acctDimAttrArray, acctDimArray, extendedTypeStr(DimensionDynamicAccount), LedgerJournalACType::Ledger);
            DimensionDynamicAccountResolver DimensionDynamicAccountResolver     = DimensionDynamicAccountResolver::newResolver
                (DefaultDimensionIntegrationValues, LedgerJournalACType::Ledger, curExt());

            ledgerjournalTrans.LedgerDimension = DimensionDynamicAccountResolver.resolve();
            ledgerjournalTrans.OffsetAccountType = LedgerJournalACType::Cust;

            offsetLedgerDim = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber
                ('1000005', LedgerJournalACType::Cust);
            ledgerjournalTrans.OffsetLedgerDimension = offsetLedgerDim;


In the same way if have main account with multiple dimensions you can follow the format.

Array  acctDimAttrArray                     = new Array(Types::String);
        acctDimAttrArray.value(1,"MainAccount");
        acctDimAttrArray.value(2,"Brand");
        acctDimAttrArray.value(3,"Channel");

        Array acctDimArray                          = new Array(Types::String);
        acctDimArray.value(1,_dataContract.parmMainAccount());//Main account
        acctDimArray.value(2,_dataContract.parmBrand());//Brand dimension
        acctDimArray.value(3,_dataContract.parmChannel());//Channel dimension

  DefaultDimensionIntegrationValues DefaultDimensionIntegrationValues   = DimensionResolver::getEntityDisplayValue
                    (acctDimAttrArray, acctDimArray, extendedTypeStr(DimensionDynamicAccount), LedgerJournalACType::Ledger);
            DimensionDynamicAccountResolver DimensionDynamicAccountResolver     = DimensionDynamicAccountResolver::newResolver
                (DefaultDimensionIntegrationValues, LedgerJournalACType::Ledger, curExt());

            ledgerjournalTrans.LedgerDimension = DimensionDynamicAccountResolver.resolve();
            ledgerjournalTrans.OffsetAccountType = LedgerJournalACType::Cust;

            offsetLedgerDim = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber
                ('1000005', LedgerJournalACType::Cust);
            ledgerjournalTrans.OffsetLedgerDimension = offsetLedgerDim;

That's it.

@Rahul


This was originally posted here.

Comments

*This post is locked for comments