日期時間 FUNCTION

*----------------------------
*時間差
*----------------------------
SD_DATETIME_DIFFERENCE

L_TO_TIME_DIFF

*----------------------------
*取當前時間
*----------------------------
GET TIME

GET RUN TIME FIELD (INT)
"計算時間差 --
	convert time stamp t2 time zone sy-zonlo into date dat2 time tim2.


  call function 'SWI_DURATION_DETERMINE'
    exporting
      start_date = dat1
      end_date   = dat2
      start_time = tim1
      end_time   = tim2
    importing
      duration   = runtime.  "秒


  call function 'MONI_TIME_CONVERT'
    exporting
      ld_duration        = runtime
    importing
      lt_output_duration = outtime. "格式化爲 HH:MM:SS
*----------------------------
*日期
*----------------------------
*日期有效性
DATE_CHECK_PLAUSIBILITY

*根據日期返回工廠日曆日期:輸入三個參數,日期、工廠日曆版本和糾正選項,其中糾正選項爲“+”,
*則當輸入日期是休息日時,返回其後的第一個工作日,糾正選項爲“-”,則當輸入日期時休息日時,返回其前最後一個工作日。
*輸出三個參數,日期、工廠日期和糾正結果,其中日期就是輸入值、工廠時期時計算獲得的日期、糾正結果的意義與糾正選項相同,
*但是如果輸入日期就是工作日,則糾正結果爲空。
DATE_CONVERT_TO_FACTORYDATE


*向指定的日期上增加若干個月,並返回結果日期
*如果 MONTHS 指定爲負數,則相當於在原始日期基礎上減去若干個月。
*如果 MONTHS 指定爲小數,則按照四捨五入的方法轉換成整數後再計算,不會把小數再轉換成天。
*對於日期爲月末的情況,該函數會自動轉換爲目標月的月末日期。
*例如,2008-03-31 加上一個月就是 2008-04-30,減去一個月就是 2008-02-29。
BKK_ADD_MONTH_TO_DATE


*獲得一個月的最後一天
RP_LAST_DAY_OF_MONTHS
LAST_DAY_OF_MONTHS

*上月最後一天
CALL FUNCTION 'FIMA_DATE_CREATE'
  EXPORTING
    i_date                  = sy-datum
    i_months                = '-1'
    i_set_last_day_of_month = 'X'
  IMPORTING
    e_date                  = zdate3.

*檢查日期合法性
DATE_CHECK_PLAUSIBILITY

*判斷某天是否是假日 
HOLIDAY_CHECK_AND_GET_INFO

*年月選擇
POPUP_TO_SELECT_MONTH

*內外碼轉換
CONVERT_DATE_TO_EXTERNAL
CONVERT_DATE_TO_INTERNAL

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
函數名稱 (內頁-點擊名稱可查看操作)	函數說明	備註
FIMA_DATE_CREATE
RP_CALC_DATE_IN_INTERVAL

獲取查詢日期前、後的年、月、日	 
LAST_DAY_OF_MONTHS
RP_LAST_DAY_OF_MONTHS

BKK_GET_MONTH_LASTDAY

獲取查詢日期最後一天的日期	 
CCM_GO_BACK_MONTHS	獲取查詢日期過去N月的日期	 

MONTH_PLUS_DETERMINE	獲取查詢日期未來N月的日期	 
 	 	 
DATE_GET_WEEK	獲取查詢日期該年的第幾周	輸出格式:YYYYWW
WEEK_GET_FIRST_DAY	獲取查詢週數的第一天	 
DAY_IN_WEEK	獲取查詢日期該天是星期幾	 
GET_WEEK_INFO_BASED_ON_DATE	獲取查詢日期該年的第幾周和這週週一、週日日期	周起始日是週一
HR_GBSSP_GET_WEEK_DATES	獲取查詢日期該年的第幾周和這週週一、週日日期,該天是周幾	周起始日是週日
 	 	 
DATE_CHECK_PLAUSIBILITY	檢查日期有效性	SY-SUBRC = 0 有效
TIME_CHECK_PLAUSIBILITY	檢查時間有效性	SY-SUBRC = 0 有效
HOLIDAY_CHECK_AND_GET_INFO	判斷某天是否是假日	 
 	 	 
CONVERT_DATE_TO_INTERNAL	將標準日期格式轉換爲數字格式	 
CONVERT_DATE_TO_EXTERNAL	將數字日期格式轉換爲系統日期格式	 
DATE_CONVERT_TO_FACTORYDATE	將查詢日期轉爲工廠日曆日期	 
 	 	 
HR_99S_INTERVAL_BETWEEN_DATES	獲取兩日期間的:天數、週數、月數、年數、期間月份開始截止日期	 
FIMA_DAYS_AND_MONTHS_AND_YEARS	計算兩日期之間間隔的天數	 
FIMA_DATE_COMPARE	比較兩個日期大小	返回:GT、EQ、LT等
SD_DATETIME_DIFFERENCE	兩日期的時間差	 
HRVE_CONVERT_TIME	時間:12/24小時制轉換	 
 	 	 
MONTH_NAMES_GET	獲取所有的月份名字	 
WEEKDAY_GET	獲取所有的星期名字	 
DAY_ATTRIBUTES_GET	查看日期屬性 包括:該日期是星期幾,第幾天(周2=2),是不是公共假期等	需要輸入國家日曆
 	 	 
F4_DATE	彈出日曆對話框,供用戶選擇日期	 
F4_CLOCK	彈出時間對話框,供用戶選擇時間	 
 	 	 
POPUP_TO_SELECT_MONTH	彈出選擇年和月的對話框	 
POPUP_CALENDAR_SDB	彈出選擇周的對話框	 
 	 	 
GET_CURRENT_YEAR	獲得當前的財政年(fiscal year)	 
FIRST_DAY_IN_PERIOD_GET	獲得期間首日	 
LAST_DAY_IN_PERIOD_GET	獲得期間末日	 
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
FIMA_DATE_CREATE 函數

獲取輸入日期前、後的年、月、日

DATA: date TYPE vtbbewe-dvalut,
      flag TYPE trff_flg,
      days TYPE trff_type_n_2.
 
CALL FUNCTION 'FIMA_DATE_CREATE'
  EXPORTING
    i_date                  = '20140101' "輸入日期
    i_flg_end_of_month      = ' '
    i_years                 = 2       "兩年後的日期. 即輸入日期的年加2所得日期,可爲負數,表示前兩年
    i_months                = 1       "一個月後的日期.即輸入日期的月加1所得日期,可爲負數,表示前一個月
    i_days                  = 23      "23天后的日期。可爲負數,表示23天前的日期
    i_calendar_days         = 10      "10天后的日曆。同I_DAYS參數。
    i_set_last_day_of_month = 'X'     "返回的日期爲當前月份的最後一天
  IMPORTING
    e_date                  = date    "返回的日期爲當前月份的最後一天
    e_flg_end_of_month      = flag    "如果輸入參數I_SET_LAST_DAY_OF_MONTH設置’X’了,則返回值爲’X’。
    e_days_of_i_date        = days.   "返回輸入日期的i_calendar_days字段與I_DAYS字段的和。
--------------------------------------------------------------------------------------------------------
RP_CALC_DATE_IN_INTERVAL 函數

獲取輸入日期前、後的年、月、日

DATA calc_date TYPE p0001-begda.
 
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
  EXPORTING
    date      = '20140101'    "輸入日期
    days      = 10            "天數
    months    = 0             "月數
    signum    = '+'           "+號:表示 N天/月/年後的日期, -號:表示過去的日期
    years     = 0             "年數
  IMPORTING
    calc_date = calc_date.    "返回結果:10天后的日期(2014.01.11)
--------------------------------------------------------------------------------------------------------
LAST_DAY_OF_MONTHS 函數

獲取輸入日期最後一天的日期

DATA date TYPE sy-datum.
 
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
  EXPORTING
    day_in            = '20140101'     "輸入日期
  IMPORTING
    last_day_of_month = date           "返回日期:20140131
  EXCEPTIONS
    day_in_no_date    = 1
    OTHERS            = 2.
--------------------------------------------------------------------------------------------------------
RP_LAST_DAY_OF_MONTHS 函數

獲取輸入日期最後一天的日期

DATA date TYPE sy-datum.
 
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
  EXPORTING
    day_in            = '20140101'     "輸入日期
  IMPORTING
    last_day_of_month = date           "返回日期:20140131
  EXCEPTIONS
    day_in_no_date    = 1
    OTHERS            = 2.
--------------------------------------------------------------------------------------------------------
BKK_GET_MONTH_LASTDAY 函數

獲取輸入日期最後一天的日期

DATA date TYPE sy-datum.
 
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
  EXPORTING
    i_date = '20140101'   "輸入日期
  IMPORTING
    e_date = date.        "返回日期:20140131
--------------------------------------------------------------------------------------------------------
CCM_GO_BACK_MONTHS 函數

獲取輸入日期過去N月的日期

DATA date TYPE sy-datum.
 
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
  EXPORTING
    currdate   = '20140101'   "輸入日期
    backmonths = 3            "過去月數
  IMPORTING
    newdate    = date.        "返回日期:20131001
--------------------------------------------------------------------------------------------------------
MONTH_PLUS_DETERMINE 函數

獲取輸入日期後來N月的日期

DATA date TYPE sy-datum.
 
CALL FUNCTION 'MONTH_PLUS_DETERMINE'
  EXPORTING
    months  = 3
    olddate = '20140101'   "輸入日期
  IMPORTING
    newdate = date.        "返回日期:20140401
--------------------------------------------------------------------------------------------------------
DATE_GET_WEEK 函數

獲取輸入日期該年的週數,輸出格式爲:YYYYWW。

DATA week TYPE scal-week.
 
CALL FUNCTION 'DATE_GET_WEEK'
  EXPORTING
    date         = '20140101'   "輸入日期
  IMPORTING
    week         = week         "返回週數:201401
  EXCEPTIONS
    date_invalid = 1
    OTHERS       = 2.
--------------------------------------------------------------------------------------------------------
WEEK_GET_FIRST_DAY 函數

獲取輸入週數的第一天

DATA date TYPE sy-datum.
 
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
  EXPORTING
    week         = '201401'   "輸入周
  IMPORTING
    date         = date       "返回該周第一天(週一):2013.12.30
  EXCEPTIONS
    week_invalid = 1
    OTHERS       = 2.
--------------------------------------------------------------------------------------------------------
DAY_IN_WEEK 函數

獲取輸入日期該天是星期幾/周幾

DATA wotnr TYPE p.
 
CALL FUNCTION 'DAY_IN_WEEK'
  EXPORTING
    datum = '20140101'  "輸入日期
  IMPORTING
    wotnr = wotnr.      "返回:3 =》星期三/週三
--------------------------------------------------------------------------------------------------------
GET_WEEK_INFO_BASED_ON_DATE 函數

獲取輸入日期該年的週數和這週週一、週日日期(周起始日是週一)

DATA: week   TYPE scal-week ,
      monday TYPE sy-datum,
      sunday TYPE sy-datum.
 
CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
  EXPORTING
    date   = '20140101'
  IMPORTING
    week   = week       "返回週數:201401
    monday = monday     "返回週一日期:2013.12.30
    sunday = sunday.    "返回週日日期:2014.01.05
--------------------------------------------------------------------------------------------------------
HR_GBSSP_GET_WEEK_DATES 函數

獲取查詢日期該年的第幾周和這週週一、週日日期,該天是星期幾/周幾(周起始日是週日)

DATA: sunday      TYPE sy-datum,
      saturday    TYPE sy-datum,
      day_in_week TYPE i,
      week_no     TYPE p08_weekno.
 
CALL FUNCTION 'HR_GBSSP_GET_WEEK_DATES'
  EXPORTING
    p_pdate       = '20140101'    "輸入日期
  IMPORTING
    p_sunday      = sunday        "返回本週開始日期(週日):2013.12.29
    p_saturday    = saturday      "返回本週結束日期(週六):2014.01.04
    p_day_in_week = day_in_week   "返回該日星期幾/周幾: 4 => 星期三/週三
                                  "(這週中的第4天,由於開始日期是週日,故需要-1)
    p_week_no     = week_no.      "返回本週開始日期的週數:201352
--------------------------------------------------------------------------------------------------------
HOLIDAY_CHECK_AND_GET_INFO 函數

判斷某天是否是假日

DATA holiday TYPE c.
DATA attributes TYPE SORTED TABLE OF thol.
 
CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO'
  EXPORTING
    date                         = '20140201'  "輸入日期:春節
    holiday_calendar_id          = 'ZS'        "假日日曆 ID
    with_holiday_attributes      = ' '         "屬性標識
  IMPORTING
    holiday_found                = holiday     "輸出是否爲假日的標記  輸出結果:X
  TABLES
    holiday_attributes           = attributes  "輸出該假日的屬性
                                               "若WITH_HOLIDAY_ATTRIBUTES參數 = X,則會帶出屬性記錄
  EXCEPTIONS
    calendar_buffer_not_loadable = 1
    date_after_range             = 2
    date_before_range            = 3
    date_invalid                 = 4
    holiday_calendar_id_missing  = 5
    holiday_calendar_not_found   = 6
    OTHERS                       = 7.
--------------------------------------------------------------------------------------------------------
CONVERT_DATE_TO_INTERNAL 函數

將標準日期格式轉換爲內部數字格式

日期的格式與用戶參數有關,轉化爲內部數字格式時,都爲:YYYYMMDD.

DATA date TYPE sy-datum.
 
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
  EXPORTING
    date_external            = '2014.01.01' "當前用戶日期格式:YYYY.MM.DD
    accept_initial_date      = ' '
  IMPORTING
    date_internal            = date         "輸出20140101
  EXCEPTIONS
    date_external_is_invalid = 1
    OTHERS                   = 2.
--------------------------------------------------------------------------------------------------------
CONVERT_DATE_TO_EXTERNAL 函數

將內部數字日期格式轉換爲系統日期格式

系統日期格式輸出時,與用戶參數設置有關

DATA date2(10) TYPE c.
 
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
  EXPORTING
    date_internal            = '20140101'  
  IMPORTING
    date_external            = date2     "根據用戶日期格式參數輸出:YYYY.MM.DD
  EXCEPTIONS
    date_internal_is_invalid = 1
    OTHERS                   = 2.
--------------------------------------------------------------------------------------------------------
DATE_CONVERT_TO_FACTORYDATE 函數

根據日期返回工廠日曆日期

DATA: date        TYPE scal-date,
      factorydate TYPE facdate,
      workingday  TYPE scal-indicator.
 
CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'
  EXPORTING
    correct_option               = '+'            "表示工作日計算方式的標記
    date                         = '20140101'     "必須轉換的日期
    factory_calendar_id          = 'ZS'           "工廠日曆ID
  IMPORTING
    date                         = date           "工廠日曆日期
    factorydate                  = factorydate    "指定日曆中的工作日數
    workingday_indicator         = workingday     "表示某日期是否爲工作日的標誌
  EXCEPTIONS
    calendar_buffer_not_loadable = 1
    correct_option_invalid       = 2
    date_after_range             = 3
    date_before_range            = 4
    date_invalid                 = 5
    factory_calendar_not_found   = 6
    OTHERS                       = 7.
--------------------------------------------------------------------------------------------------------
HR_99S_INTERVAL_BETWEEN_DATES 函數

獲取兩個日期期間的:天數、週數、月數、年數;

包括期間月份的開始(月份第一天日期)、截止日期(月份最後一天日期)

TYPE-POOLS: p99sg.
DATA: days   TYPE i,
      weeks  TYPE i,
      months TYPE i,
      years  TYPE i.
 
DATA: month_tab TYPE STANDARD TABLE OF p99sg_month_tab_row.
 
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
  EXPORTING
    begda     = '20130101'    "開始日期
    endda     = '20140101'    "截止日期
  IMPORTING
    days      = days          "返回天數:266
    c_weeks   = weeks         "返回週數:52
    c_months  = months        "返回月數:12
    c_years   = years         "返回年數:1
    month_tab = month_tab.    "期間月份首尾日
--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章