SAP 使用cl_gui_timer自动刷新屏幕的用法详解 <转载>
原文链接: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_cfw=>set_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_CFW=>SET_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.
相关文章:

SAP 使用cl_gui_timer自动刷新屏幕的用法详解 <转载>
原文链接:https://blog.csdn.net/SAPmatinal/article/details/130483382 SAP 使用cl_gui_timer自动刷新屏幕的用法详解 这个类在初始化的时候会设置一个定时间隔,每隔这个时间就会触发一次FINISHED事件。利用这个类的特性,可以实现很多东西&…...

golang中的Interface接口 类型断言、接口赋值、空接口的使用、接口嵌套
Interface整理 文章目录 Interface整理接口嵌套接口类型断言类型判断 type-switch使用方法集与接口空接口实例 接口赋值给接口 接口是一种契约,实现类型必须满足它,它描述了类型的行为,规定类型可以做什么。接口彻底将类型能做什么࿰…...
使用设计模式省去大量的if-elsef分支
1.测试类 Testpublic void test7() {/*** 使用设计模式前*///模拟入参String name "?";if("张三".equals(name)){System.out.println("按照张三的策略执行的任务!");}else if ("李四".equals(name)){System.out.println("按照李…...

Tomcat安装与配置文件解读
简介 Tomcat是Apache软件基金会(Apache Software Foundation)项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在…...

计算机网络重点概念整理-第一章 计算机网络概述【期末复习|考研复习】
计算机网络复习系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 前言一、计算机网络概述1.1 计算机网络的定义:1.2 计算机网…...

Day 11 python学习笔记
模块 内置模块 random random:随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法: random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…...

HarmonyOS鸿蒙原生应用开发设计- 图标库
HarmonyOS设计文档中,为大家提供了独特的图标库,开发者可以根据需要直接引用。 图标库可以分为双色图标、填充图标、线性图标。具体分为 键盘、箭头、连接状态、媒体、人、设备、索引、通信、文件、物体与工具等。 整体分类 开发者直接使用官方提供的图标…...

微软bing大声朗读文档或网页卡顿老是中断,用离线的huihui就很流畅但没那么自然
默认的xiaoxiao_online好听,但卡顿,朗读功能确实受到了网络状态的影响。 大概率是网络问题。...

Java VMTranslator Part I
目录 堆栈运算命令 基本思路 核心代码 Parser Code Writer Main 实验结果,使用SimpleAdd、StackTest进行验证 内存访问命令 基本思路 核心代码 Parser Code Writer Main 实验结果,使用进行验证。对比生成的二进制代码文件。 用Java写一个翻…...
ES6带来那些js新特性?
ECMAScript 6(ES6),也称为 ECMAScript 2015,引入了许多重大的改进和新特性,以改善JavaScript语言的功能和可读性。以下是一些ES6中的主要改变和新特性: 1、let 和 const 声明: 引入了 let 和 const 关键字…...
js数组深拷贝汇总
1.for 循环实现数组的深拷贝 通过对数组的for循环,即可实现对数组的深拷贝了。 var arr [1,2,3,4,5] var arr2 copyArr(arr) function copyArr(arr) {let res []for (let i 0; i < arr.length; i) {res.push(arr[i])}return res }2.slice 方法实现数组的深…...

错误 LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突
这个错误表明你在进行链接时,模块的计算机类型与目标计算机类型冲突。 在这里,“x64”代表64位系统,“X86”代表32位系统。 要解决这个问题,你需要确保你的所有模块(包括库文件和依赖项)都是与你的目标计…...

java八股文(基础篇)
面向过程和面向对象的区别 面向过程:在解决问题时,特别自定义函数编写一步一步的步骤解决问题。 面向对象:其特点就是 继承,多态,继承,在解决问题时,不再注重函数的编写,而在于注重…...

window系统修改rabbitmq 默认端口
安装完rabbitmq之后,默认的client端口是5672, 控制台访问端口是15672,rabbitmq管理工具启动之后在浏览器中输入地址: http://localhost:15672/ 就可以访问后台 , 默认管理员账号:guest 密码&#x…...

七人拼团模式:颠覆你的购物观念,499元产品让你赚翻天!
七人拼团模式是一种创新的消费模式,通过聚集消费者的购买力,让消费者能够以更优惠的价格购买到优质的商品。下面我们以499元的产品为例,详细介绍七人拼团模式的玩法规则和收益计算。 玩法规则: 消费者购买499元的指定产品后&…...

【机器学习合集】模型设计之卷积核设计 ->(个人学习记录笔记)
文章目录 卷积核设计1. 基于参数压缩的卷积设计1.1 【11卷积】1.2 【11卷积典型应用】1.3 【小卷积的使用】 2. 基于感受野的卷积设计2.1 膨胀卷积(带孔卷积,strous convolution)2.2 可变形卷积2.3 非局部卷积 3. 基于卷积操作的优化3.1 移位网络3.2 加法网络 卷积核…...
JS实现用户二次确认后再提交表单
HTML代码 <form id"importForm" action"" method"post" enctype"multipart/form-data" onsubmit"return confirmSubmit()"> ...... <input id"btnImportSubmit" class"btn btn-primary" type…...

1992-2021年全国各省经过矫正的夜间灯光数据(GNLD、VIIRS)
1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:31省 4、指标解释&…...

JMeter的使用——傻瓜式学习【中】
目录 前言 1、JMeter参数化 1.1、什么是参数化 1.2、用户定义的变量 1.2.1、什么时候使用用户定义的变量 1.2.2、使用“用户定义的变量”进行参数化的步骤: 1.2.3、案例 1.3、用户参数 1.3.1、什么时候使用用户参数? 1.3.2、使用“用户参数”进…...

MyBaties存储和查询json格式的数据(实体存储查询版本)
最近在做的功能,由于别的数据库有值,需要这边的不同入口的进来查询,所以需要同步过来,如果再继续一个一个生成列对应处理感觉不方便,如果没有别的操作,只是存储和查询,那就可以用MySql支持的jso…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...