Sunday, 3 April 2022

Unpack ledger dimension x++ ax2012

 static void dimValues(Args _args)

{

    DimensionAttributeValueCombination  dimAttrValueCombination;

    DimensionStorage                    dimensionStorage;

    DimensionStorageSegment             segment;

    int                                 segmentCount, segmentIndex;

    int                                 hierarchyCount, hierarchyIndex;

    str                                 segmentName, segmentDescription;

    SysDim                              segmentValue;

    DimensionHierarchy                  dimensionHierarchy;

    LedgerDimensionAccount              ledgerDimension;

    ledgerJournalTrans                  ledgerJournalTrans;

    RefRecId                            _recid;


    //select ledgerJournalTrans where ledgerJournalTrans.JournalNum == "00457";//.LedgerDimension !=0;


    ledgerDimension = _recId;//ledgerJournalTrans.OffsetLedgerDimension;

    dimAttrValueCombination = DimensionAttributeValueCombination::find(ledgerDimension);


    dimensionStorage = DimensionStorage::findById(ledgerDimension,true);


    dimensionHierarchy = DimensionStorage::getAccountStructureFromLedgerDimension(ledgerDimension);

    hierarchyCount = dimensionStorage.hierarchyCount();

    for(hierarchyIndex = 1; hierarchyIndex <= hierarchyCount; hierarchyIndex++)

    {

        if( dimensionHierarchy.RecId == DimensionHierarchy::find(dimensionStorage.getHierarchyId(hierarchyIndex)).RecId)

        {

            segmentCount = dimensionStorage.segmentCountForHierarchy(hierarchyIndex);

            for (segmentIndex = 1; segmentIndex <= segmentCount; segmentIndex++)

            {

                segment = dimensionStorage.getSegmentForHierarchy(hierarchyIndex, segmentIndex);

                if (segment.parmDimensionAttributeValueId() != 0)

                {

                    segmentName = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).Name;

                    segmentValue        = segment.parmDisplayValue();

                    segmentDescription  = segment.getName();

                    

                    if(segmentName == "BusinessUnit")

                    {

                        info(strFmt("%1--%2--%3", segmentName, segmentValue, segmentDescription));

                    }

                }

            }

        }

    }

}

No comments:

Post a Comment