Учебники

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.

Оба эти типа являются символьными типами фиксированной длины, которые имеют форму ГГГГММДД и ЧЧММСС соответственно.

Timestamps

В дополнение к этим встроенным типам два других типа TIMESTAMP и TIMESTAMPL используются во многих стандартных таблицах приложений для хранения метки времени в формате UTC. В следующей таблице приведены основные типы даты и времени, доступные в ABAP.

S.No. Тип данных и описание
1

D

Встроенный тип даты фиксированной длины в форме ГГГГММДД. Например, значение 20100913 представляет дату 13 сентября 2010 года.

2

T

Встроенный тип времени фиксированной длины в формате ЧЧММСС. Например, значение 102305 представляет время 10:23:05.

3

TIMESTAMP (тип P — длина 8 без десятичных знаков)

Этот тип используется для представления коротких временных меток в форме ГГГГММДччммсс. Например, значение 20100913102305 представляет дату 13 сентября 2010 года в 10:23:05.

4

TIMESTAMPL (Тип P — Длина 11 Десятичных знаков 7)

TIMESTAMPL представляет длинные метки времени в формате ГГГГММДЧчммсс, мммууун. Здесь дополнительные цифры ‘mmmuuun’ представляют доли секунды.

D

Встроенный тип даты фиксированной длины в форме ГГГГММДД. Например, значение 20100913 представляет дату 13 сентября 2010 года.

T

Встроенный тип времени фиксированной длины в формате ЧЧММСС. Например, значение 102305 представляет время 10:23:05.

TIMESTAMP (тип P — длина 8 без десятичных знаков)

Этот тип используется для представления коротких временных меток в форме ГГГГММДччммсс. Например, значение 20100913102305 представляет дату 13 сентября 2010 года в 10:23:05.

TIMESTAMPL (Тип P — Длина 11 Десятичных знаков 7)

TIMESTAMPL представляет длинные метки времени в формате ГГГГММДЧчммсс, мммууун. Здесь дополнительные цифры ‘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

В приведенном выше примере мы отображаем временную метку, используя добавление TIME ZONE оператора WRITE. Это дополнение форматирует вывод отметки времени в соответствии с правилами для указанного часового пояса. Системное поле SY-ZONLO используется для отображения местного часового пояса, настроенного в настройках пользователя.