HGrid is one of the less talked about and most useful feature in PeopleSoft page designs. HGrid stands for Hierarchical Grid. Some may even interpret it as horizontal grids. HGrids can introduce hierarchy or horizontality in PeopleSoft grids. These kind of grids are often very useful in presenting roll up values and child values for a specific item in the same grid.
HGrid is no different than the normal PeopleSoft grid except it provides a roll up/ expansion feature within the same grid. The same is true with the designing of HGrid as well. To create an HGrid, all you need to do is to create a normal PeopleSoft grid, add a HTML field to the grid (which performs the expansion/collision) and then import the delivered packages to configure the grid.
A typical HGrid in PeopleSoft will look as below.
There are many delivered methods which will do all the fancy jobs like cut, copy, paste, expand all, collapse all, move up/right/down/left etc… There is a delivered work record POOL_HGRID_WRK which can be added to the page for designing these fancy buttons.
While designing your HGrid, you should be having a physical table to store the hierarchy (level) information of the HGrid, for this you might have to introduce two fields to capture the level number and the row number of any particular row. There is also a delivered sub record (HGRID_LEVEL_SBR) which can be used to capture the level details of the rows. Once you have the Table/View ready, all you have to do is to configure the HGrid package.
The main properties which you would need to configure will be as below.
DisplayOnly: Specify whether the grid is read only or editable
CreateLevelSeqNumHierarchy: Specify whether the level sequencing is handled manually or not
HGridRowRefNumFieldName: Field which carries the row number
HGridRowRefNumRecordName: Record which carries the row number
AssignRefNum: Specify whether the row number is generated automatically or not
HGridLevelFieldName: Field which stores the level information
HGridLevelRecordName: Record which contains the level field
HGridLevelSeqNumRecordName : Record which contains the detail level fields
HGridRowSelRecordName: Record Used for selection indicator
HGridRowSelFieldName: Field Used for selection indicator
HGridDescrRecordName: Record which contain the actual description field
HGridDescrFieldName: Actual description field
HGridDescrDisplayRecordName: Record which is used to display the decription as HTML
HGridDescrDisplayFieldName: Field which is used to display the description as HTML
DescrChangeControlFieldName: Control field to handle the description (will be invisible)
DescrChangeControlRecordName: Record which contains the control field
DescrChangeControlPageFieldName: The page field name of the control field
ExpCollControlFieldName: The control field to expand/collapse the hierarchy (invisible)
ExpCollControlRecordName: Record which contains the control field
ExpCollControlPageFieldName: Page field name of the field
ExpCollFlagFieldName: Field which stores the expansion/collapse information
ExpCollFlagRecordName: Record which contains the above field
DisplayWBSColumn: Specify whether you need to add bullet points for the hierarchy
WBSFieldName: Field which contains the bullet information
WBSRecordName: Record which contains the above field
Having done the above, you are 90% done with the HGrid design and configuration. All the rest you need to do is to invoke the appropriate methods from the appropriate events.
If you have your own requirements of manipulating the data based on rolling up/down, then you may have to create your own methods and extend the delivered one. For all the basic functionality the delivered ones should be working fine.
When you design a HGrid, consider all the facts including the data set, data model, real requirement and then come to a conclusion of designing an HGrid. A wrong design might take a toll on the performance of the application.