转自http://blog.sina.com.cn/s/blog_701594f40100l8ms.html

ABAP:利用SAP定时器自动刷新ALV

曾于无意之中发现,SAP系统中有个名为CL_GUI_TIMER的类,测试下来发现还是挺好用的,比网上那些自动刷新的例子直观多了。这里我们就做个演示实例。

先做好准备工作:建立程序z04_gui_timer及其屏幕0100,屏幕上画个CUSTOM CONTAINER作为ALV的容器。顺便可以画个退出按钮用于退出界面,这样就省得SET PF-STATUS了。

下面就是我们的程序代码了,其实还是挺简单的:

REPORT z04_gui_timer.

CLASS lcl_event_handler DEFINITION DEFERRED.

DATA: ok_code LIKE sy-ucomm,
go_timer TYPE
REF TO cl_gui_timer,
go_evt_hndl TYPE REF TO
lcl_event_handler.

DATA: gt_spfli TYPE TABLE OF spfli,
go_grid
TYPE REF TO cl_gui_alv_grid,
go_container TYPE
REF TO cl_gui_custom_container.

START-OF-SELECTION.
CALL SCREEN 0100.

****** Module status_9000 OUTPUT
MODULE status_0100
OUTPUT.
DATA: g_init TYPE flag.
CLEAR ok_code.
IF
g_init IS INITIAL.
g_init = 'X'.

PERFORM init_0100.

ENDIF.
ENDMODULE.
" status_0100 OUTPUT

****** Module user_command_0100 INPUT
MODULE user_command_0100
INPUT.
CASE ok_code.
WHEN
'EXIT'.
LEAVE PROGRAM.

WHEN OTHERS.

ENDCASE.
ENDMODULE.
" user_command_0100 INPUT

****** 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.
CALL METHOD
go_grid->refresh_table_display.
* CALL METHOD
go_timer->cancel
*
EXCEPTIONS
* OTHERS =
9.
CALL METHOD go_timer->run
"必须重新激活定时器

EXCEPTIONS
OTHERS = 9.

ENDMETHOD.
"handle_timer
ENDCLASS.
"lcl_event_handler IMPLEMENTATION

****** Form init_0100
FORM init_0100.
SELECT * INTO TABLE
gt_spfli
FROM spfli UP TO 30 ROWS.
CREATE OBJECT
go_container
EXPORTING

container_name = 'CC_ALV'.
CREATE OBJECT go_grid

EXPORTING
i_parent = go_container.

CALL METHOD go_grid->set_table_for_first_display

EXPORTING
i_structure_name =
'SPFLI'
CHANGING

it_outtab = gt_spfli.

CREATE OBJECT go_evt_hndl.
CREATE OBJECT
go_timer
EXCEPTIONS

OTHERS = 9.
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_0100

说明:

(1) lcl_event_handler是自定义的类,用于处理cl_gui_timer的EVENT ‘finished’;

(2) 定时器的用法与VC、DELPHI有所不同,上次定时事件处理完毕后,必须CALL METHOD
go_timer->run重新激活,如此循环;

(3) 定时器并不会自动触发PAI事件,如有必要则可以在handle_timer中CALL METHOD
cl_gui_cfw=>set_new_ok_code来触发;

(4) 虽然我们的例子是基于screen的,但是基于List也是完全可行的。

自动刷新ALV的更多相关文章

  1. 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。

    本文版权桂博客园和作者吴双共同所有,转载和爬虫请注明原文地址 http://www.cnblogs.com/tdws/p/6016055.html 写在前面 大家好我是博客园的蜗牛,博客园的蜗牛就是我 ...

  2. Sublime3和Chrome配置自动刷新网页【实测可用】

    SublimeText2下的LiveReload在SublimeText3下无法正常使用,本文整理SublimeText3安装LiveReload的方法.win7下实测可用! 安装成功后,就不需要再手 ...

  3. gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全

    gulp是基于流的前端构件化工具.目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等. 这个鬼东西有什么用?请参考https://www.zhihu.com/question/3 ...

  4. 更为简单的Ctrl+S自动刷新浏览器工具-LinrF5

    一款自动刷新浏览器的小工具,它通过监听用户的按键,如果在键盘按下 Ctrl+S ,则自动刷新浏览器,操作十分简单,前端开发必备神器,快速提升工作效率,支持IE.火狐以及最新版的chrome33.之前我 ...

  5. SQL实现类似于自动刷新数据的功能

    有时需要在SQL中,定时刷新某张表,比如说是要定时查询某张表的行数,通常做法就是手动的按F5去执行来刷新数据.但是如果这个定时查询历时较长,10分钟,或半小时,手动的话肯定是要崩溃了.貌似SQL没有像 ...

  6. Javascript实现页面加载完成后自动刷新一遍清除缓存文件

    我们有些时候在加载页面时,会出现缓存文件对当前文件的表现效果有干扰,如有些缓存的样式文件会是页面效果发生改变,这时我们希望页面在加载时能自动刷新一遍清楚缓存文件. 但是由于跳转页面肯定会用到BOM部分 ...

  7. Notepad++自动刷新文本

    现在的日志信息往往都是打印在硬盘上,而不是保存到线上,所以我们常常会使用notepad++来查看硬盘上的文本文件 这时往往会出现两个问题 (1)在notepad++长时间最小化后,再次打开会提示是否下 ...

  8. 简单配置webpack自动刷新浏览器

    文档地址  http://webpack.github.io/docs/usage.html 首先全局安装webpack(我这里使用的是淘宝的cnpm) cnpm install webpack 检查 ...

  9. gruntJs篇之connect+watch自动刷新

    grunt很强大,可以帮我我们解决很多繁琐的操作,虽然刚接触不久,但依然感受到其强大之处,这篇记录一下通过grunt.js实现事实刷新页面, 省去了编码 -> 保存 -> F5..F5.. ...

随机推荐

  1. ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置

    核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有 ...

  2. ROS TF——learning tf

    在机器人的控制中,坐标系统是非常重要的,在ROS使用tf软件库进行坐标转换. 相关链接:http://www.ros.org/wiki/tf/Tutorials#Learning_tf 一.tf简介 ...

  3. 走进AngularJs(七) 过滤器(filter) - 吕大豹

    时间 2013-12-15 16:22:00  博客园-原创精华区 原文  http://www.cnblogs.com/lvdabao/p/3475426.html 主题 AngularJS 过滤器 ...

  4. 【codevs1036】商务旅行 LCA 倍增

    1036 商务旅行  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的 ...

  5. xcode6中如何添加pch文件

    在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编 ...

  6. Quartz之CronExpression

    一 Cron Expression 的格式 Quartz的cronExpression见官网文档说明: http://www.docjar.com/docs/api/org/quartz/CronEx ...

  7. SSH(2)-- ssh_config和sshd_config

    假定服务器ip为192.168.1.139,ssh服务的端口号为22,服务器上有个用户为pi,两边都是ubuntu. ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在 ...

  8. SQL语句查询所耗时间与效能的语句

    1)SQL查询所耗时间语句 原理:记录当前时间1,执行SQL语句,记录当前时间2,显示时间2与时间1的差. 由于第一次执行的所耗时间为真实时间,之后会保存在缓存中,所以第二次之后的查询所耗时间都会比第 ...

  9. iOS网页开发技术总结

    网页组成 一个有具体功能的完整的网页,一般由3部分组成 HTML:网页的具体内容和结构 CSS:网页的样式(美化网页最重要的一块) JavaScript:网页的交互效果,比如对用户鼠标事件做出响应 H ...

  10. MongoDB MapReduce(转)

    MapReduce MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).这样做的好处是可以在任务被分解后,可以通过大量机 ...