SAP ABAP中时间的处理(包括日期函数)

 

UTC(UTC, Universal Time Coordinated,通用协调时)时间戳,分为长时间戳和段时间戳,其中长时间戳餐开始的系统的数据元素TIMESTAMPL,类型为DEC(21,7);而段时间戳参考的系统数据元素为TIMESTAMP,类型为DEC(15,0)。下文中如果没有特指,一般都指的短时间戳。

 

1、获取当前时间戳

GET TIME STAMP FIELD timestamp.

获取当前系统的时间戳(这里的时间戳可以是长类型,也可以是短类型)

示例:

GET TIIME STAMP FIELD lv_timestamp.

 

2、使用CONVERT DATE生成指定时间的时间戳

CONVERT DATE date

[TIME time [DAYLIGHT SAVING TIME dst] ]

INTO TIME STAMP time_stamp TIME ZONE tz.

根据指定的日期、时间(可选是否为夏令时)和时区生成时间戳,其中[]圈起来的参数为可选参数,参数解释如下:

date:指定的日期(DATS类型)

time:指定的时间(TIMS类型)

dst:夏令时标志(CHAR1类型)

time_stamp:(时间戳 DEC(15,0)类型)

tz:时区(CHAR06类型)

 

系统预留(系统结构为SYST,程序默认结构为SY)的时间变量有:

    • SY-DATUM:应用服务器日期;
    • SY-UZEIT:应用服务器时间;
    • SY-TZONE:应用服务器时区(INT4);
    • SY-DAYST:夏令时;
    • SY-DATLO:用户本地日期;
    • SY-TIMLO:用户本地时间;
    • SY-ZONLO:用户本地时区(CHAR6)。

 

 

3、使用CONVERT TIME STAMP获取时间戳对应的日期和时间信息

CONVERT TIME STAMP time_stamp

TIME ZONE tz

INTO [DATE date]

[TIME time] [DAYLIGHT SAVING TIME dst].

根据制定的时间戳和时区,获取对应的日期、时间、夏令时信息,其中[]圈起来的参数为可选参数,参数解释如下:

time_stamp:(时间戳 DEC(15,0)类型)

tz:时区(CHAR06类型)

date:指定的日期(DATS类型)

time:指定的时间(TIMS类型)

dst:夏令时标志(CHAR1类型)

调用示范:

DATA: LV_TIMESTAMP TYPE TIMESTAMP VALUE '20190109112320'.

CONVERT TIME STAMP LV_TIMESTAMP TIME ZONE SY-ZONLO

INTO DATE DATA(LV_DATE)

TIME DATA(LV_TIME).

 

4、使用系统函数来进行时间戳来与日期和时间进行转换

系统中有大量的根据日期、时间、时区与时间戳进行互转的函数,只需要在SE37下模糊匹配“*TIMESTAMP*”就可以查到大量的有用函数,以下为常见的几个函数:

  • 根据制定的日期、时间、时区生成时间戳:IB_CONVERT_INTO_TIMESTAMP
  • 根据制定的时间戳和时区转化成日期、时间:IB_CONVERT_FROM_TIMESTAMP
  • 把指定区域的时间戳转化成日期和时间:LTRM_TIMESTAMP_CONVERT_FROM
  • 把指定区域的日期和时间转化成时间戳:LTRM_TIMESTAMP_CONVERT_INTO
  • 把指定的日期和时间转化成时间戳(默认本地时区):ABI_TIMESTAMP_CONVERT_FROM
  • 把指定的时间戳转化成日期和时间(默认本地时区):ABI_TIMESTAMP_CONVERT_INTO
  • 获取指定的远程系统的时间戳:RSWR_TIMESTAMP_GET

实际上,通过查看这些函数的代码可以发现,其实本质最核心的代码还是调用CONVERT语句,因此只需要掌握CONVRT语句即可快速互转时间戳与日期时间信息。

调用示范:

DATA: LV_TIMESTAMP TYPE TIMESTAMP.

CALL FUNCTION 'IB_CONVERT_INTO_TIMESTAMP'

EXPORTING

I_DATLO = SY-DATLO

I_TIMLO = SY-TIMLO

I_TZONE = SY-ZONLO

IMPORTING

E_TIMESTAMP = LV_TIMESTAMP.

 

1,计算当月的最后一天

 

LAST_DAY_OF_MONTHS

2,日期的加减

RP_CALC_DATE_IN_INTERVAL

BKK_ADD_MONTH_TO_DATE



3,通过日期得出那天是星期几

DAY_IN_WEEK



4,判断某天是否是假日

HOLIDAY_CHECK_AND_GET_INFO



5,察看某日期的属性,包括该日期是星期几,第几天(周2=2),是不是公

共假期等,需要输入国家日历。

DAY_ATTRIBUTES_GET



6,计算两个时间的秒数

DELTA_TIME_DAY_HOUR



7,得到当年的财政年

GET_CURRENT_YEAR



8,计算2个日期间的年数,月数,天数

HRVE_SUBTRACT_DAYS_TO_PERIOD



9,将Excel的格式转换为SAP的格式

KCD_EXCEL_DATE_CONVERT



10,计算两个日期间隔的月数

MONTHS_BETWEEN_TWO_DATES



11,计算未来、过去多少天是几号

RP_CALC_DATE_IN_INTERVAL



12,计算两个日期之间的时间

SWI_DURATION_DETERMINE

posted @ 2024-11-25 15:16  小张同学¥1  阅读(2846)  评论(0)    收藏  举报