ABAP函数篇1 日期函数

自作多情 提交于 2019-12-18 05:37:21

 

  • 1. 日期格式字段检查

data:l_date type ekko-bedat.

l_date = '20080901'.

CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

  EXPORTING

    DATE                            = l_date

 EXCEPTIONS

   PLAUSIBILITY_CHECK_FAILED       = 1

   OTHERS                          = 2

          .

IF SY-SUBRC <> 0.

 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

 

 

  • 2.查询两个日期间的日间间隔

  CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'

    EXPORTING

      I_DATE_FROM          = '20080101'

*     I_KEY_DAY_FROM  =

      I_DATE_TO                = '20090508'

*     I_KEY_DAY_TO        =

*     I_FLG_SEPARATE   = ' '

   IMPORTING

*     E_DAYS                 =

     E_MONTHS            = T_MOTH

*     E_YEARS              =

            .

 

  • 3.查询某月的最后一天

 CALL FUNCTION 'LAST_DAY_OF_MONTHS'

    EXPORTING

      DAY_IN = FSTDAY_NMTH

    IMPORTING

      LAST_DAY_OF_MONTH = LSTDAY_NMTH

    EXCEPTIONS

      DAY_IN_NO_DATE = 1

      OTHERS = 2.

说明:输入一个日期,函数返回该日期所在月的最后一天的日期。

 

**计算某日期的第一天

DATA:  T_DATE TYPE DATE VALUE '20100810'.

T_DATE+6(2) = 01.

说明:将日期的天位置一,即为当月第一天。

 

 

  • 4.根据日期计算另一个日期

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'

   EXPORTING

      DATE            = LSTDAY

      DAYS            = 1

      MONTHS          = 0

      SIGNUM          = '+'

      YEARS           = 0

   IMPORTING

      CALC_DATE       = FSTDAY_NMTH.

说明:输入一个日期,输入间隔的天、月、年,输入运算符,函数返回计算出的日期。

 

  • 5.根据当前时间如何找到上月的第一天和最后一天? 

CALL FUNCTION 'FIMA_DATE_CREATE' 

        EXPORTING 

             I_DATE                  = SY-DATUM 

             I_MONTHS                = '-1' 

             I_SET_LAST_DAY_OF_MONTH = 'X' 

        IMPORTING 

             E_DATE                  = LASTDATE. 

LASTDATE是上个月最后一天。 

FIRSTDAY是上月第一天 

 

 

  • 6.获取两日期之间相距的天数 : 

 

FIMA_DAYS_AND_MONTHS_AND_YEARS 

  DATA: zdays TYPE i.

      CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
        EXPORTING
          i_date_from    = tem-gltrp
          i_date_to      = sy-datum
          i_flg_separate ' '       "
        IMPORTING
          e_days         = zdays.
      zdays = zdays + 1.
      IF zdays <= 7.
        tem-sctime '1周以内'.
      ELSEIF zdays <= 30.
        tem-sctime '1个月以内'.
      ELSEIF zdays <= 90.
        tem-sctime '3个月以内'.
      ELSE.
        tem-sctime '3个月以上'.
      ENDIF

  • 7,将日期转换为工厂日历日期

DATE_CONVERT_TO_FACTORYDATE  "根据日期返回工厂日历日期

 

    CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
      EXPORTING
        factory_calendar_id          = ydm07r-fabkl
        correct_option               = plus
        date                         = rkpf-rsdat
      IMPORTING
        factorydate                  = fdayf1
      EXCEPTIONS
        date_after_range             01
        date_before_range            02
        date_invalid                 03
        factory_calendar_not_found   04
        correct_option_invalid       05
        calendar_buffer_not_loadable 06.

**MESSAGE ID M7

    CASE sy-subrc.
      WHEN 1.
        MESSAGE e523 WITH rkpf-rsdat.
      WHEN 2.
        MESSAGE e524 WITH rkpf-rsdat.
      WHEN 3.
        MESSAGE e525 WITH rkpf-rsdat.
      WHEN 4.
        MESSAGE e526 WITH ydm07r-fabkl.
      WHEN 5.
        MESSAGE e526 WITH ydm07r-fabkl.
      WHEN 6.
        MESSAGE e526 WITH ydm07r-fabkl.
    ENDCASE

 

 

 

本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA. 

人天可谈,终身售后 有活请联系V信:18925782767(问问题免费,欢迎交流!)

本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA. 

人天可谈,终身售后 有活请联系V信:18925782767(问问题免费,欢迎交流!)

本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA. 

人天可谈,终身售后 有活请联系V信:18925782767(问问题免费,欢迎交流!)

 

 

你盯着我

 不关注

 不点赞

 不评论

 

难道是想暗算我 ???

卡忙on,用丘比特的箭暗算我吧!

笔芯准备  I'm ready!!
来不及解释了,快上车!!!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!