找了一下午的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.