Customer Exit變數增強

fog911811發表於2012-10-31

雖然很多文件都提到Customer Exit變數呼叫發生的時機,而且說得也很明白,但實際使用時並有些疑問,還是沒經歷過大風大浪呀。

  •  I_STEP = 1: Call is made directly before variable entry.
  • I_STEP = 2: Call is made directly after variable entry. This step is only executed if the same variable isnot input-ready and could not be filled for I_STEP = 1.
  • I_STEP = 3: In this call, you can check the values of the variables. When an exception (RAISE) is triggered, the variable screen appears again. I_STEP = 2 is then also called again.
  •  I_STEP = 0: The enhancement is not called from the variable screen. The call can originate from the authorization check or from the monitor.

以下幾種情況是平時在工作上遇上的,值得學習與借監:

第一、   給定Default Value,也可允許使用者輸入,這種情況很多,原來我在公司現有增強函式ZXRSRU01中找出這種情況究竟I_STEP是為1還是2,但發現都找到,都是直接寫的,我原以為I_STEP會不會有預設值,對於沒寫明I_STEP的情況是在預設情況下執行。但上網都沒找到相關的資料來佐證我這種想法。

如以下這兩個變數,就是彈出變數輸入框,但有預設值,使用者也可以自行輸入。這時就是沒有判斷I_STEP的,但按我猜想沒有I_STEP相當於I_STEP=1,因為執行Query的變數遇到Customer Exit的變數,系統就進入ZXRSRU01,在這一階段就是變數輸入前,即I_STEP=1,遇到WHEN 'ZCDATEFRM'執行程式碼。

第二、這裡集中看兩個引數,當期和會計年度,因為這裡要顯示上期當期的主營業務收入數。這裡當期和會計年度要預設,上期是通過當期和會計年度來計算而得了。

以下是會計年度和當期的增強程式碼,這裡也沒有判斷I_STEP

以下是上期的增強部分,它是通過使用者輸入後(當然了使用者也可以不自行輸入,留預設值)再來確定值的。這裡就需要I_STEP=2了。

第三、   有三個引數,ZORG_15000, ZCBEGMON10CMLMON2

             其中0CMLMON2SAP EXIT的,獲取上個月也可以輸入。

             至於ZCBEGMON1是通過增強來實現獲取去年當前月。

這裡是當I_STEP=1

ZORG_15000在增強程式碼中找不到相關的,只有在這找到,它相當於給定了初始化值,這樣做不如在Query裡面限制值更直接?它與後面的ZCBEGMON1有什麼關係?

相關文章