SAP ABAP - 日期和时间



ABAP 隐式引用公历,在世界大部分地区有效。我们可以将输出转换为特定国家/地区的日历。日期是指相对于日历的特定日期、星期或月份。时间是指相对于一天的特定秒或分钟。ABAP 始终以 24 小时格式保存时间。输出可以具有特定国家/地区的格式。日期和时间通常被解释为在当前时区有效的本地日期。

ABAP 提供两种内置类型来处理日期和时间 -

  • D 数据类型
  • T 数据类型

以下是基本格式 -

DATA: date TYPE D, 
      time TYPE T.  
	
DATA: year TYPE I, 
month TYPE I,  
day TYPE I, 
hour TYPE I,  
minute TYPE I, 
second TYPE I.

这两种类型都是固定长度的字符类型,分别采用 YYYYMMDD 和 HHMMSS 的格式。

时间戳

除了这些内置类型之外,其他两种类型TIMESTAMPTIMESTAMPL 在许多标准应用程序表中用于以 UTC 格式存储时间戳。下表显示了 ABAP 中可用的基本日期和时间类型。

序号 数据类型和描述
1

D

一种内置的固定长度日期类型,格式为 YYYYMMDD。例如,值 20100913 表示 2010 年 9 月 13 日。

2

T

一种内置的固定长度时间类型,格式为 HHMMSS。例如,值 102305 表示上午 10:23:05。

3

TIMESTAMP(类型 P – 长度 8 无小数)

此类型用于表示 YYYYMMDDhhmmss 格式的短时间戳。例如,值 20100913102305 表示 2010 年 9 月 13 日上午 10:23:05。

4

TIMESTAMPL(类型 P - 长度 11 小数 7)

TIMESTAMPL 以 YYYYMMDDhhmmss,mmmuuun 的格式表示长时间戳。这里额外的数字“mmmuuun”表示秒的分数。

当前日期和时间

以下代码片段检索当前系统日期和时间。

REPORT YR_SEP_15. 
DATA: date_1 TYPE D. 

date_1 = SY-DATUM. 
Write: / 'Present Date is:', date_1 DD/MM/YYYY. 

date_1 = date_1 + 06. 
Write: / 'Date after 6 Days is:', date_1 DD/MM/YYYY.

以上代码产生以下输出 -

Present Date is: 21.09.2015 
Date after 6 Days is: 27.09.2015

变量 date_1 被赋值为当前系统日期 SY-DATUM 的值。接下来,我们将日期值增加 6。在 ABAP 中的日期计算方面,这意味着我们将日期对象的日期分量增加了 6 天。ABAP 运行时环境足够智能,可以在日期值到达月末时将其翻转。

时间计算类似于日期计算。以下代码使用基本时间算术将当前系统时间增加 75 秒。

REPORT YR_SEP_15. 
DATA: time_1 TYPE T. 
      time_1 = SY-UZEIT. 

Write /(60) time_1 USING EDIT MASK 
'Now the Time is: __:__:__'. 
time_1 = time_1 + 75. 

Write /(60) time_1 USING EDIT MASK 
'A Minute and a Quarter from Now, it is: __:__:__'.

以上代码产生以下输出 -

Now the Time is 11:45:05 
A Minute and a Quarter from Now, it is: 11:46:20

使用时间戳

您可以检索当前系统时间并使用GET TIME STAMP将其存储在时间戳变量中,如下面的代码所示。GET TIME STAMP 语句根据所使用的时间戳数据对象的类型以长格式或短格式存储时间戳。时间戳值使用 UTC 标准进行编码。

REPORT YR_SEP_12. 
DATA: stamp_1 TYPE TIMESTAMP,
 
stamp_2 TYPE TIMESTAMPL. 
GET TIME STAMP FIELD stamp_1. 
Write: / 'The short time stamp is:', stamp_1 

TIME ZONE SY-ZONLO. 
GET TIME STAMP FIELD stamp_2. 
Write: / 'The long time stamp is:', stamp_2 
TIME ZONE SY-ZONLO.

以上代码产生以下输出 -

The short time stamp is: 18.09.2015 11:19:40 
The long time stamp is: 18.09.2015 11:19:40,9370000

在上面的示例中,我们使用 WRITE 语句的 TIME ZONE 附加项显示时间戳。此附加项根据指定时区的规则格式化时间戳的输出。系统字段 SY-ZONLO 用于显示用户首选项中配置的本地时区。

广告