BW Query替換路徑變數的使用

fog911811發表於2013-01-16

       在BW Query變數處理型別中,有替換路徑這一項,在這裡記錄下我最近使用的一種業務情況,也介紹下它的使用步驟。

業務場景

      DSO裡有以下資料,有一條主流程N2012110107(以下圖中的第一條資料)和四條子流程記錄(以下截圖中的第二、三、四、五條資料記錄),子流程資料記錄是由主流程發起的(很類似採購訂單的頭資訊與行資訊的關係),有其主流程編號和各自的子流程編號,但它們的“流程發起時間”不一樣。

      現在要求獲取子流程,其主流程發起時間是在一定期間(使用者輸入)的,而不管子流程的“流程發起時間”是什麼時候。例如要獲取“流程發起時間”是2011.11子流程資料記錄,那麼以下的所有的子流程記錄都符合條件,因為它們的主流程的“流程發起時間”是2012.11

     

     這種情況不能通過子流程的“流程的發起時間”來做Filter,否則第五條記錄(N201211010704就漏掉了),在DSO再增加一個時間型別的欄位來儲存主流程的“流程的發起時間”,可以實現但很繁瑣且造成資料冗餘。

實現設想

      先獲取符合條件的主流程資料記錄,然後在獲取子流程的資料時只需要找出“流程編號”在前一步的主資料資料記錄的範圍即可。即第二個Query的輸入引數由第一個Query的執行結果決定。這時可以使用替換路徑的變數來實現。 

技術實現

1、建立第一個Query Z08_ZWUE_D01_CQ_035,它是獲取主流程記錄的,其流程發起時間是供使用者輸入。這個是很普通的Query,但要包含有“流程編號”特徵。

2、 建立替換路徑變數,在“流程編號”特徵上建立新變數,處理由選擇“替換路徑”,查詢輸入第一個Query的技術名稱Z08_ZWUE_D01_CQ_035

 

3、建立第二個Query Z08_ZWUE_D01_CQ_025,這個是獲取子流程的資料記錄。只要把此替換路徑變數拉到Filter,或行列限制即可。

4、  執行第二個Query Z08_ZWUE_D01_CQ_025的時候,系統會先執行第一個Query Z08_ZWUE_D01_CQ_035,所以Z08_ZWUE_D01_CQ_035的變數輸入介面會彈出來。

5、  完畢,核查結果,正確。

 

相關文章