An input parameter is similar to a variable in that it supports to passing of dynamic values to a calculation view at runtime. But whereas a variable has only one purpose, that is to provide a dynamic filter based on attributes, an input parameter can fulfill additional requirements.
Input Parameters can also be used when you have scalar or table functions in your Calculation View. The parameters of these functions can be fed with values that you enter at runtime, when querying your calculation view. This requires that you map the parameters, which will be discussed later on in this lesson.
Input Parameter Types
The figure, Input Parameter Types, shows the different types of Input Parameters that can be defined.
The Direct parameter type can be combined with a semantic type such as Date, Currency, or Unit of measure. This means that the value help will be based on these types of values. For example, if you specify Date, then a pop-up calendar will appear for the user prompt. If you specify Currency, then a list of valid currencies will be presented in the value help. This allows us to provide flexible input for the user but also allows us to control the type of values that are allowed.
Currency and Unit of Measure Semantic Types
For the Currency and Unit of measure semantic types, the list of proposed values will be created based on the corresponding reference tables in SAP HANA. This setup requires that the default schema assigned to the view contains the reference tables.
Input parameters support multiple values, which means that, at runtime, the end user has the possibility to provide several values to the parameter. Some examples of use cases include the following:
Applying filters of the types List of values and Not in List
Expression of calculated columns and expression of filters in projection nodes, provided that the expression requires a multivalue input.
When you define an input parameter of the type Derived from Procedure/Scalar Function, it is possible to map parameters to the input of the scalar function or procedure.
Input parameters of the types Derived from table and Derived from Procedure/Scalar Function do not generate a prompt for the end user (they pass the parameter values directly), except if you select the Input Enabled option. In this case, the values returned by the table, procedure, or scalar function, can be modified by the end user.
Upon execution of the calculation view, input parameters are passed inside the SQL query using a PLACEHOLDER clause. For example:
SELECT <columns> FROM <calculation_view_name> (placeholder."$$IP_YEAR$$"=>'2019') GROUP BY <group_by columns>;
Not all applications are able to pass values to the PLACEHOLDER. That is why sometimes you must use variables to achieve the same outcome.
Once you have defined an input parameter, you must then use it in an expression; otherwise it is ignored.
Creating Input Parameters
As discussed already, unlike a variable, an input parameter can be used in a conditional expression. For example, we can use an input parameter to determine which measure should be displayed in a particular column.
To illustrate this, we create a calculated column called AMOUNT that can be filled with either the gross amount or the net amount, depending on the value that the user chooses when querying the view.
In our example, we have chosen to use an input parameter of the type Static List. This means that we predefine the allowed value that can be chosen by the user in a list. This is fine for short lists, but when the list becomes large it becomes cumbersome to manage, as you would have to edit the calculation view and rebuild it each time. Of course you could choose the type Direct, which would mean the user could input anything. But that would mean, apart from the user not having any guidance, the user could also mistype the value, or enter the value in the wrong format (perhaps adding leading zeros when they were not required).
A good solution would be to define the input parameter with the type Column and then, in the View / Table Value Help, enter the name of a table or view where the allowed entries are presented. This also means that this list can be used by multiple input parameters and encourages central maintenance of the consistent, allowed values list.
An input parameter used within a formula does not necessarily have to be of the type Static List. For example, it can also be a Direct numeric value used in multiplication or any other calculation type.
Calling an Input Parameter in a Calculation
In the example in the figure, Calling an Input Parameter in a Calculation, if the user selects GROSS, the calculated column (of type Measure) will display the GROSS_AMOUNT measure in the AMOUNT column. Any other selection will result in NET_AMOUNT being displayed.
Input Parameter Using Dates
Using a Calendar Dialog for Date Input Parameters
In the figure, Using a Calendar Dialog for Date Input Parameters, the user is asked for a single value. Dates can also be selected as ranges.