cancel
Showing results for 
Search instead for 
Did you mean: 

Optimized way

Former Member
0 Kudos
72

Hi,

I am facing some performance issue in my xMII application. Below is the detail description.

I created a BLT which calls a BAPI in SAP. This bapi is returning two internal tables ITAB_1 and ITAB_2. I need ITAB_1 for chart and ITAB_2 for GRID.

Using this BLT I created two Xacute Queries.

1. Query_1 calls BLT and ITAB_1 as output parameter

and attached to Display chart.

2. Query_2 calls BLT and ITAB_2 as output parameter

and attached to Grid.

(The reason why I created two Xacute queries is, When I created a query with * as output parameters Dispaly templates are not able to pick up any parameters from BLT)

So now my xxx.htm page contians two applets a chart with Query_1 and a grid with Query_2. When this page is called the same BLT is called twice one for chart and second time for grid.

Here are my questions.

1. Is there any way to avoid repeated calls to same BLT.

2. Is there any way to pass data dynamically to display templates so that we can call BLT once and then passing returned values to display templates.

Let me know if I need to be more detail.

Srinivas.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Srinivas,

If you have two applets, you must call two queries. There isn't a way to share 1 query across multiple applets.

However, you may be able to take advantage of query caching so that the first query will run at normal speed, and the second one will use the cache of the first query. I'm not sure how multiple output parameters effect the caching mechanism.

Also, what if you created just one output parameter that had two Rowsets, one for ITAB_1 and one for ITAB_2. Then, you could definitely use query caching and through the magic of an xsl style sheet chose which rowset to display in each ITAB.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi, Srinivas.

It is a little complicated, but the following approach should work:

1) Create a transaction that calls your BAPI and returns a single XML output parameter. In your transaction, combine the two xMII XML structures for ITAB_1 and ITAB_2 using the UNION action.

2) Create an Xacute query template that points to this transaction

3) Enable query caching for this query template (with some reasonable caching interval, such as two minutes).

4) Create two more BLS transactions that call the Xacute query template as their source of data. Each transaction will have the same "inputs" as the transaction defined in step 1. Each transactino will have a single XML output. Simply call the Xacute Query (with the input parameters appropriately mapped), and before you assign the transaction output, remove either /Rowsets/Rowset[0] or /Rowsets/Rowset[1], to eliminate the table you don't want to send back.

This approach should allow you to leverage the query caching engine to optimize your display page and your back-end data access. The extra step of creating an Xacute query template is required due to the fact that the caching engine is built into the query engine, not directly into the BLS engine.

Best regards,

Rick