cancel
Showing results for 
Search instead for 
Did you mean: 

SAP CDS how to add Hierarchy annotations sap:hierarchy-node-for sap:hierarchy-level-for

jmalla
Contributor

Through a CDS view how can we add the annotations for:

  • sap:hierarchy-node-for
  • sap:hierarchy-level-for
  • sap:hierarchy-parent-node-for
  • sap:hierarchy-drill-state-for

I do not see these specific annotations:

I need to generate the metadata to look like

<EntityType Name="Node">
	<Key>
	     <PropertyRef Name="NodeID" />
	</Key>
	<Property Name="NodeID" Type="Edm.Int32" Nullable="false" edmanno:StoreGeneratedPattern="Identity" sap:hierarchy-node-for="NodeID"/>
	<Property Name="HierarchyLevel" Type="Edm.Int32" Nullable="false" sap:hierarchy-level-for="NodeID"/>
	<Property Name="WBSDescription" Type="Edm.String" MaxLength="40" sap:label="WBS Element Name" sap:quickinfo="PS: Short description (1st text line)"/>
	<Property Name="ParentNodeID" Type="Edm.Int32" Nullable="true" sap:hierarchy-parent-node-for="NodeID"/>
	<Property Name="DrillState" Type="Edm.String" Nullable="false" MaxLength="10" Unicode="true" FixedLength="false" sap:hierarchy-drill-state-for="NodeID" />
</EntityType>



I tried the following annotations but it is not working:

@Hierarchy.parentChild: { name: 'WBSHierarchy',
                            recurse : { 
                                parent: [ 'ParentNodeID'],
                                child: ['NodeID'] }

My fields in the CDS are defined as:

    //NodeID
    key concat( _Project.Project, _WBSElementHierarchy.HierarchyNode) as NodeID,


    //HierarchyLevel - Need to zero sequence the Hierarchy
    _WBS.WBSElementHierarchyLevel - 1 as Hierarchylevel,
    
    //ParentNodeID
    case 
        when (_WBS.WBSElementHierarchyLevel > 1)
            then concat( _Project.Project, _WBSElementHierarchy.ParentNode)
        else
            '' 
    end as ParentNodeID,
    _WBSParent,


    //DrillState
    cast( 'expanded' as abap.sstring(10) ) as DrillState,

Is there a way to add those exact annotations to the Node, Hierarchy Level, Parent and Drillstate to the individual fields?

Thanks,

Jay

p619793
Active Participant

The blog post you mentioned was for a specific usage in Fiori Elements Tree table. I do not think the metadata annotations you are lloking for in the resultant metadata are generated by @Hierarchy.parentChild annotations. Where are you going to consume this OData - Fiori apps or any Analytics client.?

jmalla
Contributor

I added this to the XML view which gets around the annotation issue.:

<TreeTable id="table" selectionMode="Single" enableColumnReordering="false" rows="{ path : '/ZRTR_PROJ_WBS_HIERARCHY', parameters : { countMode: 'Inline', numberOfExpandedLevels: 3, treeAnnotationProperties : { hierarchyLevelFor : 'HierarchyLevel', hierarchyNodeFor : 'Counter', hierarchyParentNodeFor : 'ParentCounter', hierarchyDrillStateFor : 'Drillstate' } } }">

There should be way to do this with simple annotations.

Thanks,

Jay

View Entire Topic
MioYasutake
Active Contributor
0 Kudos

Hi Jay,

Below wiki might be helpful.

https://wiki.scn.sap.com/wiki/display/BI/A+very+simple+hierarchy+without+hierarchy+directory

First, you need a hierarchy view and a dimension view consuming the hierarchy view.

Next you will associate the dimension view with a consumption view.

Then the consumption view will get the the annotations you mentioned.

I followed the same wiki and it worked.

Regards,

Mio