OpenDocument URL
First of all, what I always want to prevent is having to create logic in the dashboard to determine on which environment the report needs to be opened and what then the standard open document URL should be.
This can easily be solved by using the relative URL path:
../../../../../OpenDocument/opendoc/openDocument.jsp?IDType=CUID&iDocID=[CUID]&[VariableName1]=[VariableValue1]&[VariableName2]=[VariableValue2]
Instead of the absolute URL path:
http://[servername]:[port]/BOE/OpenDocument/opendoc/openDocument.jsp? sIDType=CUID&iDocID=[CUID]&[VariableName1]=[VariableValue1]&[VariableName2]=[VariableValue2]
[CUID] needs to be replaced by the CUID of the Webi, which is the unique identifier across the tiers in BI4. It can be found in the properties window of the object in BI4.
Passing parameters
Method 1 – Key of value
The easiest way to pass parameters is by using the exact prompt name displayed in the Webi prompt and passing the key of the selected value. If for example the period needs to be passed for the Webi shown below, this should be the parameter:
lsSFiscal Year/Period=2013006
The OpenDocument URL is then as follows:
../../../../../OpenDocument/opendoc/openDocument.jsp?IDType=CUID&iDocID=[CUID]&lsSFiscal Year/Period=2013006
The format of the key of the value can be discovered by refreshing the LOV (List Of Values) and clicking on the key button.
For different variable types, e.g. single value, multiple single value and ranges, the syntax in front of the parameter needs to be different:
Syntax | Used for | Example |
lsS | Single Values | lsSFiscal Year/Period=2013006 |
lsR | Ranges | lsRFiscal Year/Period= [2013001..2013006] |
lsM | Multiple single values | lsMFiscal Year/Period=2013001;2013003;2013005 |
Method 2 – Key and description of value
If just passing the key of the value does not work, the description of the value needs to be passed as well:
lsIFiscal Year/Period=2013006
lsSFiscal Year/Period=JUN 2013
With this combination, the syntax lsI needs to be used for the technical key of the value, for the description it is lsS (the latter depends on the type of variable, e.g. single, multiple, range).
Method 3 – Variable Key
Instead of using the prompt name, the technical name of the variable can be used. This is shown in the prompt screen. In this case it is “XXCUPM003”:
Passing the values is then as follows:
lsSXXCUPM003=2013006
Or
lsIXXCUPM003=2013006
lsSXXCUPM003=JUN 2013
Personally I prefer to use the prompt names since it is the most transparent and straightforward way.
Passing Hierarchy Nodes
For hierarchy nodes the format is [InfoObject]/[Technical Name of the Node], as shown in the example below. Again, the format of the key can always be checked in the LOV.
For some hierarchies just passing the hierarchy key and hierarchy node key will suffice (method 1):
lsSCost Element Hierarchy Name=SV01ZPNT
lsSCost Element Hierarchy Node=0HIER_NODE/SV01TRAIN
If just passing the hierarchy node key does not work, the description of the hierarchy node needs to be passed as well (method 2):
lsSCost Element Hierarchy Name=SV01ZPNT
lsICost Element Hierarchy Node=0HIER_NODE/SV01TRAIN
lsSCost Element Hierarchy Node=2 3 TRAIN Training Costs
But it also accepts passing the key twice:
lsSCost Element Hierarchy Name=SV01ZPNT
lsICost Element Hierarchy Node=0HIER_NODE/SV01TRAIN
lsSCost Element Hierarchy Node=0HIER_NODE/SV01TRAIN
Summary
If it is possible to use method 1 in passing the parameters, I would advise to use that because of transparency. It also works for most of the parameters, it is mainly hierarchy nodes that can be an issue. So if that does not work, I would try the other methods. Keep in mind that one method might work for one WebI document, but not for another. The reason behind it is not clear which makes it a real trial and error process to find out which one does work.
Lastly, always double check if the prompt name or variable technical name is exactly the same as the one used in the parameter. If there is a difference, passing the parameter will not work. Same with the key of the value, it needs to match exactly the key in the LOV. The key of the value might not be how you expected, so always check the LOV to be sure. When all these things are followed, passing to parameter should go successful.