ABAP:利用SAP定时器自动刷新LIST
生活随笔
收集整理的這篇文章主要介紹了
ABAP:利用SAP定时器自动刷新LIST
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
上篇文章(利用SAP定時(shí)器自動(dòng)刷新ALV)中介紹了類cl_gui_timer的使用,這里繼續(xù)使用該類來演示對LIST的自動(dòng)刷新,以與網(wǎng)上通行的使用函數(shù)RFC_PING_AND_WAIT的刷新方法作個(gè)對比。
代碼如下,需要說明的是,由于cl_gui_timer是SAPGUI的一個(gè)控件,必須使用CALL?METHOD?cl_gui_cfw=>set_new_ok_code來觸發(fā)USER-COMMAND事件,而不是SET?USER-COMMAND語句,大家不妨試下。
REPORT??z04_gui_timer.
?
CLASS?lcl_event_handler?DEFINITION?DEFERRED.
DATA:?go_timer?TYPE?REF?TO?cl_gui_timer,
??????go_evt_hndl?TYPE?REF?TO?lcl_event_handler,
??????gt_spfli?TYPE?TABLE?OF?spfli?WITH?HEADER?LINE.
*&---------------------------------------------------------------------*
*&??????START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
??SELECT?*?INTO?TABLE?gt_spfli
????FROM?spfli?UP?TO?30?ROWS.? ??PERFORM?list_output.
??PERFORM?init_timer.
*&---------------------------------------------------------------------*
*&??????USER-COMMAND
*&---------------------------------------------------------------------*
AT?USER-COMMAND.
??IF?sy-ucomm?=?'RFSH'.
????sy-lsind?=?sy-lsind?-?1.
????PERFORM?list_output.
??ENDIF.
*&---------------------------------------------------------------------*
*&??????Form??LIST_OUTPUT
*&---------------------------------------------------------------------*
FORM?list_output.
??DATA:?ls_spfli?LIKE?LINE?OF?gt_spfli.
??NEW-PAGE?WITH-TITLE?LINE-SIZE?60.
??WRITE:?/5?'CARRID',?AT?30?'CONNID'.
??LOOP?AT?gt_spfli.
????WRITE:?/?gt_spfli-carrid?UNDER?'CARRID',
?????????????gt_spfli-connid?UNDER?'CONNID'.
??ENDLOOP.
ENDFORM.????????????????????"?LIST_OUTPUT
*&---------------------------------------------------------------------*
*&??????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.
????DELETE?gt_spfli?INDEX?1. *???SET?USER-COMMAND?'RFSH'.?
????CALL?METHOD?cl_gui_cfw=>set_new_ok_code
??????EXPORTING
????????new_code?=?'RFSH'.
????CALL?METHOD?go_timer->run?"必須重新激活定時(shí)器
??????EXCEPTIONS
????????OTHERS?=?9.
??ENDMETHOD.?????????????????"handle_timer
ENDCLASS.????????????????????"lcl_event_handler?IMPLEMENTATION
*&---------------------------------------------------------------------*
*&??????Form??INIT_TIMER
*&---------------------------------------------------------------------*
FORM?init_timer. CHECK?go_timer?IS?INITIAL.?
??CREATE?OBJECT?go_timer
????EXCEPTIONS
??????OTHERS?=?9.
??CREATE?OBJECT?go_evt_hndl.
??SET?HANDLER?go_evt_hndl->handle_timer?FOR?go_timer.
??go_timer->interval?=?3.???"設(shè)置間隔為3秒
??CALL?METHOD?go_timer->run?"激活定時(shí)器
????EXCEPTIONS
??????OTHERS?=?9.
ENDFORM.????????????????????"?INIT_TIMER
DATA:?go_timer?TYPE?REF?TO?cl_gui_timer,
??????go_evt_hndl?TYPE?REF?TO?lcl_event_handler,
??????gt_spfli?TYPE?TABLE?OF?spfli?WITH?HEADER?LINE.
*&---------------------------------------------------------------------*
*&??????START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
??SELECT?*?INTO?TABLE?gt_spfli
????FROM?spfli?UP?TO?30?ROWS.? ??PERFORM?list_output.
??PERFORM?init_timer.
*&---------------------------------------------------------------------*
*&??????USER-COMMAND
*&---------------------------------------------------------------------*
AT?USER-COMMAND.
??IF?sy-ucomm?=?'RFSH'.
????sy-lsind?=?sy-lsind?-?1.
????PERFORM?list_output.
??ENDIF.
*&---------------------------------------------------------------------*
*&??????Form??LIST_OUTPUT
*&---------------------------------------------------------------------*
FORM?list_output.
??DATA:?ls_spfli?LIKE?LINE?OF?gt_spfli.
??NEW-PAGE?WITH-TITLE?LINE-SIZE?60.
??WRITE:?/5?'CARRID',?AT?30?'CONNID'.
??LOOP?AT?gt_spfli.
????WRITE:?/?gt_spfli-carrid?UNDER?'CARRID',
?????????????gt_spfli-connid?UNDER?'CONNID'.
??ENDLOOP.
ENDFORM.????????????????????"?LIST_OUTPUT
*&---------------------------------------------------------------------*
*&??????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.
????DELETE?gt_spfli?INDEX?1. *???SET?USER-COMMAND?'RFSH'.?
????CALL?METHOD?cl_gui_cfw=>set_new_ok_code
??????EXPORTING
????????new_code?=?'RFSH'.
????CALL?METHOD?go_timer->run?"必須重新激活定時(shí)器
??????EXCEPTIONS
????????OTHERS?=?9.
??ENDMETHOD.?????????????????"handle_timer
ENDCLASS.????????????????????"lcl_event_handler?IMPLEMENTATION
*&---------------------------------------------------------------------*
*&??????Form??INIT_TIMER
*&---------------------------------------------------------------------*
FORM?init_timer. CHECK?go_timer?IS?INITIAL.?
??CREATE?OBJECT?go_timer
????EXCEPTIONS
??????OTHERS?=?9.
??CREATE?OBJECT?go_evt_hndl.
??SET?HANDLER?go_evt_hndl->handle_timer?FOR?go_timer.
??go_timer->interval?=?3.???"設(shè)置間隔為3秒
??CALL?METHOD?go_timer->run?"激活定時(shí)器
????EXCEPTIONS
??????OTHERS?=?9.
ENDFORM.????????????????????"?INIT_TIMER
總結(jié)
以上是生活随笔為你收集整理的ABAP:利用SAP定时器自动刷新LIST的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP算法:找出递归的物料
- 下一篇: SAP中的文档维护