赞
踩
获取输入日期前、后的年、月、日
- 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字段的和。
- 输出结果:
- date:2016.03.31
- flag:X
- days:24
获取输入日期前、后的年、月、日
- 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)
获取输入日期最后一天的日期
- 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.
获取输入日期最后一天的日期
- 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.
获取输入日期最后一天的日期
- DATA date TYPE sy-datum.
- CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
- EXPORTING
- i_date = '20140101' "输入日期
- IMPORTING
- e_date = date. "返回日期:20140131
获取输入日期过去N月的日期
- DATA date TYPE sy-datum.
- CALL FUNCTION 'CCM_GO_BACK_MONTHS'
- EXPORTING
- currdate = '20140101' "输入日期
- backmonths = 3 "过去月数
- IMPORTING
- newdate = date. "返回日期:20131001
获取输入日期后来N月的日期
- DATA date TYPE sy-datum.
- CALL FUNCTION 'MONTH_PLUS_DETERMINE'
- EXPORTING
- months = 3
- olddate = '20140101' "输入日期
- IMPORTING
- newdate = date. "返回日期:20140401
获取输入日期该年的周数,输出格式为:YYYYWW。
- DATA week TYPE scal-week.
- CALL FUNCTION 'DATE_GET_WEEK'
- EXPORTING
- date = '20140101' "输入日期
- IMPORTING
- week = week "返回周数:201401
- EXCEPTIONS
- date_invalid = 1
- OTHERS = 2.
获取输入周数的第一天
- 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
获取查询日期该年的第几周和这周周一、周日日期,该天是星期几/周几(周起始日是周日)
- 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
判断某天是否是假日
- 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.
将标准日期格式转换为内部数字格式
日期的格式与用户参数有关,转化为内部数字格式时,都为: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.
将内部数字日期格式转换为系统日期格式
系统日期格式输出时,与用户参数设置有关
- 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.
- 输出结果:
- date: 20140102
- factorydate: 1531
- workingday: +
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. "期间月份首尾日
month_tab内容明细:
FIMA_DAYS_AND_MONTHS_AND_YEARS 函数
计算两个日期期间的天数
- *不单独计算
- DATA:days TYPE i,
- months TYPE i,
- years TYPE i.
- CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
- EXPORTING
- i_date_from = '20130101'
- i_date_to = '20141001'
- i_flg_separate = ' ' "是否单独计算 若有标识,则返回两日期相差的天数
- IMPORTING
- e_days = days "返回天数:638
- e_months = months "返回月数:21
- e_years = years. "返回年数:2
- * 单独计算
- CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
- EXPORTING
- i_date_from = '20130101'
- i_date_to = '20141001'
- i_flg_separate = 'X' "标识 'X'
- IMPORTING
- e_days = days "返回天数:0
- e_months = months "返回月数:9
- e_years = years. "返回年数:1
比较两个日期大小,返回结果是关系操作符:GT、EQ、LT
- TYPE-POOLS trff .
- DATA log_op TYPE trff_type_c_2.
- CALL FUNCTION 'FIMA_DATE_COMPARE'
- EXPORTING
- i_flg_intraday = ' '
- i_date = '20140101'
- i_time = '000000'
- i_sincl = '0' "计算期间开始的排除标识
- i_sult = ' ' "计算期间开始的月末标识符
- i_comp_date = '20140201' "比较日期
- i_comp_time = '000000' "比较时间
- i_comp_sincl = '0' "计算期间结束的包含标识
- i_comp_sult = ' ' "计算期间结束的月末标识符
- IMPORTING
- e_log_op = log_op. "返回比较结果:LT
两个日期作差,即是两个日期相减,包括当天时间。
- DATA: datediff TYPE p,
- timediff TYPE p,
- earliest TYPE c.
- CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
- EXPORTING
- date1 = '20140101'
- time1 = '240000'
- date2 = '20140101'
- time2 = '083000'
- IMPORTING
- datediff = datediff "返回日期差:0
- timediff = timediff "返回时间差:16
- earliest = earliest "返回时间正负:2,1-负 0-相等 2-正
- EXCEPTIONS
- invalid_datetime = 1
- OTHERS = 2.
12小时制与24小时制的时间转换,例如:07:00:00 pm -> 19:00:00。
- DATA:lv_in_time TYPE tims,
- lv_out_time TYPE tims,
- lv_am_pm TYPE c.
- lv_in_time = '060000'.
- CALL FUNCTION 'HRVE_CONVERT_TIME'
- EXPORTING
- type_time = 'B' " A = 24小时制 -> 12小时制 B = 12小时制 -> 24小时制
- input_time = lv_in_time
- input_am_pm = 'PM'
- IMPORTING
- output_time = lv_out_time
- output_am_pm = lv_am_pm
- EXCEPTIONS
- parameter_error = 1
- OTHERS = 2.
-
- WRITE:/ | Input Time - { lv_in_time }|. " 输出:060000
- WRITE:/ |Output Time - { lv_out_time }|. " 输出:180000
获取所有的月份名字信息
- DATA return_code TYPE sy-subrc.
- DATA month_names TYPE STANDARD TABLE OF t247.
- CALL FUNCTION 'MONTH_NAMES_GET'
- EXPORTING
- language = sy-langu "系统当前语言
- IMPORTING
- return_code = return_code "返回 SY-SUBRC
- TABLES
- month_names = month_names "返回月份信息
- EXCEPTIONS
- month_names_not_found = 1
- OTHERS = 2.
month_names 明细内容:
WEEKDAY_GET 函数
获取所有的星期名字
- DATA return_code TYPE sy-subrc.
- DATA weekday TYPE STANDARD TABLE OF t246.
- CALL FUNCTION 'WEEKDAY_GET'
- EXPORTING
- language = sy-langu "系统当前语言
- IMPORTING
- return_code = return_code "返回 SY-SUBRC
- TABLES
- weekday = weekday "返回星期名字信息
- EXCEPTIONS
- weekday_not_found = 1
- OTHERS = 2.
weekday 内容明细:
DAY_ATTRIBUTES_GET 函数
查看日期属性 包括:该日期是星期几,第几天,是否公共假期等;
公共假期等内容需要输入国家日历。
- DATA: year_of_valid_from TYPE scal-year,
- year_of_valid_to TYPE scal-year,
- return_code TYPE sy-subrc.
- DATA day_attributes TYPE STANDARD TABLE OF casdayattr.
- CALL FUNCTION 'DAY_ATTRIBUTES_GET'
- EXPORTING
- factory_calendar = ' ' "工厂日历ID
- holiday_calendar = ' ' "假期日历ID
- date_from = '20140101' "开始日期
- date_to = '20140110' "截止日期
- language = sy-langu "系统当前语言
- non_iso = ' '
- IMPORTING
- year_of_valid_from = year_of_valid_from
- year_of_valid_to = year_of_valid_to
- returncode = return_code
- TABLES
- day_attributes = day_attributes "返回日期每日属性
- EXCEPTIONS
- factory_calendar_not_found = 1
- holiday_calendar_not_found = 2
- date_has_invalid_format = 3
- date_inconsistency = 4
- OTHERS = 5.
day_attributes 内容明细:
F4_DATE 函数
为 F4 帮助显示日历,弹出日历对话框,供用户选择日期
- PARAMETERS:p1(6) TYPE c.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p1.
- DATA:l_date TYPE sy-datum.
- CALL FUNCTION 'F4_DATE'
- EXPORTING
- date_for_first_month = sy-datum
- IMPORTING
- select_date = l_date "用户选择后返回的日期
- 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.
显示效果:
F4_CLOCK 函数
为 F4 帮助显示时间,弹出时间对话框,供用户选择时间
- PARAMETERS:p1(6) TYPE c.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p1.
- DATA: l_time TYPE sy-uzeit.
- CALL FUNCTION 'F4_CLOCK'
- EXPORTING
- start_time = sy-uzeit
- display = ' '
- IMPORTING
- selected_time = l_time.
效果显示:
POPUP_TO_SELECT_MONTH 函数
为 F4 帮助显示月份:弹出选择年和月的对话框
- PARAMETERS: p_year TYPE mard-lfgja DEFAULT sy-datum+0(4),
- p_month TYPE mard-lfmon.
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_month.
- DATA: actual_month LIKE isellist-month,
- selected_month LIKE isellist-month,
- return_code TYPE sy-subrc.
- CONCATENATE p_year sy-datum+4(2) INTO actual_month.
- CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
- EXPORTING
- actual_month = actual_month "传入年份
- factory_calendar = ' ' "工厂日历 ID
- holiday_calendar = ' ' "假日日历 ID
- language = sy-langu "当前系统语言
- start_column = 8 "弹出框屏幕位置
- start_row = 5 "弹出框屏幕位置
- IMPORTING
- selected_month = selected_month "返回用户输入月份
- return_code = return_code "返回 sy-subrc
- EXCEPTIONS
- factory_calendar_not_found = 1
- holiday_calendar_not_found = 2
- month_not_found = 3
- OTHERS = 4.
效果显示:
POPUP_CALENDAR_SDB 函数
弹出选择周的对话框
- DATA: begin_date TYPE sy-datum,
- end_date TYPE sy-datum.
- CALL FUNCTION 'POPUP_CALENDAR_SDB'
- EXPORTING
- sel_day = 'X' "启用天 选择
- sel_week = 'X' "启用周 选择
- sel_month = 'X' "启用月 选择
- sel_interval = 'X'
- focus_day = sy-datum "默认选择日期
- IMPORTING
- begin_date = begin_date "返回选择周第一天
- end_date = end_date. "返回选择周最后一天
效果显示:
GET_CURRENT_YEAR 函数
获得当前的财政年(Fiscal year)
- DATA: currm TYPE bkpf-monat,
- curry TYPE bkpf-gjahr,
- prevm TYPE bkpf-monat,
- prevy TYPE bkpf-gjahr.
- CALL FUNCTION 'GET_CURRENT_YEAR'
- EXPORTING
- bukrs = '3010' "输入公司代码
- date = sy-datum "输入日期
- IMPORTING
- currm = currm "当前会计期间
- curry = curry "当前会计年度
- prevm = prevm "上期会计期间
- prevy = prevy. "上期会计年度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。