计算月间隔日期.

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

  *&---------------------------------------------------------------------*
*&      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.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值