ABAP日期處理函數

來源:互聯網
上載者:User

  *&---------------------------------------------------------------------*
*& Report  ZQWE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZQWE.

DATA: DATE1 LIKE SY-DATUM,
      DATE2 LIKE SY-DATUM,
      DATE3 LIKE SY-DATUM,
      DATE4 LIKE SY-DATUM,
      DATE5 LIKE SY-DATUM,
      DATE6 LIKE SY-DATUM,
      DATE7 LIKE SY-DATUM.

DATA: WEEK1 LIKE SCAL-WEEK,
      WEEK2 LIKE SCAL-WEEK.

DATA: DAYS TYPE I.

DATA: SUND TYPE  P.

  DATA: DATE_L LIKE SY-DATUM,
        TIME_L LIKE SY-UZEIT.

PARAMETERS: GJAHR TYPE GJAHR OBLIGATORY,
                       MONAT TYPE MONAT OBLIGATORY,
                       TIME LIKE SY-UZEIT.

"搜尋協助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR GJAHR.
  CALL FUNCTION 'F4_DATE'
   EXPORTING
     DATE_FOR_FIRST_MONTH               = SY-DATUM
   IMPORTING
     SELECT_DATE                        =  DATE_L
   EXCEPTIONS
     CALENDAR_BUFFER_NOT_LOADABLE       = 1
     DATE_AFTER_RANGE                   = 2
     DATE_BEFORE_RANGE                  = 3
     DATE_INVALID                       = 4
     FACTORY_CALENDAR_NOT_FOUND         = 5
     HOLIDAY_CALENDAR_NOT_FOUND         = 6
     PARAMETER_CONFLICT                 = 7
     OTHERS                             = 8
            .
  IF SY-SUBRC = 0.
    GJAHR = DATE_L+0(4).
  ENDIF.

START-OF-SELECTION.

  "某個月第一天
  CONCATENATE GJAHR MONAT '01' INTO DATE1.

  "某個月最後一天
  CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
    EXPORTING
      DAY_IN            = DATE1
    IMPORTING
      LAST_DAY_OF_MONTH = DATE2
    EXCEPTIONS
      DAY_IN_NO_DATE    = 1
      OTHERS            = 2.

  "兩個日期之間的天數
  DAYS = DATE2 - DATE1.

  "年度,月份,天數,往前往後推
  CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' "從當前的日期往前推3個月得到一個日期
  EXPORTING
    DATE            = DATE2
    DAYS            = 0
    MONTHS          = 1
    SIGNUM          = '+'
    YEARS           = 0
  IMPORTING
    CALC_DATE       = DATE3.

  "根據日期擷取到周數
  CALL FUNCTION 'DATE_GET_WEEK'
    EXPORTING
      DATE         = DATE3
    IMPORTING
      WEEK         = WEEK1
    EXCEPTIONS
      DATE_INVALID = 1
      OTHERS       = 2.

  "擷取該周第一天
  CALL FUNCTION 'WEEK_GET_FIRST_DAY'
    EXPORTING
      WEEK         = WEEK1
    IMPORTING
      DATE         = DATE4
    EXCEPTIONS
      WEEK_INVALID = 1
      OTHERS       = 2.

  "根據周數,擷取下一周周數,星期一與星期天
  CALL FUNCTION 'NEXT_WEEK'
    EXPORTING
      CURRENT_WEEK       =  WEEK1
   IMPORTING
     NEXT_WEEK          = WEEK2
     MONDAY             =  DATE5
     SUNDAY             =     DATE6      .

"根據日期擷取星期幾
"返回為數字,數字與星期X或者monday之類對應關係TABLES: T246.
CALL FUNCTION 'DAY_IN_WEEK'
  EXPORTING
    DATUM         = DATE4
 IMPORTING
   WOTNR         =      SUND     .

WRITE:/ DATE1, DATE2, DAYS, DATE3, WEEK1, DATE4, SUND, WEEK2, DATE5, DATE6.

將日期由內部格式轉換成外部格式,比如'20121020'轉換成'2012.10.20',BDC的時候可能用到

CONVERT_DATE_TO_EXTERNAL

將日期由外部格式轉成內部格式,從螢幕取值的時候可能用到

CONVERT_DATE_TO_INTERNAL 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.