SAP ABAP - Ngày và giờ

ABAP tham chiếu ngầm đến lịch Gregorian, có giá trị trên hầu hết thế giới. Chúng tôi có thể chuyển đổi đầu ra sang các lịch cụ thể của quốc gia. Ngày là thời gian được chỉ định cho một ngày, tuần hoặc tháng chính xác đối với lịch. Thời gian được chỉ định chính xác đến từng giây hoặc phút đối với một ngày. ABAP luôn tiết kiệm thời gian ở định dạng 24 giờ. Đầu ra có thể có định dạng quốc gia cụ thể. Ngày và giờ thường được hiểu là ngày địa phương có hiệu lực trong múi giờ hiện tại.

ABAP cung cấp hai kiểu tích hợp để làm việc với ngày và giờ -

  • Kiểu dữ liệu D
  • Kiểu dữ liệu T

Sau đây là định dạng cơ bản -

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.

Cả hai kiểu này đều là kiểu ký tự có độ dài cố định có dạng YYYYMMDD và HHMMSS, tương ứng.

Dấu thời gian

Ngoài các loại cài sẵn này, hai loại khác TIMESTAMPTIMESTAMPLđang được sử dụng trong nhiều bảng ứng dụng tiêu chuẩn để lưu trữ dấu thời gian ở định dạng UTC. Bảng sau hiển thị các loại ngày và giờ cơ bản có sẵn trong ABAP.

Không. Loại dữ liệu và mô tả
1

D

Loại ngày có độ dài cố định được tích hợp sẵn có dạng YYYYMMDD. Ví dụ: giá trị 20100913 đại diện cho ngày 13 tháng 9 năm 2010.

2

T

Một loại thời gian có độ dài cố định được tích hợp sẵn của biểu mẫu HHMMSS. Ví dụ: giá trị 102305 đại diện cho thời gian 10:23:05 sáng.

3

TIMESTAMP (Loại P - Chiều dài 8 Không có số thập phân)

Loại này được sử dụng để biểu thị dấu thời gian ngắn ở dạng YYYYMMDDhhmmss. Ví dụ: giá trị 20100913102305 đại diện cho ngày 13 tháng 9 năm 2010 lúc 10:23:05 sáng.

4

TIMESTAMPL (Loại P - Độ dài 11 Số thập phân 7)

TIMESTAMPL đại diện cho dấu thời gian dài ở dạng YYYYMMDDhhmmss, mmmuuun. Ở đây các chữ số bổ sung 'mmmuuun' đại diện cho các phần nhỏ của giây.

Ngày và giờ hiện tại

Các đoạn mã sau đây truy xuất ngày và giờ hệ thống hiện tại.

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.

Đoạn mã trên tạo ra kết quả sau:

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

Biến date_1 được gán giá trị của ngày hệ thống hiện tại SY-DATUM. Tiếp theo, chúng tôi tăng giá trị ngày lên 6. Về cách tính ngày trong ABAP, điều này ngụ ý rằng chúng tôi đang tăng thành phần ngày của đối tượng ngày thêm 6 ngày. Môi trường thời gian chạy ABAP đủ thông minh để cuộn qua giá trị ngày bất cứ khi nào nó đến cuối tháng.

Tính toán thời gian hoạt động tương tự như tính toán ngày. Đoạn mã sau đây tăng thời gian hiện tại của hệ thống lên 75 giây bằng cách sử dụng số học thời gian cơ bản.

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: __:__:__'.

Đoạn mã trên tạo ra kết quả sau:

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

Làm việc với Dấu thời gian

Bạn có thể truy xuất thời gian hệ thống hiện tại và lưu trữ nó trong một biến dấu thời gian bằng cách sử dụng GET TIME STAMPnhư thể hiện trong đoạn mã sau. Câu lệnh GET TIME STAMP lưu trữ dấu thời gian ở định dạng tay dài hoặc tay ngắn tùy theo loại đối tượng dữ liệu dấu thời gian được sử dụng. Giá trị dấu thời gian được mã hóa bằng tiêu chuẩn 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.

Đoạn mã trên tạo ra kết quả sau:

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

Trong ví dụ trên, chúng tôi đang hiển thị dấu thời gian bằng cách bổ sung TIME ZONE của câu lệnh WRITE. Việc bổ sung này định dạng đầu ra của dấu thời gian theo các quy tắc cho múi giờ được chỉ định. Trường hệ thống SY-ZONLO được sử dụng để hiển thị múi giờ địa phương được định cấu hình theo sở thích của người dùng.