Oct 28, 2018

Get ledger dimension full name by segment in X++

static void get_LedgerDimensionNameBySegment(Args _args)
{
    RecId                           _LedgerDimension = 5637156159;
    DimensionStorage                _DimensionStorage;
    DimensionStorageSegment         _Segment;
    int                             _SegmentCount;
    int                             _SegmentIndex;
    int                             _HierarchyCount;
    int                             _HierarchyIndex;
    MainAccount                     _MainAccount;
    MainAccountTranslation          _MainAccountTranslation;
    container                       _LedgerDimensionNameCon_Each;
    container                       _LedgerDimensionNameCon;

    _DimensionStorage = DimensionStorage::findById(_LedgerDimension);
    if (_DimensionStorage == null)
    {
        throw error("@SYS83964");
    }

    _HierarchyCount = _DimensionStorage.hierarchyCount();
    for(_HierarchyIndex = 1; _HierarchyIndex <= _HierarchyCount; _HierarchyIndex++)
    {
        _SegmentCount = _DimensionStorage.segmentCountForHierarchy(_HierarchyIndex);

        for (_SegmentIndex = 1; _SegmentIndex <= _SegmentCount; _SegmentIndex++)
        {
            _Segment = _DimensionStorage.getSegmentForHierarchy(_HierarchyIndex, _SegmentIndex);

            if (_Segment.parmDimensionAttributeValueId() != 0)
            {
                _LedgerDimensionNameCon_Each = [DimensionAttribute::find(DimensionAttributeValue::find(_Segment.parmDimensionAttributeValueId()).DimensionAttribute).Name,
                                               _Segment.getName()];
                _LedgerDimensionNameCon+=[_LedgerDimensionNameCon_Each];
            }
        }
    }

    conView(_LedgerDimensionNameCon);
}

No comments:

Post a Comment