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…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
