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

相关推荐
自强的小白6 分钟前
vlan(局部虚拟网)
网络·学习
一只乔哇噻19 分钟前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法
知识分享小能手33 分钟前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
知识分享小能手7 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
茯苓gao9 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾10 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT10 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa10 小时前
HTML和CSS学习
前端·css·学习·html
看海天一色听风起雨落11 小时前
Python学习之装饰器
开发语言·python·学习
speop12 小时前
llm的一点学习笔记
笔记·学习