ABAP - Function ALV 05 添加选择框列、全选、取消全选

  • 很多用户不习惯原生GRID的选择模式,所以业务需要用到自定义的选择框来进行数据的操作,显示效果如图所示,增加一条选择列,且配置全选和全选全选的按钮功能,如下图所示。

  • 实现这种功能需要用到Fieldcat的参数控制以及GUI状态的配置和处理 
  • 1.Fieldcat参数控制,将改成设置成选择框的样式,且该列可以被编辑
** Fieldcat 变量定义
DATA:gt_fieldcat TYPE lvc_t_fcat,gs_fieldcat LIKE LINE OF gt_fieldcat.** FieldCat的宏
DATA gv_pos TYPE i.DEFINE %%add_fieldcat.gv_pos = gv_pos + 1.gs_fieldcat-col_pos = gv_pos.gs_fieldcat-fieldname = &1.gs_fieldcat-scrtext_m = &2.CASE &1.        "根据fieldname字段给结构做赋值控制WHEN 'SEL'.gs_fieldcat-checkbox = 'X'. "该列选择框显示gs_fieldcat-edit     = 'X'. "该列可以编辑ENDCASE.APPEND gs_fieldcat TO gt_fieldcat.CLEAR gs_fieldcat.
END-OF-DEFINITION.** Fieldcat字段映射处理%%add_fieldcat:'EBELN'    '采购单号',  "( 前面字段值不可变 后面字段描述可变 每一行都是)'EBELP'    '采购订单行号','SEL'      '选择'.
  • 2.GUI状态的配置和处理。需要在GUI状态添加自定义按钮,并且做数据更新。ALV增加自定义按钮参考:https://mp.csdn.net/mp_blog/creation/editor/136279698
FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield."应用方法将修改ALV的数据保存到内表中DATA lr_grid TYPE REF TO cl_gui_alv_grid.DATA l_tabix LIKE sy-tabix.  "系统参数   行号"此处代码将用户输入读入内表(这一步不可少)CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' "自动刷新数据IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->check_changed_data.rs_selfield-refresh = 'X'.   "此处代码阻止'REUSE_ALV_GRID_DISPLAY创建新的屏幕,造成屏幕多层rs_selfield-row_stable = 'X'. "保证行、列位置在自动刷新时不变rs_selfield-col_stable = 'X'.CASE r_ucomm.WHEN 'ALL'.LOOP AT gt_data INTO gw_data.gw_data-sel = 'X'.MODIFY gt_data FROM gw_data.ENDLOOP.WHEN 'SAL'.LOOP AT gt_data INTO gw_data.gw_data-sel = ''.MODIFY gt_data FROM gw_data.ENDLOOP.ENDCASE.ENDFORM.


  • 完整代码
TYPES:BEGIN OF ty_data,sel TYPE char1,ebeln TYPE ekpo-ebeln,ebelp TYPE ekpo-ebelp,END OF ty_data.DATA gt_data TYPE TABLE OF ty_data.
DATA gw_data TYPE ty_data.** Layout  变量定义
DATA gs_layout   TYPE lvc_s_layo.** Fieldcat 变量定义
DATA:gt_fieldcat TYPE lvc_t_fcat,gs_fieldcat LIKE LINE OF gt_fieldcat.** FieldCat的宏
DATA gv_pos TYPE i.DEFINE %%add_fieldcat.gv_pos = gv_pos + 1.gs_fieldcat-col_pos = gv_pos.gs_fieldcat-fieldname = &1.gs_fieldcat-scrtext_m = &2.CASE &1.WHEN 'SEL'.gs_fieldcat-checkbox = 'X'. "当做选择框显示gs_fieldcat-edit     = 'X'. "该字段可以编辑ENDCASE.APPEND gs_fieldcat TO gt_fieldcat.CLEAR gs_fieldcat.
END-OF-DEFINITION.START-OF-SELECTION.SELECT ekpo~ebeln  "采购订单抬头数据- 采购单号ekpo~ebelp  "采购订单明细数据- 采购订单行号INTO CORRESPONDING FIELDS OF TABLE gt_dataFROM ekpoUP TO 20 ROWS.** Fieldcat字段映射处理%%add_fieldcat:'EBELN'    '采购单号',  "( 前面字段值不可变 后面字段描述可变 每一行都是)'EBELP'    '采购订单行号','SEL'      '选择'.** Layout布局处理gs_layout-cwidth_opt = 'X'.     "自动优化列宽 (可以使用**在一行代码面前注释掉 看看ALV会有什么效果)gs_layout-zebra = 'X'.          "斑马纹输出** 调用FunctionALV需要传入的参数:展示数据,FieldCat,Layout,StatusCALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program        = sy-repidi_callback_pf_status_set  = 'FRM_SET_STATUS'i_callback_user_command   = 'FRM_USER_COMMAND'is_layout_lvc             = gs_layoutit_fieldcat_lvc           = gt_fieldcatTABLESt_outtab                 = gt_data[]EXCEPTIONSprogram_error            = 1OTHERS                   = 2.FORM frm_set_status USING p_extab TYPE slis_t_extab.SET PF-STATUS 'STANDARD'.
ENDFORM.FORM frm_user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield."应用方法将修改ALV的数据保存到内表中DATA lr_grid TYPE REF TO cl_gui_alv_grid.DATA l_tabix LIKE sy-tabix.  "系统参数   行号"此处代码将用户输入读入内表(这一步不可少)CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' "自动刷新数据IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->check_changed_data.rs_selfield-refresh = 'X'.   "此处代码阻止'REUSE_ALV_GRID_DISPLAY创建新的屏幕,造成屏幕多层rs_selfield-row_stable = 'X'. "保证行、列位置在自动刷新时不变rs_selfield-col_stable = 'X'.CASE r_ucomm.WHEN 'ALL'.LOOP AT gt_data INTO gw_data.gw_data-sel = 'X'.MODIFY gt_data FROM gw_data.ENDLOOP.WHEN 'SAL'.LOOP AT gt_data INTO gw_data.gw_data-sel = ''.MODIFY gt_data FROM gw_data.ENDLOOP.ENDCASE.ENDFORM.

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

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

相关文章

18 SpringMVC实战

18 SpringMVC实战 1. 课程介绍2. Spring与Spring MVC环境配置 1. 课程介绍 2. Spring与Spring MVC环境配置

Vue 卸载eslint

卸载依赖 npm uninstall eslint --save 然后 进入package.json中,删除残留信息。 否则在执行卸载后,运行会报错。 之后再起项目。

git之分支管理

一.理解分支 我们看下面这张图片: 在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀…

如何使用Lychee+cpolar搭建本地私人图床并实现远程访问存储图片

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站,可以看做是云存储的一部分,既可…

短链接的背后故事:为互联网用户带来的便捷与安全

title: 短链接的背后故事:为互联网用户带来的便捷与安全 date: 2024/2/26 14:58:58 updated: 2024/2/26 14:58:58 tags: 短链接技术起源长URL问题解决链接分享便利性链接跟踪与分析链接管理效率提升链接安全保障应用领域广泛 一、短链接的起源 短链接是一种将长UR…

高效备考2025年AMC8数学竞赛:做熟2000-2024年AMC8真题

这段时间,有小学生的家长朋友问,想给孩子学点数学拓展的知识,不局限于课堂所学。有什么可以推荐的活动或比赛。我个人的建议是可以了解下AMC8美国数学竞赛。主要有以下几个原因: 一是这个竞赛是美国数学协会(MAA&…

STM32程序(移植)中头文件的路径

例:#include "./BSP/LCD/lcd.h"为什么有的头文件加了路径? 先看AI的回答: 在C和C编程中,当我们在源文件中包含(或称为“引入”或“导入”)一个头文件时,编译器需要知道这个头文件的位置。通常,编译器会在…

聚水潭和金蝶云星空接口打通对接实战

聚水潭和金蝶云星空接口打通对接实战 对接系统聚水潭 聚水潭成立于2014年,创始人兼CEO骆海东拥有近三十年传统及电商ERP的研发和实施部署经验。聚水潭创建之初,以电商SaaSERP切入市场,凭借出色的产品和服务,快速获得市场的肯定。随…

C# TesseractOCR识别身份证号

https://github.com/tesseract-ocr/tessdata 新建控制台项目并添加包 Tesseract和Tesseract.Drawing 下载训练的模型 地址 代码实现 using Tesseract;var filePath "F:\\Desktop\\韦小宝.png"; var exePath AppDomain.CurrentDomain.BaseDirectory; var …

如何使用群晖NAS中FTP服务开启与使用固定地址远程上传下载本地文件?

文章目录 1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP地址连接 本文主要介绍如何在群晖NAS中开启FTP服务并结合cpolar内网穿透工具,实现使用固定公网地址远程访问群晖FTP服务实现文件上传下载。 Cpolar内…

组态王连接施耐德M580PLC

组态王连接施耐德M580 网络架构 网线连接PLC和装组态王软件的PC组态设置帮助 可先查看帮助:菜单栏点击【帮助】->【驱动帮助】,在弹出窗口中PLC系列选择莫迪康PLC的“modbusRtu\ASSCII\TCP”查看组态配置流程: 相关说明: 1、…

信创龙头|暴雨公司推出2024年兆芯新款台式机

2024年的战鼓已经打响,信创行业已走过三个年头,随着国家对信创产业的扶持,未来信创市场大有可期。 2024年疫情结束的第二个年头,经过一年的缓冲期,各行各业百废待兴,对新的一年充满了期望。 暴雨公司作为…

PT/PVT运动模式介绍:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十一)

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动…

TLS1.2抓包解析

1.TLS1.2记录层消息解析 Transport Layer SecurityTLSv1.2 Record Layer: Handshake Protocol: Client HelloContent Type: Handshake (22)Version: TLS 1.0 (0x0301)Length: 253Content Type:消息类型,1个字节。 i 0Version:协议版本&…

HuggingFists系统功能介绍(5)--环境资源

模型库 模型库用于管理由HuggingFists系统自己生成的或者外部导入的各种模型。如:HuggingFace网站提供的各类模型可导入该模块进行统一管理及部署。该功能目前在HuggingFists的社区版中并未提供。 环境管理 环境管理-工作节点 环境管理-服务配置 环境管理主要用于与…

GO数组解密:从基础到高阶全解

在本文中,我们深入探讨了Go语言中数组的各个方面。从基础概念、常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南。无论您是初学者还是经验丰富的开发者,这篇文章都将助您更深入地理解…

域名系统与IP地址分配

域名 域名的概述 域名是一个逻辑的概念,它不反映主机的物理地点 域名结构 由于数字形式的IP地址难以记忆和理解,为此人们采用英文符号来表示IP地址,这就产生了域名,域名长度不超过255各字符,每一层域名长度不超过6…

[云原生] 二进制安装K8S(中)部署网络插件和DNS

书接上文,我们继续部署剩余的插件 一、K8s的CNI网络插件模式 2.1 k8s的三种网络模式 K8S 中 Pod 网络通信: (1)Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享…

辽宁博学优晨教育视频剪辑培训探索学习新意义

在当今数字化快速发展的时代,视频已成为信息传达的重要载体。辽宁博学优晨教育视频剪辑培训应运而生,不仅为学员提供了专业的学习平台,更在探索学习的意义方面赋予了新的内涵。 视频剪辑作为现代媒体行业的重要技能,其学习意义不仅…

[c++] 智能指针(shared_ptr, weak_ptr, unique_ptr)

c 中的智能指针让 c 看起来像 java,go 这种带 GC 的语言,但和 GC 又不完全相同。c 中的智能指针使用引用计数,当引用计数减为 0 的时候就会立即释放资源,释放资源具有实时性;而像 java,go 这样的 GC 语言&a…