您的位置:首页 > 其它

ABAP在ALV工具栏显示一个计时器

2017-06-29 08:43 330 查看
其实就是调用一个类,刷新不断ALV界面,下面是来自Sariel的一段代码:
*&---------------------------------------------------------------------*
*&

*&---------------------------------------------------------------------*

TYPE-POOLS slis.

CLASS lcl_timer_receiver DEFINITION DEFERRED.

DATA: BEGIN OF gt_data OCCURS 0,

        flag TYPE string,

      END OF gt_data.

DATA: gv_text        TYPE smp_dyntxt.

DATA: go_timer       TYPE REF TO cl_gui_timer,

      go_timer_event TYPE REF TO lcl_timer_receiver.

*----------------------------------------------------------------------*

*       CLASS lcl_timer_receiver DEFINITION

*----------------------------------------------------------------------*

CLASS lcl_timer_receiver DEFINITION.

  PUBLIC SECTION.

    METHODS handle_finished FOR EVENT finished OF cl_gui_timer.

  PRIVATE SECTION.

    DATA: lv_mod TYPE i,

          lv_int TYPE i,

          lv_hh  TYPE numc2,

          lv_mm  TYPE numc2,

          lv_ss  TYPE numc2.

ENDCLASS.                    "lcl_timer_receiver DEFINITION

*----------------------------------------------------------------------*

*       CLASS lc_timer_receiver IMPLEMENTATION

*----------------------------------------------------------------------*

CLASS lcl_timer_receiver IMPLEMENTATION.

  METHOD handle_finished.

    CALL METHOD go_timer->run.

    lv_int = lv_int + 1.

    lv_ss = lv_int MOD 60.

    IF lv_int MOD 60 EQ 0.

      lv_mm = lv_mm + 1.

      lv_ss = 0.

    ENDIF.

    IF lv_int MOD 3600 EQ 0 .

      lv_hh = lv_hh + 1.

      lv_mm = 0.

      lv_ss = 0.

    ENDIF.

    gv_text-text = lv_hh && ':' && lv_mm && ':' && lv_ss.

  ENDMETHOD.                    "HANDLE_FINISHED

ENDCLASS.                    "lc_timer_receiver IMPLEMENTATION

*&---------------------------------------------------------------------*

*&      Event  INITIALIZATION

*&---------------------------------------------------------------------*

INITIALIZATION.

  gv_text-text = '00:00:00'.

*&---------------------------------------------------------------------*

*&      Event  START-OF-SELECTION

*&---------------------------------------------------------------------*

START-OF-SELECTION.

  PERFORM frm_dsp_alv.

*&---------------------------------------------------------------------*

*&      Form  FRM_DSP_ALV

*&---------------------------------------------------------------------*

FORM frm_dsp_alv .

  DATA: lt_fcat   TYPE slis_t_fieldcat_alv,

        ls_fcat   TYPE slis_fieldcat_alv,

        ls_layo   TYPE slis_layout_alv,

        lt_events TYPE slis_t_event,

        ls_events TYPE slis_alv_event.

  gt_data-flag = 'SAP顾问圈'.

  APPEND gt_data.

  gt_data-flag = 'bbs.sapclub.cc'.

  APPEND gt_data.

  ls_fcat-fieldname = ls_fcat-seltext_s = 'FLAG'.

  APPEND ls_fcat TO lt_fcat.

  ls_events-name = slis_ev_caller_exit_at_start.  "= CALLER_EXIT

  ls_events-form = slis_ev_caller_exit_at_start.

  APPEND ls_events TO lt_events.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program       = sy-repid

      i_callback_pf_status_set = slis_ev_pf_status_set  "= PF_STATUS_SET

      is_layout                = ls_layo

      it_fieldcat              = lt_fcat

      it_events                = lt_events

    TABLES

      t_outtab                 = gt_data

    EXCEPTIONS

      program_error            = 1

      OTHERS                   = 2.

ENDFORM.                    " FRM_DSP_ALV

*&---------------------------------------------------------------------*

*&      Form  CALLER_EXIT

*&---------------------------------------------------------------------*

FORM caller_exit USING u_exit TYPE slis_data_caller_exit.

  CREATE OBJECT: go_timer, go_timer_event.

  SET HANDLER go_timer_event->handle_finished FOR go_timer.

  go_timer->interval = 1.

ENDFORM.                    "CALLER_EXIT

*&---------------------------------------------------------------------*

*&      Form  SET_PF_STATUS

*&---------------------------------------------------------------------*

FORM pf_status_set USING t_extab TYPE slis_t_extab.

  CALL METHOD go_timer->run.

  SET PF-STATUS 'PFLIST' EXCLUDING t_extab.

ENDFORM.                    " SET_PF_STATUS



ALV工具栏请注意:
1、复制标准工具栏请参考:ALV报表复制程序标准工具栏
2、一定要定义成动态功能文本,GV_TEXT

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐