Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343232
  • 博文数量: 25
  • 博客积分: 3011
  • 博客等级: 中校
  • 技术积分: 367
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-28 13:22
个人简介

生命在于折腾

文章分类

全部博文(25)

文章存档

2015年(1)

2011年(3)

2010年(4)

2009年(17)

我的朋友

分类: 敏捷开发

2009-09-22 17:47:26

上篇文章(利用SAP定时器自动刷新ALV)中介绍了类cl_gui_timer的使用,这里继续使用该类来演示对LIST的自动刷新,以与网上通行的使用函数RFC_PING_AND_WAIT的刷新方法作个对比。
代码如下,需要说明的是,由于cl_gui_timer是SAPGUI的一个控件,必须使用CALL METHOD cl_gui_cfw=>set_new_ok_code来触发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 "必须重新激活定时器
      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.   "设置间隔为3秒
  CALL METHOD go_timer->run "激活定时器
    EXCEPTIONS
      OTHERS = 9.
ENDFORM.                    " INIT_TIMER
阅读(4781) | 评论(7) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2010-05-04 15:11:29

有延迟。。。 不知道是什么原因,和那个ALV一样,我设置成1秒刷新一次,但是实际更新是2,3秒一次。。

chinaunix网友2009-10-12 14:59:29

本人作品,大家可以给点建议。 1. 公司注册网 http://www.51zhuce.net 2.上海公司注册网 http://www.51gongsizhuce.com/ 3.外资公司注册网 http://www.zhucewaizi.com 4.代表处注册网 http://www.shdbc.com 5.上海企业注册网 http://www.shanghaizhuce.com

hejunqiang2009-09-24 17:33:34

招聘人数: 若干名  薪资待遇: 工作每天3-4小时,100元/天工资每日支付; 岗位描述: 负责公司所要求的信息回复工作(有内容样版),工作地点不限,专兼职均可! 应聘要求: 上网熟练,平均每天工作投入约3小时,具体根据效率自定; 学历不限,在 职或学生皆可;勤奋,认真,有责任感;熟悉用电脑发消息的整个流程。(很简单,学一下就会!) 详情看SounetVIP公司招聘:http://www.sounetvip.com/ssfm/xinkeor/?73931-1.html 邮箱:vipkeor@126.com 最近工资发放查看:www.sounetvip.com/gz.html (请注意,应聘不用交任何费用,押金等)

chinaunix网友2009-09-24 14:51:52

呵呵,勤快啊,阿甘~~ 顶了!!!!!!!!!

chinaunix网友2009-09-23 22:07:31

老规矩,先顶加收藏!