* _______ _______ _______ _______ _______ _______ ______ _______ _______ ______ _______ * | _ | _ | _ | | | _ | || _ | _ | _ | | _ | * | |_| | |_| | |_| | _ | | |_| | _ | |_| | |_| | | || | |_| | * | | | | |_| | | | | | | | | |_||_| | * | | _ || | ___| _| | |_| | | _ || __ | | * | _ | |_| | _ | | | |_| _ | | _ | |_| | | | | _ | * |__| |__|_______|__| |__|___| |_______|__| |__|______||__| |__|_______|___| |_|__| |__| * www.abapcadabra.com * *------------------------------------------------------------------------------------------- * program : ZABAPCADABRA_TIMER_DEMO * title : Times demo - in HTML custom container * functional area : Cross modules * environment : 4.7 * program Function : This program demonstrates the cl_gui_timer for in-app scheduled * steps * Previous version : This is the initial version * Developer name : Wim Maasdam * Development date : 21/04/2017 * Version : 0.1 *--------------------------------------------------------------------- * Change list: * Date Description * 21/04/2017 Initial release *--------------------------------------------------------------------- REPORT ZABAPCADABRA_TIMER_DEMO NO STANDARD PAGE HEADING. data: gv_okcode type sy-ucomm. CLASS lcl_event_handler DEFINITION. PUBLIC SECTION. CLASS-METHODS: on_finished FOR EVENT finished OF cl_gui_timer IMPORTING sender. ENDCLASS. CLASS lcl_clock DEFINITION. PUBLIC SECTION. CLASS-DATA: rf_gui_timer TYPE REF TO cl_gui_timer, go_container TYPE REF TO cl_gui_custom_container, go_viewer TYPE REF TO cl_gui_html_viewer, gv_url TYPE c LENGTH 200, gt_html_clock TYPE STANDARD TABLE OF char120. CLASS-METHODS: start importing container_name type any default 'HTML_CLOCK', compose_clock. ENDCLASS. CLASS lcl_event_handler IMPLEMENTATION. METHOD: on_finished. lcl_clock=>compose_clock( ). lcl_clock=>go_viewer->load_data( IMPORTING assigned_url = lcl_clock=>gv_url CHANGING data_table = lcl_clock=>gt_html_clock ). lcl_clock=>go_viewer->show_url( EXPORTING url = lcl_clock=>gv_url ). * "Schedule" the next round: sender->run( ). ENDMETHOD. "on_finished ENDCLASS. "lcl_event_handler IMPLEMENTATION CLASS lcl_clock IMPLEMENTATION. METHOD start. * Create an instance of the Timer CREATE OBJECT rf_gui_timer. * Set an event handler to capture the timer-signal SET HANDLER lcl_event_handler=>on_finished FOR rf_gui_timer. * Set the interval in seconds rf_gui_timer->interval = 2. * Start the times rf_gui_timer->run( ). * Compose the clock with current time compose_clock( ). * Prepare the screen/dynpro: CREATE OBJECT go_container EXPORTING container_name = container_name EXCEPTIONS OTHERS = 4. IF sy-subrc = 0. CREATE OBJECT go_viewer EXPORTING parent = go_container EXCEPTIONS OTHERS = 4. IF sy-subrc = 0. go_viewer->load_data( IMPORTING assigned_url = gv_url CHANGING data_table = gt_html_clock ). go_viewer->show_url( EXPORTING url = gv_url ). ENDIF. ENDIF. IF sy-subrc <> 0. MESSAGE 'Error from which I cannot recover... ' TYPE 'W'. ENDIF. ENDMETHOD. METHOD compose_clock. define add_html. append &1 to gt_html_clock. end-of-definition. clear gt_html_clock[]. get time. add_html: '', '', '', '

', sy-uzeit(2), ':', sy-uzeit+2(2), '

', '.', sy-uzeit+4(2), ''. ENDMETHOD. ENDCLASS. START-OF-SELECTION. call screen 0900. MODULE STATUS_0900 OUTPUT. IF lcl_clock=>go_container IS INITIAL. lcl_clock=>start( ). ENDIF. ENDMODULE. MODULE USER_COMMAND_0900 INPUT. leave to screen 0. ENDMODULE.