计算月间隔日期.

要求计算一个日期加减月份后的日期,自己写了一个, 后来才发现有系统函数,唉.

*&---------------------------------------------------------------------*
*&      Form  getdate
*&---------------------------------------------------------------------*
*  以当前日期为准,计算月间隔日期
*----------------------------------------------------------------------*
FORM culc_date USING  p_diff_m
      CHANGING p_v_date.

  DATA:v_year_n(4TYPE n,
      v_year_c(4TYPE c,
      v_month_n(2TYPE n,
      v_month_c(2TYPE c,
      v_day_n(2TYPE n,
      v_day_c(2TYPE c,
      v_date_c(8TYPE c,
      v_mod1 TYPE i,
      v_mod2 TYPE i,
      v_mod3 TYPE i.


  v_month_c = sy-datum+4(2).
  v_month_n = v_month_c.

  v_year_c = sy-datum+0(4).
  v_year_n = v_year_c.

  v_day_c = sy-datum+6(2).

  v_month_n = v_month_n - p_diff_m.
  IF v_month_n <= 0.
    v_month_n = v_month_n + 12 + p_diff_m - 1.
    v_year_n = v_year_n - 1.
  ENDIF.

  CASE v_month_n .
    WHEN 4 OR 6 OR  9 OR 11.
      IF v_day_n = 31.
        v_day_n = 30.
      ENDIF.
    WHEN 2.
      v_mod1 = v_year_n MOD  4.
      v_mod2 = v_year_n MOD 400.
      v_mod3 = v_year_n MOD 100.
      IF ( ( v_mod1 = 0 ) OR ( v_mod2 = 0 ) ) AND ( v_mod3 <> 0 ).
        IF ( v_day_n > 29 ).
          v_day_n = 29.
        ENDIF.
      ELSE.
        IF ( v_day_n > 28 ).
          v_day_n = 28.
        ENDIF.
      ENDIF.
  ENDCASE.

  v_year_c = v_year_n.
  v_month_c = v_month_n.

  CONCATENATE v_year_c v_month_c v_day_c INTO v_date_c.
  p_v_date = v_date_c.
ENDFORM.                    " getdate

 

以下是系统函数示便代码:

p_months = -4."前4月,如果为正,则是后面的日期  

CALL FUNCTION 'MONTH_PLUS_DETERMINE'

    EXPORTING       MONTHS        = p_months

       OLDDATE       = p_date

    IMPORTING

       NEWDATE       = p_date.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部