Accessing Character-Like Date Fields and Time Fields Numerically
Numeric access to character-like date fields and time fields exploits the fact that the
conversion of the types
t to numeric values produces an integer number of days or seconds. This applies particularly when using character-like date fields and time fields in
numeric calculations, where these fields are
converted to the corresponding calculation type. This enables differences to be calculated or values
to be added or subtracted from character-like date fields or time fields. None of the other arithmetic
operations are generally advisable here. To avoid unexpected results from these calculations, you must verify that the content of the date or time fields is
The following calculations provide the current day of the year, plus the hour, minutes, and seconds of the current time. The date and time are provided by a time stamp.
time TYPE t,
time_stamp TYPE timestamp,
day TYPE i,
hour TYPE i,
minute TYPE i,
second TYPE i,
first_day TYPE d.
GET TIME STAMP FIELD time_stamp.
CONVERT TIME STAMP time_stamp TIME ZONE sy-zonlo
INTO DATE date TIME time.
first_day = date(4) && '0101'.
day = date - first_day + 1.
second = ( time - t`000000` ).
hour = second DIV 3600.
second = second - hour * 3600.
minute = second DIV 60.
second = second - minute * 60.
The following calculation produces the day of the week for a date field
date containing any valid date. 1 means Monday, 2 means Tuesday, and so on.
day = ( 5 + date MOD 7 ) MOD 7 + 1.
The following calculations provides the last day of the previous month.
DATA date TYPE d.
date = sy-datlo.
date+6(2) = '01'.
date = date - 1.