This Blog is about utilizing the CDS’s virtual elements feature which as exposed as ODATA Via SADL (direct in SEGW / with ODATA Publish true annotations). This ODATA can be further consumed by Fiori Elements based application.
(For more information on Fiori Elements check this link )
Also following SAP standard documents are helpful for understanding of CDS with Virtual elements , Link
Standard Consumption CDS is generating the Fiori elements application. There might be business requirement for field which required custom ABAP Logic for the calculation.
So good news is that we can use the CDS with virtual element and can write the complex custom Logic utilizing the ABAP Resource for the calculation.
Virtual elements can be implemented with Calculated value of Fields, Filtering of calculated values, Sorting of the Calculated value.
- Create the consumption CDS with UI and Virtual elements annotations.
- Give the Place holder for the Virtual elements, data type of the virtual elements must be defined.
- Create the normal ABAP class which implement the interface IF_SADL_EXIT_CALC_ELEMENT_READ.
- Implement both the methods GET_CALCULATE_INFO and CALCULATE.
- CDS can be exposed as ODATA or SEGW reference data source.
- Generate the Fiori elements-based application which show the calculated columns.
Let’s implement ABAP Code exit for Virtual elements.
Example – concatenate Material, Plant, Storage location separate by ‘-‘.
(This is just for demo purpose we can implement with CDS concat functions also)
- Create the CDS with Virtual element and with virtual elements specific annotations below
- We have given Place holder for the virtual element ‘TestExit’ with data type as abap.char(40)
- Create the class with implementing interface IF_SADL_EXIT_CALC_ELEMENT_READ.
- Implement the below method
- Method GET_CALCULATION_INFO is used to provide the list of fields which is required for the calculation.
- Method CALCULATE is actual method where we implement the custom logic.
- For the demo purpose, GET_CALCULATION_INFO is with blank implementation.
- Implement the CALCULATE method utilizing ABAP resource (i.e. Function Module etc)
- Register the Gateway Service generated by CDS and check the output in the Gateway Client
- We can see the calculated field in the response
- We can utilize the same CDS in Fiori Elements based application and Field with virtual element will be populated.
- Develop the Fiori Elements based List Report, for more information on Fiori element list refer following Link
CDS with virtual element is useful where the original data model doesn’t have the required field and needs to be calculated based on the custom logic using ABAP Resource (Function Module/ Class-Method etc) for the SADL based ODATA.