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 用於顯示使用者首選項中配置的本地時區。

廣告