1 Reply Latest reply on Jan 8, 2019 1:49 PM by CBarbieri

    List of in-active entities in HFM


      Hi Guys,


      when we want to see active status of a entity in HFM will navigate to Application --> Consolidation --> Data --> Management Ownership --> Active = No against to a company..


      1. Is there any easy way to see list of all inactive Entities ? at once rather selecting Parent everytime





        • 1. Re: List of in-active entities in HFM

          This can only be done in grids and forms, and of course grids and forms pulled into smart view. It cannot be accomplished in Financial Reports.


          First you must create a custom dynamic entity member list. The list must present all entities in Parent.Child format. Here is the full code to create an entity list that varies by period.


          The reason Financial Reports can't do this, is that it does not pass in the parent entity as a variable, and no matter how I tried, I could not get the Parent variable in each pair to change (even in so FR kept repeating the same parent entity for all Parent.Child pairs, which is invalid.


          Once you have the entity list, you have to display the [None] value member, and the [Active] account in the form or grid.


          One limitation you should consider is that an entity may be active for a parent in the hierarchy, but if one of its ancestors is inactive, that makes the remaining descendants inactive. This list, nor any report I can think of, would not show that.




          ' -- Description: Custom defined member lists for Hyperion Financial Management application.

          ' --

          ' -- Developed by: Chris Barbieri, Finit

          ' -- Developed date: 12/18/2017

          ' -- 12/18/2017 CB - Initialized the lists



          ' There are three main subroutines comprising this file:

          '  1) Sub EnumMemberLists, which calls Sub GetLists. there is nothing to update here.

          '  2) Sub GetLists is used to establish the number of lists within each dimension and define the name of each list.

          '  3) Sub EnumMembersInList. This is where we populate the members within each list.

          ' There are two optional subroutines at the end of this file:

          '  1) Sub SortList can be optionally called when an alphanumeric sort is needed for the list members.

          '  2) Sub WriteToFile can be optionally called from any subroutine for list debugging purposes.

          ' There is one optional function at the end of this file

          '  1) Function InList can be used to see whether a member is in another list.



          'Set up an array for the various lists. There is nothing to update or maintain here.


          Sub EnumMemberLists()

              ReDim sLists(0)

              Call GetLists(HS.Dimension,sLists)

              HS.SetMemberLists sLists

          End Sub 'EnumMemberLists



          'Define the number of lists you will have for each dimension. Update this each time you add or delete a list.

          'Each dimension can have one or more custom memberlists. Here is each custom dimension and the short name:



          Sub GetLists(sDimension,sLists)

              Call WriteToFile("Line 39 GetList, " & sDimension)

              'How many Period lists are there? (not yet used) Uncomment the following if you need to use lists for the respective dimension.

              'In the parentheses provide the number of lists you need for each dimension.


              'How many Entity lists are there?

              Dim sEntityLists(1)


              ReDim sDynamicLists(0)



              'Next, define the name for each list. Each time you add a list, give it a name here.


              'Choose each HFM dimension for which list have been defined

              Select Case sDimension

                  'The lists are provided ordinarily within each dimension           


                  Case "Entity"

                      'Note that every list below containing (@POV) is a dynamic list whose contents can vary based on the point of view of each user/report.

                      sEntityLists(1) =  "Active Descendants of POV(@POV)"


                      'Nothing to update here.

                      ReDim sLists(UBound(sEntityLists))

                      For i = 1 to UBound(sEntityLists)

                          sLists(i) = sEntityLists(i)

                      Next 'i


              End Select 'sDimension

          End Sub 'GetLists



          'This section sets the contents of each list, dimension by dimension. Update this section.


          Sub EnumMembersInList()

              'Initialize the number of lists

              ReDim sLists(0)

              'place each dimension's name into a string variable sDimension

              sDimension = HS.Dimension

              'Read the name of each list, for each dimension, from Sub GetLists

              Call GetLists(sDimension,sLists)

              'put the name of each list into the variable sMemberList

              sMemberList = sLists(HS.MemberListID)

              'Go through the lists, one dimension at a time

              Select Case sDimension


                  Case "Entity"

                      'Within the Entity dimension, go through each list

                      'The following variables read information from the user's point of view, and then can be leveraged by the entity lists.






                      Select Case sMemberList


                          Case "Active Descendants of POV(@POV)"   

                              'This list returns Active descendants of the point of view entity, for the current scenario, year and period.

                              ' Note this uses HS.Node.List which considers the Active status rather than HS.Entity.List which does not.


                              'Get the number of active children of the POV entity.

                              iNumberChildren = HS.Node.NumChild("E#" & sEntPOV & ".S#" & sScenPOV & ".Y#" & sYearPOV & ".P#" & sPerPOV)

                              'If the POV is blank, or has no children, don't proceed.

                              If sEntPOV <> "" And NumberChildren > 0 And sEntPOV <> "[None]" Then

                                  'Create a list of the entity's active children, for the current POV.

                                  aEntList=HS.Node.List("E#" & sEntPOV, "[Children]", "S#" & sScenPOV & ".Y#" & sYearPOV & ".P#" & sPerPOV)

                                  'The currently selected entity is the master parent for the whole list.

                                  sParent = sEntPOV

                                  'Cycle through the active children of the POV parent.

                                  For each sEnt in aEntList

                                      'Add each to the list

                                      HS.AddEntityToList sParent,sEnt

                                      'Go and find the children of each child

                                      Call AddNextLevel(sEnt,sScenPOV,sYearPOV,sPerPOV)

                                  Next 'sEnt

                              'Finish when there are no more children.

                              End If 'sEntPOV <> "" And NumberChildren > 0


                      End Select 'sMemberList


              End Select 'sDimension


          End Sub 'EnumMembersInList



          'Custom Function AddNextLevel

          '   This is used by the entity node list to define each parent.child level


          Function AddNextLevel(sEnt,sScenPOV,sYearPOV,sPerPOV)

              'Determine how many children are active for the selected entity, in the current period.

              iNumberChildren = HS.Node.NumChild("E#" & sEnt & ".S#" & sScenPOV & ".Y#" & sYearPOV & ".P#" & sPerPOV)   

              'If the current entity has children, continue

              If iNumberChildren > 0 Then

                  'List all of the active children

                  aEntChildList=HS.Node.List("E#" & sEnt, "[Children]", "S#" & sScenPOV & ".Y#" & sYearPOV & ".P#" & sPerPOV)

                  'Make the current entity the new parent.

                  sParent = sEnt

                  'Cycle through each of its children

                  For each sChild in aEntChildList

                      'Add them to the list.

                      HS.AddEntityToList sParent, sChild

                      'See if we need to go through a next level.

                      Call AddNextLevel(sChild,sScenPOV,sYearPOV,sPerPOV)                             

                  Next 'child

              End If 'NumberChildren

              'Go back to the main subroutine.

          End Function 'AddNextLevel