展示型网站建,哪个兄弟给个地址呀,做lt行业的人让我登网站,seo免费推广原文链接#xff1a;https://blog.csdn.net/SAPmatinal/article/details/130483382 SAP 使用cl_gui_timer自动刷新屏幕的用法详解
这个类在初始化的时候会设置一个定时间隔#xff0c;每隔这个时间就会触发一次FINISHED事件。利用这个类的特性#xff0c;可以实现很多东西https://blog.csdn.net/SAPmatinal/article/details/130483382 SAP 使用cl_gui_timer自动刷新屏幕的用法详解
这个类在初始化的时候会设置一个定时间隔每隔这个时间就会触发一次FINISHED事件。利用这个类的特性可以实现很多东西让程序自动化起来
比如定时刷新ALV但是这个事件不能触发PBO 此时需要去强制触发PAI让程序走一次PBO如果不涉及屏幕字段啥的只是刷新ALV就不必要了直接调用REFRESH就行了 正常结果屏幕刷新
*---------------------------------------------------------------------*
* Report Y_XB_TEST1
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
REPORT Y_XB_TEST1 NO STANDARD PAGE HEADING.CLASS lcl_event_handler DEFINITION DEFERRED.DATA: go_timer TYPE REF TO cl_gui_timer,go_evt_hndl TYPE REF TO lcl_event_handler,gv_datum TYPE sy-datum,gv_uzeit TYPE sy-uzeit.*---------------------------------------------------------------------** START-OF-SELECTION*---------------------------------------------------------------------*START-OF-SELECTION.gv_datum sy-datum.gv_uzeit sy-uzeit.PERFORM list_output.PERFORM init_timer.*---------------------------------------------------------------------** USER-COMMAND*---------------------------------------------------------------------*AT USER-COMMAND.IF sy-ucomm RFSH.sy-lsind sy-lsind - 1.PERFORM list_output.ENDIF.*---------------------------------------------------------------------** CLASS lcl_event_handler DEFINITION*---------------------------------------------------------------------*CLASS lcl_event_handler DEFINITION.PUBLIC SECTION.METHODS:handle_timer FOR EVENT finished OF cl_gui_timer.ENDCLASS. lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.METHOD handle_timer.CALL METHOD cl_gui_cfwset_new_ok_codeEXPORTINGnew_code RFSH.CALL METHOD go_timer-run 必须重新激活定时器EXCEPTIONSOTHERS 9.ENDMETHOD. handle_timer
ENDCLASS. lcl_event_handler IMPLEMENTATION*---------------------------------------------------------------------** Form INIT_TIMER*---------------------------------------------------------------------*FORM init_timer.CHECK go_timer IS INITIAL.CREATE OBJECT go_timerEXCEPTIONSOTHERS 9.CREATE OBJECT go_evt_hndl.SET HANDLER go_evt_hndl-handle_timer FOR go_timer.go_timer-interval 5. 设置间隔为10秒CALL METHOD go_timer-run 激活定时器EXCEPTIONSOTHERS 9.ENDFORM. INIT_TIMER
*---------------------------------------------------------------------*
* Form LIST_OUTPUT
*---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -- p1 text
* -- p2 text
*---------------------------------------------------------------------*
FORM list_output .DATA: datediff TYPE p,timediff TYPE p DECIMALS 2.datediff sy-datum - gv_datum.timediff ( sy-uzeit - gv_uzeit ) / 60.WRITE: /5 本次开始时间 ,AT 30 gv_datum , AT 45 gv_uzeit.WRITE: /5 本次运行时长 ,AT 30 datediff LEFT-JUSTIFIED,AT 38 天 ,at 45 timediff LEFT-JUSTIFIED ,AT 51 分.
ENDFORM.layout CALL SCREEN 屏幕刷新
DATA GO_TIMER TYPE REF TO CL_GUI_TIMER .
DATA: GV_INDEX TYPE N LENGTH 2 ,GV_TMP TYPE N LENGTH 2 ,GV_OKCODE TYPE SY-UCOMM .DATA: HH TYPE C LENGTH 2 , 记录时分秒FF TYPE C LENGTH 2 ,MM TYPE C LENGTH 2 .
CLASS LCL_EVENT_HANDLER DEFINITION.PUBLIC SECTION.METHODS:HANDLE_TIMER FOR EVENT FINISHED OF CL_GUI_TIMER.
ENDCLASS. lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.METHOD HANDLE_TIMER.PERFORM FRM_PROCESS_TIMER.ENDMETHOD. handle_timer
ENDCLASS. lcl_event_handler IMPLEMENTATION
DATA GO_EVT_HNDL TYPE REF TO LCL_EVENT_HANDLER .INITIALIZATION .START-OF-SELECTION .CALL SCREEN 0100 .
*---------------------------------------------------------------------*
* Form FRM_PROCESS_TIMER
*---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -- p1 text
* -- p2 text
*---------------------------------------------------------------------*
FORM FRM_PROCESS_TIMER .CALL METHOD CL_GUI_CFWSET_NEW_OK_CODE 强制触发PAIEXPORTINGNEW_CODE RFSH.CALL METHOD GO_TIMER-RUN EXCEPTIONSOTHERS 9.ENDFORM.
*---------------------------------------------------------------------*
* Form INIT_TIMER
*---------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -- p1 text
* -- p2 text
*---------------------------------------------------------------------*
FORM INIT_TIMER .IF GO_TIMER IS INITIAL.CREATE OBJECT GO_TIMEREXCEPTIONSOTHERS 9.CREATE OBJECT GO_EVT_HNDL.SET HANDLER GO_EVT_HNDL-HANDLE_TIMER FOR GO_TIMER.GO_TIMER-INTERVAL 1. 设置间隔为1秒CALL METHOD GO_TIMER-RUN 激活定时器EXCEPTIONSOTHERS 9.ELSE .CALL METHOD GO_TIMER-RUN 重新激活定时器EXCEPTIONSOTHERS 9.ENDIF .
ENDFORM.
*---------------------------------------------------------------------*
* Module STATUS_0100 OUTPUT
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.SET PF-STATUS STATUS_0100.
* SET TITLEBAR xxx.PERFORM INIT_TIMER .
ENDMODULE.
*---------------------------------------------------------------------*
* Module USER_COMMAND_0100 INPUT
*---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.CASE GV_OKCODE.WHEN BACK.LEAVE TO SCREEN 0 .WHEN RFSH.GV_INDEX GV_INDEX 1 .CLEAR GV_TMP.GV_TMP GV_INDEX DIV 3600 . 获取小时HH GV_TMP .CLEAR GV_TMP .GV_TMP GV_INDEX DIV 60 . 获取分钟FF GV_TMP .CLEAR GV_TMP .GV_TMP GV_INDEX MOD 60 . 获取秒MM GV_TMP .WHEN OTHERS.ENDCASE.
ENDMODULE.