Technical Articles
ABAP CDS Views: Optional parameters in CDS View
Version: SAP S/4 HANA 1909
Introduction:
In SAP Embedded Analytics world ABAP Core Data Service Views also known as ABAP CDS Views. ABAP CDS Views are defined on top of existing database tables. Which can be further used in UI5 application for reporting purpose. When we deal with reports, then we need some selection parameters to restrict data in to get expected output. Which works as selection screen in UI5 application. Such functionality can be achieved with help ABAP CDS view.
Based on my experience & learning; I am drafting information in below article.
With continuation to previous article, lets see how to develop a report based on CDS view having Optional Input Parameter.
CDS views can be created with parameters & without parameters. If we create view with parameters, then it will become mandatory to provide input while executing a report.
Example –
Executing CDS via RSRT Tcode –
Question: Is it possible to develop a report based on CDS view having facility of optional input parameters?
Answer is yes, let see how we can achieve this by doing minor changes in CDS view.
CDS View –
We will add 2 annotations in CDS view to generate prompts while executing of report based on CDS view.
@Consumption.filter.mandatory: false
@Consumption.filter.selectionType: #SINGLE
Here, in above image we can see input parameter is optional here.
Sample Code –
define view ZCDS_C_WITH_PARAMETER
//with parameters P_ANLAGE : abap.char( 10 )
as select from ZCDS_WITH_PARAMETER
{
@AnalyticsDetails.query.axis: #ROWS
@Consumption.filter.mandatory:false
@Consumption.filter.selectionType: #SINGLE
anlage as Installation,
@AnalyticsDetails.query.axis: #ROWS
bis as ValidTo,
@AnalyticsDetails.query.axis: #ROWS
ab as ValidFrom
} //where anlage = $parameters.P_ANLAGE
If we use annotation @Consumption.filter.mandatory: True then its mandatory to provide input in prompt.
More details related consumption annotation are available here.
Conclusion –
- We can develop a report based on CDS view with optional input parameters.
Thank you very much Yogen, for your clear explanation with code example!
This was exactly what I was looking for.
Welcome 🙂
These seem to be optional "filters" not optional "parameters". Is there a way to pass these consumption.filter values down to a lower view?
I need to create a cds view with optional parameters that, when selected, will be passed down to other views. Is this possible?
Great Post Yogen.
I have a CDS that is exposed as Odata Service. I have a few parameters in that CDS that I want to make optional and range type. My client system is S/4 1909, but I can't get these new annotations to work. Do you have any example for a CDS exposed as Odata Service?
I will appreciate your help.
Best Regards:
Luis Lara.
Hi patil,
Best Regards.
Hi,
You can pass default values to variables. You can refer -
https://blogs.sap.com/2021/06/03/abap-cds-views-default-values-in-parameters/