找了一下午的SAP自帶的日期常用函數也沒有找到符合自己需要的函數,如果便自己寫了一個。有哪位大俠找到了告訴小弟一聲,下次就不用那麼麻煩自己寫了。寫的函數代碼如下:
FUNCTION zposo_get_work_days.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(B_DATE) TYPE SY-DATUM
*" VALUE(E_DATE) TYPE SY-DATUM
*" EXPORTING
*" REFERENCE(DAYS) TYPE I
*"----------------------------------------------------------------------
DATA:work(1),
p_date LIKE sy-datum.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = b_date
i_date_to = e_date
IMPORTING
e_days = days. "獲取兩日期之間天數,不排除假期
p_date = b_date.
DO days TIMES. "遞增日期並轉換爲工廠日曆判斷是否爲假期
CLEAR work.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = p_date
days = '01'
months = '00'
years = '00'
IMPORTING
calc_date = p_date.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
EXPORTING
date = p_date
factory_calendar_id = 'PS'
IMPORTING
workingday_indicator = work.
IF work NE ''.
days = days - 1.
ENDIF.
ENDDO.
CLEAR work.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE' "轉換爲工廠日曆可判斷開始日期是否爲假期
EXPORTING
date = b_date
factory_calendar_id = 'PS'
IMPORTING
workingday_indicator = work.
IF work NE ''.
days = days - 1.
ENDIF.
IF e_date NE p_date.
CLEAR work.
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE' "判斷結束日期是否爲假期
EXPORTING
date = e_date
factory_calendar_id = 'PS'
IMPORTING
workingday_indicator = work.
IF work NE ''.
days = days - 1.
ENDIF.
ENDIF.
days = days + 1.
ENDFUNCTION.