cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

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

jmalla
Contributor
7,642

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

Accepted Solutions (1)

Accepted Solutions (1)

MioYasutake
SAP Champion
SAP Champion
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

Answers (1)

Answers (1)

jmalla
Contributor
0 Kudos

sumit.kundu2 - I just posted this question. Is there a way to generate those required metadata field and values for the hierarchy without using an MPC class? Referring to your post - https://blogs.sap.com/2019/04/01/fiori-elements-tree-table-with-sap-annotations/

jocelyn.dart - Was also referring to your comment on https://blogs.sap.com/2018/01/11/fiori-elements-list-report-sorting-grouping-and-table-types/

Basically, I am trying to render a tree view, the data I have is good but I am unable to generate the annotations from the CDS:

Here is the JSON that works for the display:

[
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000355')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000355')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000355",
    "HierarchyLevel": 0,
    "ParentNodeID": "",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600010000000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "Digestive health-endoscopy"
  },
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000357')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000357')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000357",
    "HierarchyLevel": 1,
    "ParentNodeID": "I0000660000000000000000355",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600010100000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "Endoscopy-Advanced technology"
  },
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000358')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000358')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000358",
    "HierarchyLevel": 1,
    "ParentNodeID": "I0000660000000000000000355",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600010200000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "Endoscopy-Traditional technology"
  },
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000356')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000356')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000356",
    "HierarchyLevel": 0,
    "ParentNodeID": "",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600020000000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "Digestive health-CT Scan"
  },
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000359')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000359')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000359",
    "HierarchyLevel": 1,
    "ParentNodeID": "I0000660000000000000000356",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600020100000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "CT Scan - Advanced"
  },
  {
    "__metadata": {
      "id": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000360')",
      "uri": "http://frdev:8001/sap/opu/odata/sap/ZRTR_PROJECT_WBS_CDS/ZRTR_PROJECT_WBS('I0000660000000000000000360')",
      "type": "ZRTR_PROJECT_WBS_CDS.ZRTR_PROJECT_WBSType"
    },
    "NodeID": "I0000660000000000000000360",
    "HierarchyLevel": 2,
    "ParentNodeID": "I0000660000000000000000359",
    "DrillState": "expanded",
    "Project": "I-000066",
    "WBSElement": "I00006600020101000",
    "ProjectDescription": "Digestive Health",
    "WBSDescription": "CT Scan - Old technology"
  }
]

Your help is appreciated in advance.

Thanks,

Jay