今天突然间遇见个需求就是屏幕比如输入
我在程序需要计算当前日期的上个月最后一天。。无奈自己撸代码吧。。
"获取当前日期的上一个月最后一天日期 start...
DATA: last_month LIKE bsid-budat. "上月日期
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
EXPORTING
months = -1 "获取上个月当前日期 所以减1
olddate = allgstid
IMPORTING
newdate = last_month."上个月
DATA: I_DATE LIKE SY-DATUM ." I_DATE 为输入的日期
DATA: E_DATE LIKE SY-DATUM ."E_DATE 为输出日期
DATA: WANT_DATE LIKE SY-DATUM .
I_DATE = last_month.
" PERFORM get_last_m_end.
data: check_year_1 type p.
data: check_year_2 type p.
e_date(4) = i_date(4).
e_date+4(2) = i_date+4(2).
if i_date+4(2) = '01'
or i_date+4(2) = '03'
or i_date+4(2) = '05'
or i_date+4(2) = '07'
or i_date+4(2) = '08'
or i_date+4(2) = '10'
or i_date+4(2) = '12'.
e_date+6(2) = '31'. " 31 days per month
elseif i_date+4(2) = '04'
or i_date+4(2) = '06'
or i_date+4(2) = '09'
or i_date+4(2) = '11'.
e_date+6(2) = '30'. " 30 days per month
elseif i_date+4(2) = '02'. " 闰年的问题
e_date+6(2) = '28'.
check_year_1 = i_date(4) mod 4. " all 4 years is leap year
if check_year_1 = 0.
e_date+6(2) = '29'.
check_year_1 = i_date(4) mod 100." but not all 100 years
check_year_2 = i_date(4) mod 400." excluding all 400 years
if check_year_1 = 0
and check_year_2 <> 0.
e_date+6(2) = '28'.
endif.
endif.
endif.
WANT_DATE = E_DATE."到这就是上个月日期最后一天
我相信你会看懂 除非你是新手~~~~~~~~~