How can I make parameters optional? - pentaho

I need some help with pentaho report designer.
I've used some parameters to filter my data, but, it seems that I'm obliged to filter on these parameters to show data on my charts.
So, this is what I want, I need to make my parameters optional. It means that I want to show global views even if I don't select a parameter.
Any thoughts?

Untick the mandatory checkbox in the parameter settings dialog.

You must create a hidden parameter; Let's call it "Flag" that tests whether the parameter are set, by using this post-processing formula.
=OR(ISNA([date_from]); ISNA([date_to]))
and then in your query reference that new parameter:
Select .....
where ${Flag} = TRUE OR (date between ${date_from} and ${date_to})

Related

Pass table parameter to FM via selection screen

I need to call a function that has a table type as import parameter in a program. I thought about doing this with a selection screen but I can't use deep structures as parameters. When I 'TEST' that function module it shows me a thing where I can add multiple entries and submit everything in the end. Can I get something similar during the execution of a program?
edit: I have to offer a program that calls the function module create_skill_profile.
1
2
3
You can call the function module RS_COMPLEX_OBJECT_EDIT in your report for editing a complex structure. This is the same function module that is used for editing test data in the function module single test.
So, in your report, you could ask for the name of the desired type (if that has to be a dynamic one), and then, in start-of-selection, you can create a data object of this type and pass it to RS_COMPLEX_OBJECT_EDIT to let the user fill it.
A serious limitation of RS_COMPLEX_OBJECT_EDIT is that it can't handle sorted or hashed tables as input. So all the components of your complex structure, if they are of table kind, they have to be standard tables.
What I understand: You want to call a function module that requires a table as import parameter. The table's rows are filled from user input. The number of rows is dynamic.
Approaches:
1) use selection screen with predefined input fields and show/hide them dynamically via PAI (AT SELECTION-SCREEN (on xxx). LOOP AT SCREEN.) then build your table and call your function module on START-OF-SELECTION.
2) show editable ALV grid with table structure. Implement an application toolbar button or use SAVE button to let the user call your function module when he finished inserting his input.
I would defenitely prefer 2), although custom input validation is a bit tricky. But if the required user input is the same as ddic defined table structure the input validation happens automatically.

Pentaho Community Dashboard: one datasource for multiple charts controlled by hard-coded parameter

I want to display three charts on a dashboard, with one MDX datasource behind them.
The difference in the three charts is a filter (a location of an outlet).
I have made a parameter OUTLETNAME and put that in my MDX.
Then for each of the three charts, I created that parameter in the parameter dialog of the chart.
I have not created the parameter as its own component.
I have set it to a string value in the component. That is, I in the chart component I have entered a parameter with arg OUTLETNAME and a value of 'AAA', 'BBB' and 'CCC' in the three chart components.
However, this doesn't work. The filter choose the ALL member.
If I define a generic simple parameter for each value of OUTLETNAME, like declaring a variable to hold a constant value, and use this as the value of the parameter in the chart, then it works. So I can't seem to assign a string value directly to
For example, I make a generic -> simple parameter as a component and call it OUTLET_AAA and give it the property value AAA (not in quotes), and then on the relevant chart make a parameter with argument OUTLETNAME and value OUTLET_AAA, it works. But this seems cumbersome. I am missing something?
Check the following:
The parameter is properly entered into the query. If your parameter is OUTLETNAME, you must have something like ${OUTLETNAME} somewhere in your query.
Check that the parameter definition of each chart is correct: the first column of the parameter must match OUTLETNAME (case sensitive), and the value must match "AAA" or 'AAA' (with quotes!), etc.
If the behaviour is still the same, open your javascript console when rendering the dashboard and check what you get with
render_<component_name>.parameters and render_<component_name>.queryState.lastResults().resultset. See whether the resultsets are indeed equal or if they're different.

specifying a parameter instead of explicit value in process task

I have a process task:
I'm wondering whether it's possible to pass something like this into it:
$Package::targetLocation
Thank you for your guidance,.
You should be able to do this with the Expressions tab, create a new expression against the Arguments property and assign this to your user variable.

How can i set current date using expression builder in oracle adf?

How can i set current date using expression builder in oracle adf?
i am using jdeveloper 11.1.1.3.0 and using Input Date(ADF faces.common.component)
The expression builder is used to build EL expressions that reference a method or a value property. Its not meant to set a value but to make it available for editing. One option would be to use a method expression to invoke an action on a manage bean that then sets the value. However, in JSF 1.2 you cannot pass arguments to an EL method and for this reason you would need a work around for setting a date. The work around is that the method expression (and thus the press of a button) invokes a method, which then creates the current date (or whatever date you want to pass in) and sets it on the component directly (though setting it on the component model works much better IMO).
Frank
Another option is to have your datasource field have a default value defined for it in the business service layer. So for example if you are using ADF BC then your field can have a default of adf.currentDate.

Execute a program via SUBMIT, with GUI suppression

I want to expose the functionality of an SAP program (transaction) as a BAPI.
I need to call a report and supply range filters such that the GUI is bypassed.
Does anyone have a working example of the SUBMIT ... WITH ... ABAP construct, or other suggestions on how to accomplish what I need to do?
Here is a working example:
SUBMIT SAPF140
TO SAP-SPOOL "optional"
SPOOL PARAMETERS print_parameters "optional"
WITHOUT SPOOL DYNPRO "optional (hides the spool pop-up)"
VIA JOB jobname NUMBER l_number "optional"
AND RETURN "optional - returns to the calling prog"
WITH EVENT = REVENT
WITH BUKRS IN RBUKRS
WITH BELNR IN lRBELNR
WITH GJAHR IN RGJAHR
WITH USNAM = SY-UNAME
WITH DATUM = SAVE_DATUM
WITH UZEIT = SAVE_UZEIT
WITH DELDAYS = RDELDAYS
WITH KAUTO = 'X'
WITH RPDEST = SAVE_PDEST
WITH TITLE = TITLE.
All the "WITH" statements relates to selection fields on the called program where I use = it is a PARAMETER statement (single field), where I use IN it is a SELECT_OPTIONS statement (range)
Here is a simple example of how to fill a range:
REFRESH lrbelnr.
lrbelnr-sign = 'I'.
lrbelnr-option = 'EQ'.
lrbelnr-low = HBKORM-belnr.
CLEAR lrbelnr-high.
append lrbelnr.
If you want to suppress this functionality as a BAPI you have to wrap the functionality in a Remote Function Call (RFC) module. Just implement a RFC function module. Depending how the report is implemented, it may use ABAP objects, which can also be called from your RFC implementation. Given that case you have a quite good solution. Whenever the report is adjusted, also your BAPI will reflect the changes. In case it's a standard programm from SAP which cannot be wrapped, think about copying it into your namespace and adjusting it. Nevertheless this might give some hassle, when SAP performs an update via Support Package Stack and you won't realize it. The output of the two methods is different. Apart from that, if you want to call it from outside, there is nothing else possible than implementing a RFC module.
A submit report can not return the values outside. Reports are always only for GUI functionalities and not for exchanging data. In case your report uses select options, you somehow have to implement this feature "by hand" in your RFC, as this statements can not be used inside RFC modules. I would generally try to rework the report, modularize it and put the selection information in a central class or maybe another function module wich can be called from the report and your BAPI function module. The filters you are talking about can not be implemented in RFCs automatically. You have to implement those ranges manually. The warning which comes up cannot be suppressed, if you do a RFC call from a remote system and the popup with the warning comes up you'll end with a shortdump. Therefore, you have to rework the report and to re-implement it for your needs.
If you are just looking for bypassing it via job scheduling, create a variant and schedule the report with that variant but I suppose that's not the solution you're looking for.
You can use inbuilt BAPI also just write "Range" and press F4.
You can wrap your report in an BATCH INPUT session and execute it inside a function. The only drawback is that you need to rewrite the BATCH INPUT every time you change the report.