WAD通過行選擇過濾另一個ITEM的資料

fog911811發表於2012-07-31

    需求:WAD中有兩部分資料顯示,上面是顯示所有公司的相關資料,下面是使用者選擇某一公司後顯示對應的資料。如當使用者單擊選擇“中國廣東核電集團有限公司”後,第二部分就只顯示此公司的資料。

技術實現:通過WADANANLYSIS_ITEMROW_SELECTION來實現。

實現步驟:

      第一步:建立兩個QueryZ08_ZWUPM_D1_CQ_016Z08_ZWUPM_D1_CQ_017,分別用於顯示上圖第一、二部分的資料所用的。

      因為第二部分的資料是根據使用者所選擇的公司來作出變化的,所以這個Query理應有個待輸入的、基於公司特徵(ZCUPMGSBM)建立的變數,這裡我定義為ZCUPMGSBM01

記住:公司特徵名是ZCUPMGSBM,基於公司建立的變數是ZCUPMGSBM01

 

      第二步:很常規的做法,建立DataProvider、拉出CHART_ITEMANALYSIS_ITEM出來與DataProvider進行繫結。對於一些設定用個列表來顯示會清楚些:

報表部分

DataProvider

關聯的Query

ANALYSIS_ITEM的名字

第一部分

DP_1

Z08_ZWUPM_D1_CQ_016

ANALYSIS_ITEM_1

第二部分

DP_2

Z08_ZWUPM_D1_CQ_017

ANALYSIS_ITEM_2

     這裡不多說CHART_ITEM,因為它的設定和ANALYSIS_ITEM幾乎差不多。

  

    以下就是如何實現ANANLYSIS_ITEMROW_SELECTION

     第三步:在ANANLYSIS_ITEM的屬性有個“行選擇“,這裡我是通過命令實現。

    在行選擇中選擇“SINGLE_WITH_COMMAND, 在啟用操作中選擇”INSTRUCTION“。這兩個選項的意思是使用者當單擊一行資料時,觸發設定的命令。

   

     第四步:SET_SELECTION_STATE_BY_BINDING(通過不同的源設定篩選值)可以實現,設定的引數包括:

       1、  受影響的資料提供者:DP_2

   2、  資料繫結:

        2.1、特徵:ZUPMGSBM

       2.2、繫結型別:Web專案選擇[ITEM_CHARACTERISTIC]

       2.3Web專案:ANALYSIS_ITEM_1

       2.4、特徵:ZUPMGSBM

這個命令的設定是當使用者單擊時,哪個資料提供者會受到影響,哪個特徵的值被繫結,設定好後它會自動生成如下程式碼:

    <bi:SET_SELECTION_STATE_BY_BINDING xmlns:bi="http://xml.sap.com/2005/01/bi/wad/bisp">

  <bi:TARGET_DATA_PROVIDER_REF_LIST type="ORDEREDLIST">

    <bi:TARGET_DATA_PROVIDER_REF index="1" value="DP_2">

    </bi:TARGET_DATA_PROVIDER_REF>

    </bi:TARGET_DATA_PROVIDER_REF_LIST>

  <bi:SELECTION_BINDINGS type="UNORDEREDLIST">

    <bi:SELECTION_BINDING type="COMPOSITE" index="1">

      <bi:CHARACTERISTIC value="ZUPMGSBM" text="公司部門">

      </bi:CHARACTERISTIC>

      <bi:SELECTION_BINDING_TYPE type="CHOICE" value="ITEM_CHARACTERISTIC">

        <bi:ITEM_CHARACTERISTIC type="COMPOSITE">

          <bi:ITEM_REF value="ANALYSIS_ITEM_1">

          </bi:ITEM_REF>

          <bi:CHARACTERISTIC value="ZUPMGSBM" text="公司部門">

          </bi:CHARACTERISTIC>

        </bi:ITEM_CHARACTERISTIC>

      </bi:SELECTION_BINDING_TYPE>

    </bi:SELECTION_BINDING>

  </bi:SELECTION_BINDINGS>

</bi:SET_SELECTION_STATE_BY_BINDING>

 

     第五步:命令SET_VARIABLES_STATE(設定變數值)是將變數與特徵進行繫結,引數包括:

    變數:ZUPMGSBM01

    變數型別:SELECTION_BINDING_TYPE

    繫結型別: ITEM_CHARACTERISTIC

     Web專案:ANALYSIS_ITEM_1

     特徵:ZUPMGSBM

設定好之後生成如下程式碼:

<bi:SET_VARIABLES_STATE xmlns:bi="http://xml.sap.com/2005/01/bi/wad/bisp">

  <bi:VARIABLE_VALUES type="ORDEREDLIST">

    <bi:VARIABLE_VALUE type="COMPOSITE" index="1">

      <bi:VARIABLE value="ZCUPMGSBM01" text="UPM-公司部門">

      </bi:VARIABLE>

      <bi:VARIABLE_TYPE type="CHOICE" value="SELECTION_BINDING_TYPE">

        <bi:SELECTION_BINDING_TYPE type="CHOICE" value="ITEM_CHARACTERISTIC">

          <bi:ITEM_CHARACTERISTIC type="COMPOSITE">

            <bi:ITEM_REF value="ANALYSIS_ITEM_1">

            </bi:ITEM_REF>

            <bi:CHARACTERISTIC value="ZUPMGSBM" text="公司部門">

            </bi:CHARACTERISTIC>

          </bi:ITEM_CHARACTERISTIC>

        </bi:SELECTION_BINDING_TYPE>

      </bi:VARIABLE_TYPE>

    </bi:VARIABLE_VALUE>

  </bi:VARIABLE_VALUES>

</bi:SET_VARIABLES_STATE>

 

     第六步:執行測試,報表會彈出要使用者選擇“公司部門“,這個時候是肯定需要的,還沒到實現行選擇的功能的時候,但報表又有變數所以在這個時候是要使用者手動選擇的。

     第七步:報表顯示了,第二部分報表也能顯示原來選擇公司的資料。但單擊第一部分的ANALYSIS_ITEM_1的行時,報表就彈回到變數輸入介面,要使用者重新選擇公司部門。

     按理說,我設定了這兩個變數就能實現的了,設定了觸發的控制元件,也設定了傳遞變數值。邏輯沒錯呀,我一直以為自己是不是在以上的設定在哪個地方搞錯的。但設定就那麼幾個我真是看N百遍也不知問題出在哪裡?這個問題差不多折騰了我兩個星期。

     無意間在網上看到一往篇文章是關於Query跳轉的,有點啟發。

 

     第八步:用RSBBS來設定SENDERZ08_ZWUPM_D1_CQ_016RECEICERZ08_ZWUPM_D1_CQ_017.

 

      第九步:執行報表再測試。OK,需求實現。

      我總覺得在RSBBS是有點畫蛇添足,因為兩個命令已實現了相關的功能,為什麼還要在RSBBS設計BW報表的跳轉呢?

      有哪位達人有什麼高見的,請暢所欲言,一起學習。

 

 

 

相關文章