COGNOiSe.com - The IBM Cognos Community

IBM Cognos 10 Platform => Cognos 10 BI => Report Studio => Topic started by: yeluri9 on 05 Dec 2017 10:39:59 AM

Title: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: yeluri9 on 05 Dec 2017 10:39:59 AM
Example:
Currently we are on Cognos 11.0.5 and Oracle 12c DB in windows environment.
Scenario:
We have 5 Individual reports having same prompt page. User wants to pass the prompt values only once and all five report outputs needs to be generated as individually. Out of this five two are Excel outputs and others are pdf output formats.

The Report out has to be Suffixed with give prompt values.
Example, The names of the reports are "Apple" ,"Samsung" and the given prompt values is "2017" then generated outputs has to be Apple_2017.pdf,Samsung_2017.XLS.

Please let me know if there is any solution to achieve this. This is very urgent.
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: New_Guy on 05 Dec 2017 11:44:13 AM
Hi,
First try to convice them that such a requirements need to be planned earlier in the requirements gathering stage, which is a common scenario of forgetting the report delivery requiremnts and that it can be done, if given enough time.
Option 1: Do this is by bursting and save the report output in a shared folder, which you can save with the reportname suffixed by the grouped item and they can pick them up from the shared folder. But with this option the format cannot be mix and matched and the report has to run in both the formats. you can save the report outputs in cognos connection too.
Option 2: Create a reportview for each parameter and name the reportview as desired and run them in the required format and sending the email to them, this option is quick, since you are saying it is urgent.


Good luck
New guy
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: venkat01 on 05 Dec 2017 11:56:44 AM
In cognos 10.2.2 we can achieve this by using report reference option in page explorer launch a new blank report and click on page explorer you can see report reference drag that 5 times and refer your 5 reprts and you can creat variables with reportoutput function such as pdf or spreadsheet and assign this variable to pages as render variable for whichever pages you want to show in pdf or spreadsheet then run this report may be helpful

Sent from my GT-N8000 using Tapatalk

Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: yeluri9 on 05 Dec 2017 12:00:18 PM
Hi

Thanks for your reply.

1. If we do the bursting the first thing is how will we select the prompts dynamically. The requirement is User has select the prompts from the prompt page then all the reports has to run in the background and save as different files.

2. Our prompt page has cascading prompts and there are lot values in the prompts (not in 10's). So we can not create the views for each report and each prompt.

I would really appreciate , if there is any other workaround to achieve this.

Thanks
Venkata
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: New_Guy on 05 Dec 2017 01:31:54 PM
Hi,
Does all the reports have same prompt values except for the phone parameter where you will select apple and samsung? If all the parameters are not same except the phone parameter then bursting is not an option and we have to do some secondary processing and to set it up, it takes some time and the knowledge of outlook vba.
Send us samples like
report 1
Param 1 = A
Param 2 = B
prmPhone = Apple
report 2
Param 1 = C
Param 2 = D
prmPhone = Samsung
One more option is to set the parameters using case statements like
Case when ?prmPhone? = 'Apple' then [columnA] = 'A' for each filter and then burst on the Phone Data item, which might be hard as your report is having too many prompts.
Passing parameters from the prompt page of a report to other reports is not possible, the work around is to have a query and a page for each report and passing the parameters as required which is like combining all 5 reports in one.
You can try Venkat01's suggestion.

Good luck
New guy
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: yeluri9 on 06 Dec 2017 09:33:34 AM
Hi

i think you misunderstood the requirement. The Apple and Samsung are not parameters these are two different reports having the same prompt values like Prompt1, Prompt2, prompt3 ... All the parameters has to pass to each and every report and generated the diifferent outputs for each report.

For Example :

Prompt Page:

Prompt1, Prompt2, Prompt3

Reports:

Report1, Report2, Report3

When user runs the report or job ......  First it has to ask for the above 3 prompts and once finished it should pass the parameters to all the reports and generate different output files (Not all the reports are same output format one could be Excel, others could be PDF or HTML).

Let me know if it is clear.

Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: BigChris on 06 Dec 2017 10:14:10 AM
To the best of my knowledge this isn't possible.

You might be able to do something where you create a stored procedure to write the prompt values to a temporary table in your database, then fire a trigger which would then make a schedule with your reports in it run.
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: CognosPaul on 06 Dec 2017 10:58:58 AM
I've been mulling this over for a few days. It's not a simple request but it is possible with a bit of trickery.

You'll need to use CMS, but it will have to be with async set to manual. You'll need to ping the server every second or so to get the response.

So the request something like (get or post would both work) (note in C11 you have to reference something like /disp/ in there):
http://cognosserver/ibmcognos/cgi-bin/cognosisapi.dll/rds/outputFormat/searchPath/content/folder[@name='test']/report[@name='TEST CMS']/PDF?async=off

The response will be in XML:

<rds:receipt xmlns:rds="http://developer.cognos.com/schemas/rds/types/2">
<rds:status>working</rds:status>
<rds:url>
../../../../../../../rds/sessionOutput/conversationID/i62D5383B35FD4F57BDD8B6875864E571
</rds:url>
<rds:conversationID>i62D5383B35FD4F57BDD8B6875864E571</rds:conversationID>
</rds:receipt>


the rds:url is what you need. Take that string and append the desired name and call that.
http://cognosserver/ibmcognos/cgi-bin/cognosisapi.dll/rds/sessionOutput/conversationID/i62D5383B35FD4F57BDD8B6875864E571/my_report_name_2017_americas.pdf

I don't have the time at the moment to actually write the solution, but hopefully I will sometime within the next few weeks.
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: Boatsman on 15 Dec 2017 01:34:59 PM
Why not to create a table with one row and multiple columns. Each column represents a prompt value. The table can be loaded on demand via ETL. Cognos report will read prompts from the table and make them available to all logically connected reports (ie Apple, Samsung...).

Just my 2c.
Title: Re: Passing One Prompt Page values to Multiple Reports Dynamically
Post by: yeluri9 on 02 Jan 2018 08:45:22 AM
Thanks All ,

Finally did it .


Step 1: Created oracle Function .(Function passing values into table)

Step 2 : Created event Studio ( Passing filter to reports and ever min by event trigger)