SAP ABAP 日期和時(shí)間

2018-12-30 09:32 更新

ABAP毫不保留地引用了公歷日歷,在世界大部分地區(qū)有效。 我們可以將輸出轉(zhuǎn)換為特定國家/地區(qū)的日歷。 日期是指定到關(guān)于日歷的精確日,周或月的時(shí)間。 時(shí)間被指定為相對于一天的精確秒或分鐘。 ABAP總是以24小時(shí)格式節(jié)省時(shí)間。 輸出可以具有特定于國家的格式。 日期和時(shí)間通常被解釋為在當(dāng)前時(shí)區(qū)有效的本地日期。

ABAP提供了兩種內(nèi)置類型來處理日期和時(shí)間:

  • D data type
  • T data type

以下是基本格式:

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格式的固定長度字符類型。

時(shí)間戳

除了這些內(nèi)置類型,其他兩種類型 TIMESTAMP TIMESTAMPL 在許多標(biāo)準(zhǔn)應(yīng)用程序表中用于存儲UTC格式的時(shí)間戳。 下表顯示了ABAP中可用的基本日期和時(shí)間類型。

編號數(shù)據(jù)類型和說明
1

D

內(nèi)置的固定長度日期類型,格式為YYYYMMDD。 例如,值20100913表示2010年9月13日的日期。

2

T

內(nèi)置固定長度時(shí)間類型,格式為HH MM SS。 例如,值102305表示時(shí)間10:23:05 AM。

3

TIMESTAMP (類型P - 長度8無小數(shù))

此類型用于表示YYYYMMDDhhmmss表單中的短時(shí)間戳。 例如,值20100913102305表示2010年9月13日上午10:23:05的日期。

4

TIMESTAMPL (類型P - 長度11小數(shù)7)

TIMESTAMPL表示YYYYMMDDhhmmss,mmmuuun表單中的長時(shí)間戳。 這里,附加數(shù)字“mmmuuun"表示秒的分?jǐn)?shù)。

當(dāng)前日期和時(shí)間

以下代碼片段檢索當(dāng)前系統(tǒng)日期和時(shí)間。

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.

上面的代碼產(chǎn)生以下輸出:

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

變量date_1分配有當(dāng)前系統(tǒng)日期SY-DATUM的值。 接下來,我們將日期值增加6.對于ABAP中的日期計(jì)算,這意味著我們將日期對象的日期組件增加6天。 ABAP運(yùn)行時(shí)環(huán)境足夠聰明,可以在每月結(jié)束時(shí)翻轉(zhuǎn)日期值。

時(shí)間計(jì)算與日期計(jì)算類似。 以下代碼使用基本時(shí)間算法將當(dāng)前系統(tǒng)時(shí)間增加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: __:__:__'.

上面的代碼產(chǎn)生以下輸出

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

使用時(shí)間戳

您可以使用 GET TIME STAMP 檢索當(dāng)前系統(tǒng)時(shí)間并將其存儲在時(shí)間戳變量中,如以下代碼所示。 GET TIME STAMP語句根據(jù)所使用的時(shí)間戳數(shù)據(jù)對象的類型以長指針或短指針格式存儲時(shí)間戳。 時(shí)間戳值使用UTC標(biāo)準(zhǔn)進(jìn)行編碼。

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.

上面的代碼產(chǎn)生以下輸出:

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

在上面的示例中,我們使用TIME ZONE添加WRITE語句顯示時(shí)間戳。 此添加根據(jù)指定的時(shí)區(qū)的規(guī)則格式化時(shí)間戳的輸出。 系統(tǒng)字段SY-ZONLO用于顯示在用戶首選項(xiàng)中配置的本地時(shí)區(qū)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號