Thursday, February 21, 2013

BusinessObjects-Infoview freezes when click on "Document List"

You can find several solutions for this dummy situation. I never tried it but IE8 users solve this by setting their zoom ratio to %100 on their browser.

But i faced this problem on IE9 and the zoom trick didn't help me. I solved it by adding "about:blank" to the trusted sites on IE. Hope this helps you too.

BusinessObjects-Merged Dimension Incompatible Object

Merging dimension is always a need by creating webi documents. But by default you can use only dimensions from one query, merged dimensions and the measures. If you want to use dimensions from other query and you can't merge them, you got an error message "Cannot drop here - the object is incompatible". See pic below.


To avoid this problem you have to create a detail variable object and associated it to the merged dimension. In the example above you want to use the phone numbers from Query2. Select the type as "detail" and associated object.


Now you can use this variable with your Query1 dimensions.


To understand why this works with detail please refer to this document:
http://michaelwelter.wordpress.com/2011/04/18/tips-for-merging-dimensions/

BuisnessObjects-Order Prompts in Web Intelligence

If you use prompts which you have defined in your universe, you can't order them through Query panel in your web intelligence document.

To order your prompts you have to use the {user:n} parameter in your filter definition. n is the order number of the prompt and starts from 0.

Here is an example:

On the query panel you see that the order of the prompts is ProductNumber, ProductName, ProductId.

After running the query you will see that the prompt order is like ProductId, ProductName, ProductNumber.

Take a look to the SQL script and you can see the definition of the prompts. They are like;

   ( SalesLT.Product.ProductNumber  IN  @Prompt('Enter values for Productnumber:','A','Productheader\Productnumber',Multi,Free,Persistent,,User:2)  )
   AND
   ( SalesLT.Product.Name  IN  @Prompt('Enter values for Product Name:','A','Productheader\Product Name',Multi,Free,Persistent,,User:1)  )
   AND
   ( SalesLT.Product.ProductID  IN  @Prompt('Enter values for Productid:','N','Productheader\Productid',Multi,Free,Persistent,,User:0)  )

So, all you have to do is change the numbers of the end of your prompts.

Tip: If you parse your filter in universe you will get an error message like this:


 Just ignore it.



Tuesday, November 27, 2012

BusinessObjects-How to find which report is running from database session

Sometimes you see very large SQL expressions which are killing your database systems. With audit reports you can find which reports have run after they finished. But with this little code you can directly find the user, the report and the universe from your database directly on demand.

http://www.dallasmarks.org/blog/2011/10/tips-and-tricks-identifying-business-objects-queries-using-end_sql/

Just put this lines to your universe parameters "END_SQL" line:
/* @Variable('UNVNAME') - @Variable('BOUSER') - @Variable('DOCNAME') */

Thats it. Your query will look like this:


Your dba will appreciate you.

BusinessObjects-How to use Oracle hints in Universe

If you use an Oracle connection in your universe and put the tables from the table browser, you can't use hints with your table. You can use derived tables for use of Oracle hints.

But there is another way put hints to your queries. Just go to your universe. Create an object with your rule. For example:


There is a "1" at the end. Because BO puts a comma sign after each object by generating the sql. Therefore we put a dummy value.

Ok. Lets get a look after we export our universe and use the hint object. (Don't forget to use this object as the FIRST object in Webi)


Friday, June 15, 2012

BusinessObjects-XI 3.1 and Internet Explorer 9

Business Objects XI 3.1 does not support Internet Explorer 9. But there is a very simple workaround.

Go to the folder:
XXXX\Business Objects\Tomcat55\webapps\InfoViewAppActions

Create a page named httperror_400.htm and put the following code in it:

"
<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>Missing Page</title>
</head>

<script type="text/javascript">
function fixUrl(strToReplace){
urlStr = window.document.location.toString();
return urlStr.replace(strToReplace,"");
}
// Comment out the following line with the double slash (//) to debug
window.location=fixUrl("/InfoViewAppActions");
</script>


<body>
<script type="text/javascript">


urlStr = window.document.location.toString();
urlStrNew = fixUrl("/InfoViewAppActions");

document.writeln("Before:<br/>");
document.writeln(urlStr);
document.writeln("<p>");
document.writeln("After:<br/>");
document.write("<a href='" + urlStrNew + "'>");
document.write(urlStrNew);
document.writeln("</a>");

</script>
</body>
</html>
"

Save and close your document. Now go to the folder:
XXXX\Business Objects\Tomcat55\webapps\InfoViewAppActions\WEB-INF\

Open the web.xml file. Search for where error-code 404 is catched and add the following code:


<error-page>
<error-code>400</error-code>
<location>/httperror_400.htm</location>
</error-page>

more information can be found at:
http://www.forumtopics.com/busobj/viewtopic.php?t=170250&amp;postdays=0&amp;postorder=asc&amp;start=43

Tuesday, May 8, 2012

ORACLE-Transpose Column Value to Row in Oracle

You have a table with various columns. One of your column is a text column where the values are seperated with semicolon (";"). You want to transpose this column values into rows.

Generally we use instr function for this kind of purposes. But there is a another way to do this.

Let's suppose that your select statement is like this:

SELECT 'test;tester;siteconfidence;' TXT FROM DUAL
union all
SELECT 'AA;BB;TT;' TXT FROM DUAL

the output:


and our new statement:

WITH T AS(
SELECT 'test;tester;siteconfidence;' TXT FROM DUAL
union all
SELECT 'AA;BB;TT;' TXT FROM DUAL)
SELECT TXT FROM T
MODEL
RETURN UPDATED ROWS
PARTITION BY(ROWNUM RN)
DIMENSION BY (0 POSITION)
MEASURES (TXT,NVL(LENGTH(REGEXP_REPLACE(TXT,'[^;]+','')),0) NB_MOT)
RULES
(TXT[FOR POSITION FROM 1 TO NB_MOT[0] INCREMENT 1] = REGEXP_SUBSTR(TXT[0],'[^;]+',1,CV(POSITION)))

and the output: