1. 程式人生 > >BW 業務模型關系與主數據取數

BW 業務模型關系與主數據取數

業務 tab 理解 ima 邏輯 做了 style 易懂 維度表

  在接到業務需求之後,我認為重要的是理清楚自己該做什麽。來實現業務。由於不了解業務,還是走了很多彎路。本可以不用這麽做,還是這麽做了。自然你最傻瓜的按照用戶的方式去實現是沒有問題的。

會使後面的人難以維護,可以精簡的流程也變的復雜。冗余很多。那目前還不是我的層次,達不到。只能按照用戶的想法去做。

  因為是BW ON HANA 系統。能在BW 裏將數據處理好 就在BW, 在HANA 視圖裏做簡單的JOIN 。

  WEBI 裏復雜的邏輯判斷做展示。沒有什麽絕對。看那個好做。我所掌握大體如此。

  BW 裏是我的弱項(業務以及ABAP)。 而HANA 的帶參數的存儲過程讓我也挺苦惱的。(主要沒有業務,或者輪不到我上手寫存儲過程)

接到業務報表需求:

將業務的陳述的邏輯,轉為數據庫關系,或計算機能理解的語言。

1   習慣用VISIO ,理清楚LOGIC。

   畫出每個DSO主表或者主數據表。相互涉及的關系。表關系,通過什麽字段(主鍵或者維度字段)關系起來。

   尋找解決的方法。

  (這是個DEMO)很醜,我知道,可是有用

  技術分享圖片

純BW 取數由於有主數據,導航屬性。制作成QUERY 時可以直接拖出來使用。不會存在已經 經銷商代碼,還要在DSO取出明細的經銷商名稱的維度顯示(一般做導航屬性)。

可是HANA經常會碰到這樣的情況,你取這DSO的激活表,可它並不會帶出導航屬性給你 。

那只能在HANA裏做主數據(維度表),要是沒做。只能反復JOIN 。不麻煩,影響美觀,而且沒必要。 最好還是在BW裏清洗一遍。處理完整。

第一種方式取主數據表,單個值。

* 獲取經銷商名稱

DATA : g_/BIC/Z0JXSDM  TYPE  /BIC/PZ0JXSDM-/BIC/Z0JXSDM .

LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .

        CLEAR g_/BIC/Z0JXSDM .
        g_/BIC/Z0JXSDM = <RESULT_FIELDS>-/BIC/Z0JXSDM .

       SELECT SINGLE /BIC/Z0JXSMC FROM  /BIC/PZ0JXSDM
       INTO <RESULT_FIELDS>-/BIC/Z0JXSMC
       
WHERE /BIC/Z0JXSDM = g_/BIC/Z0JXSDM . ENDLOOP.

第二種獲取DSO表中的值。

 SELECT /BIC/ZMATERIAL CALQUARTER /BIC/ZSFZR /BIC/ZSFJRDGMB FROM
/BIC/AZCZJTO2600
  INTO CORRESPONDING FIELDS OF TABLE IT_ZCZJTO26 FOR ALL ENTRIES IN
  RESULT_PACKAGE
  WHERE /BIC/ZMATERIAL = RESULT_PACKAGE-/BIC/ZMATERIAL  AND  CALQUARTER
  =
  RESULT_PACKAGE-CALQUARTER.

*循環將內表裏IT_ZCZJTO26 分配給工作區 WA_ZCZJTO26 。做了分配
 LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS> .
    READ TABLE IT_ZCZJTO26 INTO WA_ZCZJTO26
    WITH KEY /BIC/ZMATERIAL = <RESULT_FIELDS>-/BIC/ZMATERIAL CALQUARTER
    =
    <RESULT_FIELDS>-CALQUARTER.
*執行成功 ,結果是否折讓等於工作區 WA_ZCZJTO26-/BIC/ZSFZR.,是/BIC/AZCZJTO2600 裏的字段。
    IF sy-subrc = 0.
      <RESULT_FIELDS>-/BIC/ZSFZR = WA_ZCZJTO26-/BIC/ZSFZR.
      <RESULT_FIELDS>-/BIC/ZSFJRDGMB = WA_ZCZJTO26-/BIC/ZSFJRDGMB.
    ENDIF.
 ENDLOOP.

這就是我所知道的兩種方式了。 都是比較簡單易懂,取數操作。

其次充分應用BW DSO 轉換模型,過濾 。很多讀取主數據,讀取DSO,公式方式,思考是不是一定要寫這ABAP。(能不寫就不寫,後人維護交接工作難受。)

BW 業務模型關系與主數據取數