ABAP - OOALV 用户交互事件

news2024/9/21 23:51:49
  • 当用户要根据ALV进行某些功能操作比如打印表单时,OOALV标准按钮无法满足用户需求的时候,就要用到自定义按钮来实现了。
  • 思路:在OOALV增加一个自定义按钮,类CL_GUI_ALV_GRID提供了内置事件toolbar来完成,通过自定义按钮的命令码实现OOALV联动,类CL_GUI_ALV_GRID提供了内置事件user_command来完成。
  • 实现步骤:
  1. 增加自定义按钮:
    CLASS cl_event DEFINITION.
      PUBLIC SECTION.
        METHODS handle_toolbar FOR EVENT toolbar
          OF cl_gui_alv_grid
          IMPORTING e_object
                    e_interactive.
    ENDCLASS.
    
    
    CLASS cl_event IMPLEMENTATION.
      METHOD handle_toolbar.
        DATA ls_button TYPE stb_button.
        CLEAR:ls_button.
    
        ls_button-function  = 'PRINT'.        "功能码
        ls_button-text      = '打印成绩单'.   "文本描述
        ls_button-icon      = icon_print.     "图标
        ls_button-quickinfo = '以PDF格式打印'."鼠标悬停在按钮时的简要说明
        "  ls_button-disabled  = 1.              "是否可用 1/0
        "按钮类型:0默认 1菜单和缺省 2菜单 3分隔符 4单选按钮 5复选框 6菜单项
        ls_button-butn_type = 0.
        APPEND ls_button TO e_object->mt_toolbar.
      ENDMETHOD.
    
    ENDCLASS.
     
  2.  按钮命令事件处理
    CLASS cl_event DEFINITION.
      PUBLIC SECTION.
        METHODS handle_user_command  FOR EVENT user_command
          OF cl_gui_alv_grid
          IMPORTING e_ucomm.  " 用户命令码
    
    ENDCLASS.
    
    CLASS cl_event IMPLEMENTATION.
      METHOD handle_user_command.
        CASE e_ucomm.
          WHEN 'PRINT'.
            MESSAGE '你点击了自定义打印按钮' TYPE 'I'.
          WHEN OTHERS.
        ENDCASE.
      ENDMETHOD.
    ENDCLASS.
     
  3.  通过事件处理类的实例对象给OOALVDUI的实例对象设置注册事件
      CREATE OBJECT go_con
        EXPORTING
          container_name = 'CONTORL'.
    
      CREATE OBJECT go_alv
        EXPORTING
          I_parent = go_con.
    
      DATA(lo_event) = NEW cl_event( ).
    
      SET HANDLER lo_event->handle_toolbar       FOR go_alv.
      SET HANDLER lo_event->handle_user_command  FOR go_alv.
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1481197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Flink连载(三十五):Flink基于Kubernetes部署(5)-Kubernetes 集群搭建-1

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 ​编辑

HTTPS是什么,详解它的加密过程

目录 1.前言 2.两种加密解密方式 2.1对称加密 2.2非对称加密 3.HTTPS的加密过程 3.1针对明文的对称加密 3.2针对密钥的非对称加密 3.3证书的作用 1.前言 我们知道HTTP协议是超文本传输协议,它被广泛的应用在客户端服务器上,用来传输文字,图片,视频,js,html等.但是这种传…

MyBatis 学习(五)之 高级映射

目录 1 association 和 collection 介绍 2 案例分析 3 一对一关联和一对多关联 4 参考文档 1 association 和 collection 介绍 在之前的 SQL 映射文件中提及了 resultMap 元素的 association 和 collection 标签,这两个标签是用来关联查询的,它们的属…

指针与malloc动态内存申请,堆和栈的差异

定义了两个函数print_stack()和print_malloc(),分别演示了两种不同的内存分配方式:栈内存和堆内存。然后在main()函数中调用这两个函数,并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的,当函数返回后&…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像(NEIT)技术以其无辐射、非接触、响应速度快的特点,为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统,实现了数据的在线采集及实时成像,提高…

黑马JavaWeb课程中安装vue脚手架出现的问题

1 安装node.js 要想前端工程化,必须安装node.js,前端工程化的环境。 在成功安装node.js后, 修改全局包安装路径为Node.js安装目录, 修改npm镜像源为淘宝镜像源,这里出现第一个问题,视频中给的淘宝镜像为&…

力扣SQL50 无效的推文 查询

Problem: 1683. 无效的推文 思路 👨‍🏫 参考 char_length(str):计算 str 的字符长度length(str):计算 str 的字节长度 Code select tweet_id from Tweets where char_length(content) > 15;

G8-ACGAN理论

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、对比分析 前面的文章介绍了CGAN&#xf…

面试官上来就让手撕HashMap的7种遍历方式,当场愣住,最后只写出了3种

HashMap的7种遍历方式 四大类遍历方式 其实在JDK1.8之前,遍历的方式远没有现在这样多,为了提高开发效率,JDK1.8开始引入了Stream流、Lambda 表达式等新特性,这让很多数据结构的遍历方式也丰富了起来。目前,常用的遍历方…

Node.js中的缓存策略和缓存技巧

在Node.js中,缓存策略和缓存技巧是提升应用性能和用户体验的关键因素。通过有效地利用缓存,我们可以显著减少系统资源的消耗,加快数据访问速度,从而提升整体的网站性能。本文将针对Node.js中的缓存策略和缓存技巧展开深入探讨&…

Windows下卸载JDK

操作步骤: 直接到windows程序卸载面板进行卸载 然后删除已配置的环境变量

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题,它会导致程序的内存占用逐渐增加,最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具,TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…

设置matplotlib的style和rcParams

在matplotlib文档中,有3中设置matplot的方法,见文档 https://matplotlib.org/stable/users/explain/customizing.html 目前用得比较多的是设置rcParams,而设置rcParams也有两种方式。下面以 plot的cycler为例进行说明。 cycler就是定义的一些…

13.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-如果没有工具就创造工具

内容参考于: 易道云信息技术研究院VIP课 上一个内容 :12.游戏网络通信存在的问题 现在把游戏网络的架构看了一个小小的大概,可以用它的接口发数据接收数据了,如果真正想用它这一套东西,真正核心不在于它的接口而在于…

私域必备宝藏工具:多微信统一管理聚合聊天

对于私域流量运营者来说,如何高效管理多个微信号成为了一道难题。 不过不用担心,通过微信管理系统,可以实现多个微信同时登录,同一个界面内聚合聊天,省去来回切换账号的步骤。而且,还有很多非常实用且便捷…

Chrome插件 | WEB 网页数据采集和爬虫程序

无边无形的互联网遍地是数据,品类丰富、格式繁多,包罗万象。数据采集,或说抓取,就是把分散各处的内容,通过各种方式汇聚一堂,是个有讲究要思考的体力活。君子爱数,取之有道,得注意遵…

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

camunda7流程版本的控制和使用

1、流程定义的版本控制 从本质上讲&#xff0c;业务流程是长期运行的&#xff0c;流程实例可能会持续数周或数月。同时&#xff0c;流程实例的状态将存储到数据库中。但是&#xff0c;即使仍有正在运行的实例&#xff0c;您也可能需要更改流程定义。 流程引擎支持此功能&…

笔记73:ROS中的各种消息包

参考视频&#xff1a; 33.ROS 的标准消息包 std_msgs_哔哩哔哩_bilibili 34. ROS 中的几何包 geometry_msgs 和 传感器包 sensor_msgs_哔哩哔哩_bilibili 标准消息包&#xff1a;std_msgs常用消息包&#xff1a;common_msgs导航消息包&#xff1a;nav_msgs几何消息包&#xf…

C++数据结构与算法——二叉树的属性

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…