SAP ABAP基础语法-日期函数(九)

abap日期相关

日期的加减:

复制代码
 BKK_ADD_MONTH_TO_DATE

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

sql 复制代码
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.

当天是当年的第几周

sql 复制代码
DATE_GET_WEEK

得到该周第一天

sql 复制代码
WEEK_GET_FIRST_DAY

查找当前月份以前的月份(比如现在是4月份,如果我需要知道6个月之前是哪个月)

sql 复制代码
CCM_GO_BACK_MONTHS

RP_CALC_DATE_IN_INTERVAL

获取两日期之间天数函数

sql 复制代码
FIMA_DAYS_AND_MONTHS_AND_YEARS

取得当月的第一天和最后一天

sql 复制代码
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.

年月日加减

sql 复制代码
RP_CALC_DATE_IN_INTERVAL

日期有效性检查

sql 复制代码
DATE_CHECK_PLAUSIBILITY

两日期作差

sql 复制代码
SD_DATETIME_DIFFERENCE 

把输入日期转为工厂日历日期

sql 复制代码
DATE_CONVERT_TO_FACTORYDATE

获得所有的月和名字

sql 复制代码
MONTH_NAMES_GET

弹出一个窗口显示一个日历允许用户选择一个日期

sql 复制代码
F4_DATE

获得一个月的最后一天

sql 复制代码
RP_LAST_DAY_OF_MONTHS

获得期间首日

sql 复制代码
FIRST_DAY_IN_PERIOD_GET 

获得期间末日

sql 复制代码
LAST_DAY_IN_PERIOD_GET

返回一个日期所在的周数

sql 复制代码
DATE_GET_WEEK

获得两个日期的年数

sql 复制代码
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'

          EXPORTING

            begda   = gdat

            endda   = sy-datum

          IMPORTING

            c_years = l_age.

关于星期(周)的函数

sql 复制代码
FM:
GET_WEEK_INFO_BASED_ON_DATE

输入参数                        值

DATE                            2008.01.09

输出参数                        值

WEEK                            200802     

MONDAY                          2008.01.07

SUNDAY                          2008.01.13

FM:
DAY_IN_WEEK(输入日期是星期几)

输入参数                        值

DATUM                           2008.01.09

输出参数                        值

WOTNR                           3         

*更多关于Week的函数请看Function Group:CADA

*弹出选择周的对话框

sql 复制代码
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

sql 复制代码
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.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
   p1 = l_date+0(6).
* check plausibility of dates
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
     EXPORTING
          DATE = bkdf-dbbdt.

判断是不是时间

sql 复制代码
TIME_CHECK_PLAUSIBILITY  

得到当前的财政年(fiscal year)

sql 复制代码
GET_CURRENT_YEAR

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

sql 复制代码
DAY_ATTRIBUTES_GET

判断某天是否是假日

sql 复制代码
HOLIDAY_CHECK_AND_GET_INFO

月份选择窗口

sql 复制代码
POPUP_TO_SELECT_MONTH

比较日期和时间

sql 复制代码
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

function date_get_week.

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" VALUE(DATE) LIKE SCAL-DATE

*" EXPORTING

*" VALUE(WEEK) LIKE SCAL-WEEK

*" EXCEPTIONS

*" DATE_INVALID

*"----------------------------------------------------------------------

获得某周的第一天

WEEK_GET_FIRST_DAY

=============================================

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:没有找到周日的描述。

获得一年的中的周数,或者最后一周

Bkk_get_lastweek_of_year

可以直接得到往前往后的年月

HR_CALC_MONTH

相关推荐
Chef_Chen3 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电3 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_4 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby4 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby4 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA6 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽6 小时前
git 学习
git·学习
Moonnnn.9 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr79 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习
fen_fen9 小时前
学习笔记(26):线性代数-张量的降维求和,简单示例
笔记·学习·算法