时间函数大饱眼福

来源:互联网 发布:单片机lcd显示编程 编辑:程序博客网 时间:2024/05/16 11:51

ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例

计算两个日期间的工作天数,就是剔除了双休日后的天数.( 待考证)
DATE_CONVERT_TO_FACTORYDATE
HR_HK_DIFF_BT_2_DATES


根据当前时间如何找到上月的第一天和最后一天?
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是上月第一天
CONCATENATE LASTDATE+(6) '01' INTO FIRSTDAY.。
当天是当年的第几周
DATE_GET_WEEK
得到该周第一天
WEEK_GET_FIRST_DAY
查找当前月份以前的月份(比如现在是4月份,如果我需要知道6个月之前是哪个月)
CCM_GO_BACK_MONTHS
RP_CALC_DATE_IN_INTERVAL
获取两日期之间天数函数:
FIMA_DAYS_AND_MONTHS_AND_YEARS
取得当月的第一天和最后一天
CONCATENATE sy-datum(6) '01' INTO so_date-low.
CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
   EXPORTING
     i_date = sy-datum
   IMPORTING
     e_date = so_date-high.
so_date-sign = 'I'. so_date-option = 'BT'. APPEND so_date.
RP_CALC_DATE_IN_INTERVAL 年月日加减
DATE_CHECK_PLAUSIBILITY 日期有效性检查
SD_DATETIME_DIFFERENCE 两日期作差
DATE_CONVERT_TO_FACTORYDATE 把输入日期转为工厂日历日期
MONTH_NAMES_GET 获得所有的月和名字
F4_DATE     弹出一个窗口显示一个日历允许用户选择一个日期。
RP_LAST_DAY_OF_MONTHS 获得一个月的最后一天
FIRST_DAY_IN_PERIOD_GET 获得期间首日
LAST_DAY_IN_PERIOD_GET 获得期间末日
DATE_GET_WEEK      返回一个日期所在的周数。
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'"获得两个日期的年数
          EXPORTING
            begda   = gdat
            endda   = sy-datum
          IMPORTING
            c_years = l_age.

关于星期(周)的函数
FM:GET_WEEK_INFO_BASED_ON_DATE
输入参数                        值
DATE                            2008.01.09
输出参数                        值
WEEK                            200802      <----2008年第二周
MONDAY                          2008.01.07 <----这个周周一的日期
SUNDAY                          2008.01.13 <----周日的日期
FM:DAY_IN_WEEK(输入日期是星期几)

输入参数                        值
DATUM                           2008.01.09
输出参数                        值
WOTNR                           3           <----2008-1-9为周三

*更多关于Week的函数请看Function Group:CADA
*弹出选择周的对话框
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_week-low.
PERFORM. getweek CHANGING s_week-low.
FORM. getweek CHANGING p_week .
DATA: begin_date TYPE d .
CALL FUNCTION 'POPUP_CALENDAR_SDB'
       EXPORTING
            sel_week   = 'X'
            focus_day = sy-datum
       IMPORTING
            begin_date = begin_date.
CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
       EXPORTING
            date = begin_date
       IMPORTING
            week = p_week.
ENDFORM.
F4_CLOCK 选择时间
*需求:只有显示年月,但要有日期的search help
PARAMETERS:p1(6)TYPEc.
ATSELECTION-SCREENONVALUE-REQUESTFORp1.
  DATA:l_dateTYPEsy-datum.
  CALLFUNCTION'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.
  IFsy-subrc <>0.
    MESSAGEIDsy-msgidTYPEsy-msgtyNUMBERsy-msgno
            WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
   p1 = l_date+0(6).
* check plausibilty of dates
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
     EXPORTING
          DATE = bkdf-dbbdt.
TIME_CHECK_PLAUSIBILITY   判断是不是时间
GET_CURRENT_YEAR
得到当前的财政年(fiscal year)

察看某日期的属性,包括该日期是星期几,第几天(周2=2),是不是公共假期等,需要输入国家日历。

DAY_ATTRIBUTES_GET
判断某天是否是假日
HOLIDAY_CHECK_AND_GET_INFO
POPUP_TO_SELECT_MONTH 月份选择窗口
比较日期和时间
TYPE-POOLS : TRFF .
DATA : X_LOG_OP        TYPE TRFF_TYPE_C_2 .
          CALL FUNCTION 'FIMA_DATE_COMPARE'
          EXPORTING
            I_FLG_INTRADAY = 'X'
            I_DATE         = SY-DATUM
            I_TIME         = SY-UZEIT
            I_COMP_DATE    = L_MODIFY-MODDATE
            I_COMP_TIME    = L_MODIFY-MODTIME
          IMPORTING
            E_LOG_OP       = X_LOG_OP.
p_months = -4."前4月,如果为正,则是后面的日期

CALL FUNCTION 'MONTH_PLUS_DETERMINE'
    EXPORTING
      MONTHS        = p_months
      OLDDATE       = p_date
    IMPORTING
      NEWDATE       = p_date.

获得某个日期所在的周,获得某周的第一天。

DATE_GET_WEEK 和 WEEK_GET_FIRST_DAY
function date_get_week.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(DATE) LIKE SCAL-DATE
*"       EXPORTING
*"             VALUE(WEEK) LIKE SCAL-WEEK
*"       EXCEPTIONS
*"              DATE_INVALID
*"----------------------------------------------------------------------

函数模块作用:
获得某个日期所在的周。
=============================================
function week_get_first_day.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*"     VALUE(WEEK) LIKE SCAL-WEEK
*" EXPORTING
*"     VALUE(DATE) LIKE SCAL-DATE
*" EXCEPTIONS
*"      WEEK_INVALID
*"----------------------------------------------------------------------

函数模块作用:
获得某周的第一天。
============================================
上述两个函数的功能已经包含在 HR_GBSSP_GET_WEEK_DATES 中了。
从数据表中获得指定语言每周七天的名称,例如中文就是星期一、星期二……星期日,英文就是Sunday、Monday……Saturday。
WEEKDAY_GET
FUNCTION WEEKDAY_GET.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(LANGUAGE) LIKE SY-LANGU DEFAULT SY-LANGU
*"       EXPORTING
*"             VALUE(RETURN_CODE) LIKE SY-SUBRC
*"       TABLES
*"              WEEKDAY STRUCTURE T246
*"       EXCEPTIONS
*"              WEEKDAY_NOT_FOUND
*"----------------------------------------------------------------------

函数模块作用:
从数据表中获得指定语言每周七天的名称,例如中文就是星期一、星期二……星期日,英文就是Sunday、Monday……Saturday。

输入参数:
LANGUAGE:指定语言代码,可以省略,如果不填就是当前登录语言。注意,在调用时如果指定某种特定语言,必须用一个字节的语言代码,例如中文是 1、英文是 E……,而不能用 ZH、EN,语言代码参见表 T002。

输出参数:
RETURN_CODE:返回码,查询数据库获得的返回码。但是由于这个函数会抛出异常,因此返回码的作用不大。

表:
WEEKDAY:结构与透明表 T246 相同,用来存储返回给用户的周日名称。

异常:
WEEKDAY_NOT_FOUND:没有找到周日的描述。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕五个月内裤总是湿有异味怎么办 耳朵里面有个洞老是流水冒浓怎么办 宝宝拉粑粑有臭酸味怎么回事怎么办 老婆晚上回家内裤是湿的尿味怎么办 怀孕五个月下身痒内裤湿怎么办 哺乳期奶水太多经常弄湿衣服怎么办 麻料裙子一坐下就皱怎么办 不小心把答题卡弄皱了怎么办 嘴巴又干又黏又臭怎么办 不小心把红枣核吞了怎么办 小天才电话手表被偷了怎么办 18k金被火烧黑了怎么办 衣服掉色染到别的衣服上怎么办 夏天太阳太毒刚发芽的花种子怎么办 长斑了怎么办 喝玫瑰花茶能祛斑吗 烧纸火纸迷信纸利润太低怎么办 刚买的绣球花花有点蔫怎么办 ZF葡7正常佩戴动能太满怎么办 怀孕初期老婆婆做的菜不好吃怎么办 调节协议已签字不签收调解书怎么办 给晋中苗圃拉了树苗没拿上钱怎么办 多肉旁边长出好多小株怎么办 烤瓷牙制备时颌关系不够怎么办 对门放石头正对我家大门怎么办 合租的室友关门开门特别大声怎么办 三周岁的宝宝小阴唇再次粘连怎么办 小阴唇内侧长了毛囊炎很大疼怎么办 小阴唇上一个黄豆大的硬疙瘩怎么办 梦幻西游手游金币兑换上限了怎么办 手机放裤子口袋里易拔出怎么办 两个月宝宝拉肚子怎么办吃纯母乳 花王泡沫染停留时间太久怎么办 ps右下角的图层图标隐藏了怎么办 压缩包文件太大微信无法传送怎么办 一寸照片的尺寸在ps中怎么办 遇到尖酸刻薄爱数落人的领导怎么办 初中一年级的学生就不想读书怎么办 电脑上所有文件都变得很大怎么办 小孩子手被门缝夹肿了怎么办 阳台挂衣服的单杆掉下来了怎么办 九个月婴儿受凉声音变沙哑怎么办