SAP NetWeaver AS ABAP Release 740, ©Copyright 2014 SAP AG. All rights reserved.
ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Date and Time Processing → Time Stamp →Converting Time Stamps
This example demonstrates the statements CONVERT TIME STAMP and CONVERT INTO TIME STAMP.
Source Code
REPORT demo_convert_time_stamp.
SELECTION-SCREEN: BEGIN OF SCREEN 100 AS WINDOW,
BEGIN OF BLOCK bl1 WITH FRAME.
PARAMETERS: date1 TYPE d,
time1 TYPE t,
tz1 TYPE ttzz-tzone.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS dst_flag AS CHECKBOX.
SELECTION-SCREEN: COMMENT 3(29) text-dst,
POSITION POS_LOW.
PARAMETERS dst1 TYPE abap_bool.
SELECTION-SCREEN: END OF LINE,
END OF BLOCK bl1,
BEGIN OF BLOCK bl2 WITH FRAME.
PARAMETERS tsout TYPE c LENGTH 19 MODIF ID out.
SELECTION-SCREEN: END OF BLOCK bl2,
BEGIN OF BLOCK bl3 WITH FRAME.
PARAMETERS tz2 TYPE ttzz-tzone.
PARAMETERS: date2 TYPE d MODIF ID out,
time2 TYPE t MODIF ID out,
dst2 TYPE abap_bool MODIF ID out.
SELECTION-SCREEN: END OF BLOCK bl3,
END OF SCREEN 100.
CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
METHOD main.
DATA: date TYPE d,
time TYPE t,
ts TYPE timestamp.
date1 = sy-datlo.
time1 = sy-timlo.
tz1 = tz2 = 'UTC'.
DO.
IF sy-index > 1.
CALL SELECTION-SCREEN 100 STARTING AT 10 10.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
date = date1.
time = time1.
IF dst_flag = abap_false.
CONVERT DATE date TIME time
INTO TIME STAMP ts TIME ZONE tz1.
ELSE.
CONVERT DATE date TIME time DAYLIGHT SAVING TIME dst1
INTO TIME STAMP ts TIME ZONE tz1.
ENDIF.
CASE sy-subrc.
WHEN 4.
MESSAGE 'Time zone set to UTC'
TYPE 'I' DISPLAY LIKE 'W'.
WHEN 8.
MESSAGE 'Invalid time zone'
TYPE 'I' DISPLAY LIKE 'E'.
CONTINUE.
WHEN 12.
MESSAGE 'Invalid input values for date,'
& ' time or daylight saving time'
TYPE 'I' DISPLAY LIKE 'E'.
CONTINUE.
ENDCASE.
CONVERT TIME STAMP ts TIME ZONE tz2
INTO DATE date TIME time DAYLIGHT SAVING TIME dst2.
CASE sy-subrc.
WHEN 4.
MESSAGE 'Time zone set to UTC'
TYPE 'I' DISPLAY LIKE 'W'.
WHEN 8.
MESSAGE 'Invalid time zone'
TYPE 'I' DISPLAY LIKE 'E'.
CONTINUE.
WHEN 12.
MESSAGE 'Invalid time stamp'
TYPE 'I' DISPLAY LIKE 'E'.
CONTINUE.
ENDCASE.
tsout = |{ ts TIMESTAMP = ISO TIMEZONE = 'UTC ' }|.
date2 = date.
time2 = time.
ENDDO.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo=>main( ).
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN INTO DATA(screen_wa).
IF screen_wa-group1 = 'OUT'.
screen_wa-input = '0'.
screen_wa-output = '1'.
ENDIF.
MODIFY SCREEN FROM screen_wa.
ENDLOOP.
Description
The program is given a date, a time, and a time zone and converts this information into a time stamp. The program can also include summer time in its calculations. The resulting time stamp is then converted to the local date and local time of another time zone. The following table shows several possible combinations of input and output, where spc stands for a space and - for no input or output.
date1 | time1 | tz1 | dst1 | ts | tz2 | date2 | time2 | dst2 | sy-subrc |
16.07.2010 | 09:10:00 | CET | - | 2010-07-16T07:10:00 | CET | 16.07.2010 | 09:10:00 | X | - |
16.07.2010 | 09:10:00 | CET | X | 2010-07-16T07:10:00 | CET | 16.07.2010 | 09:10:00 | X | - |
16.07.2010 | 09:10:00 | CET | spc | - | CET | - | - | - | 12 |
16.12.2010 | 09:10:00 | CET | spc | 2010-12-16T08:10:00 | CET | 16.12.2010 | 09:10:00 | - | - |
16.12.2010 | 09:10:00 | CET | X | - | CET | - | - | - | 12 |
16.12.2010 | 09:10:00 | AUSTAS | - | 2010-12-15T22:10:00 | AUSTAS | 16.12.2010 | 09:10:00 | X | - |
The third and fifth rows demonstrate that invalid summer time data produces the value 12 in sy-subrc.