query裡如何建立變數

來源:互聯網
上載者:User

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類型的斷點。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.