最近發生了一件令我相當老火(貌似重慶人很喜歡用這個詞)的事情:同
一個報表因為不同的帳號執行,最後結果不一樣(這裡不涉及權限相關的內
容),更怪異的是唯獨只有一個帳號不一樣,其他都沒問題。從這一情況來
分析,代碼是沒有問題,應該是用戶設置問題(SU01,你懂的),但具體是
哪個參數就不得而知了。
後來用兩個用戶來Debug代碼,經過一番周折,發現這麼一段FM的調用:
CONVERSION_EXIT_INVDT_INPUT ,代碼如下:
FUNCTION conversion_exit_invdt_input.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(INPUT)
*" EXPORTING
*" VALUE(OUTPUT)
*"----------------------------------------------------------------------
IF input <> space.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = input
IMPORTING
date_internal = datum
EXCEPTIONS
date_external_is_invalid = 1.
IF sy-subrc <> 0.
MESSAGE e102.
ENDIF.
MOVE datum TO chdat.
houtput = '99999999' - chdat. "Zwischenspeichern in houtput, damit
output = houtput. "die führenden Nullen nicht verloren
"gehen.
ELSE.
output = space. " damit bei 'Springen->Anderer Eintrag' auch
ENDIF. " die Eingabe SPACE erlaubt ist
ENDFUNCTION. " (CONVERT_DATE_INPUT wird nicht durchlaufen)
從該FM可以發現,它是將輸入的日期轉化為與用戶設置保持一致的日期,
然後再做字符運算。看到這裡,我才感覺到自己悲催了。所以這裡提醒下,
以後要是再用到類似的代碼,一定要注意用戶的參數設置。從整體來講,特
別是對一個比較成熟的系統來說,一套標準化的作業流程更是難能可貴。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22464099/viewspace-695817/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22464099/viewspace-695817/