通過BO定義參數獲取BW結果集的原理:
由於BW是通過query designer 生成abap代碼程序來獲取BW的數據集合,這一點和BO鏈接數據庫是不同的。我們不能像連接數據庫那樣通過webi的語義層建立模型生成SQL語句減少數據庫結果集。我只能將BW中的數據全部遍歷出來在從遍歷出來的結果集去篩選。
所以我們可以利用BW自帶的參數來減少BW生成的結果集。這樣我們又遇到了一個問題,如何通過BW自帶的參數傳參。
下面是一個通過BW自帶的參數傳參的例子:
首先:我們創建以BW作爲數據源的Universe之後,Universe會自動根據BW自帶的參數生成一個filter,我們可以通過這個filter對BW數據集合進行篩選,從而減少BW端生成的結果集。比如我們在BW端要傳一個時間年/月的參數,我們要做的是:
1、更改filter的名字,如圖1
圖1
2、雙擊filter會看到Universe爲BW生成的Where條件,將@Prompt的第一個參數改成OpenDocument傳入時的參數名。
3、去掉“在查詢中強制使用過濾器選項”,否則在通過OpenDocument連接跳轉到webi的頁面時會彈出參數面板而且無法去除。
圖2
圖3
運行刷新時,過濾器會被帶出。
4、保存並導出Universe。
圖4
5、在webi中將所需要的參數過濾條件和Universe帶過來的過濾條件一起放入到過濾區域中。
圖5