bw裡的特性值在sap裡有時候找不到我們想要的變數那麼必須自己建立,或者在AWB裡建立,這個沒試過.今天嘗試了自己建立變數,並寫了增強代碼.建立變數還是比較好建立,就是需要對建立的變數進行記錄這樣可以方便別的同事,他們在建立報表時不用再自己建立了.交給客戶時也方便他們維護.建立變數的具體步驟可以在BW305裡找到,還有一些參數的設定.注意如果要建立自己可以寫增強變數,必須要選擇user exit.如:
在query designer裡建立完了之後,接著會在cmod裡編寫代碼.發揮了我做abap的優勢.修改會在function module EXIT_SAPLRRS0_001裡進行代碼的編寫.這裡的一些參數不明白具體含義是什麼,不過看他們之前寫的代碼可以基本猜到參數的含義。我建立的變數增強代碼如下:
變數的定義:
ls_range LIKE LINE OF e_t_range,
ls_var_range LIKE LINE OF i_t_var_range,
loc_ls_range LIKE LINE OF e_t_range.
* 會計年度期間變數,在現金流量表裡建立,為得到輸入會計年度的第一個期間
WHEN 'ZCASH001'.
ls_range-opt = 'EQ'.
ls_range-sign = 'I' .
IF i_step = 2.
* 得到輸入會計年度和期間
READ TABLE i_t_var_range INTO ls_var_range WITH KEY
vnam = '0RMA_FIP' .
check sy-subrc = 0.
* 進行計算
zj_year = ls_var_range-low+0(4).
zj_mon = '001'.
CONCATENATE zj_year zj_mon INTO zj_year_mon.
ls_range-low = zj_year_mon.
INSERT ls_range INTO TABLE e_t_range.
ENDIF.
這段代碼的含義是這樣的,ls_range使我們自己定義的工作區,確定好了它的值的時候就可以把它傳遞給系統了。最後一句insert乾的就是這個事情。因為變數是一個range所以頭兩句是一個定義,注意eq,因為我定義的變數是一個單一值。i_step是函數的參數,彥祥給我講解,目前我對它的理解是i_step=1相當於PBO,等於2的時候相當於PAI。因為我建立這個變數視為了得到輸入會計年度的第一個期間,所以我得先得到我輸入的會計年度,read 就是幹這個的。接著進行賦值,剩下的就很好理解了。在總結下My Code含義,首先對我的range變數進行定義,然後讀出我輸入的會計年度,對我的變數進行賦值,在傳遞給系統。
這段代碼還可以對它進行設定斷點,斷點類型設定為http類型的斷點。