OO SALV的栏位功能

SALV的栏位功能主要是通过CL_SALV_COLUMN_TABLE和CL_SALV_COLUMNS_TABLE这两个类的实现的。
SALV的栏位属性的详细功能包括异常状态图标、图标、符号、复选框、按钮、热点、超链接、单元格类型、单元格颜色、某一栏位颜色、某一行颜色,栏位隐藏等。

关于颜色等样式属性,可以单独设置,也可以通过单元格(cell)style去设置。可以查看接口IF_SALV_C_CELL_TYPE,如下:

具体实现方法如下:
在SALV的输入参数内表中定义一个保存style的字段,字段类型为salv_t_int4_column,是个表类型,表类型中的结构(structure)定义如下,由一个列名和对应值组成。当不指定列名,只对value赋值,意味着整行的单元格都应用同一个style,如果指定列名,则对指定的与列名相同的应用style。设置好后要保存到内表中。

关于事件的实现,其中要能读到内表,所以要将内表放到能调取到的地方。具体各种事件参见类,代码以热点及双击事件作为代表。

REPORT  ZSALV02.
TABLES:VBAK.
TYPE-POOLS: ICON, SLIS,SYM.
CLASS SALV_DISPLAY DEFINITION.PUBLIC SECTION.METHODS:DATA_DISPLAY.PRIVATE SECTION.TYPES:BEGIN OF TY_DATA,CHECKBOX   TYPE CHAR1,T_COLOR    TYPE LVC_T_SCOL,T_CELLTYPE TYPE SALV_T_INT4_COLUMN,VBELN      TYPE VBAK-VBELN,ERDAT      TYPE VBAK-ERDAT,ERZET      TYPE VBAK-ERZET,ERNAM      TYPE VBAK-ERNAM,AUART      TYPE VBAK-AUART,NETWR      TYPE VBAK-NETWR,END OF TY_DATA.DATA:LT_DATA TYPE STANDARD TABLE OF TY_DATA,WA_DATA TYPE TY_DATA.DATA:S_ALV TYPE REF TO CL_SALV_TABLE.DATA:LR_FUNCTIONS           TYPE REF TO CL_SALV_FUNCTIONS,LR_EVENTS              TYPE REF TO CL_SALV_EVENTS_TABLE,LR_COLUMNS             TYPE REF TO CL_SALV_COLUMNS_TABLE,LR_COLUMN              TYPE REF TO CL_SALV_COLUMN_TABLE,LR_FUNCTIONAL_SETTINGS TYPE REF TO CL_SALV_FUNCTIONAL_SETTINGS.DATA: G_COLOR  TYPE LVC_S_COLO, "列颜色LS_COLOR TYPE LVC_S_SCOL,LT_COLOR TYPE LVC_T_SCOL. "行颜色及单元格颜色DATA: LT_CELLTYPE TYPE SALV_T_INT4_COLUMN.DATA: LS_CELLTYPE LIKE LINE OF LT_CELLTYPE.METHODS:COLUMN_SET CHANGING P_ALV TYPE REF TO CL_SALV_TABLE,ON_LINK_CLICK FOR EVENT LINK_CLICK OF CL_SALV_EVENTS_TABLE IMPORTINGROW"事件触发所在的行号COLUMN,"事件触发所在的列名HOTPOT_CLICK FOR EVENT LINK_CLICK OF CL_SALV_EVENTS_TABLE IMPORTINGROW "事件触发所在的行号COLUMN,"事件触发所在的列名DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_SALV_EVENTS_TABLE IMPORTINGROW "事件触发所在的行号COLUMN."事件触发所在的列名
ENDCLASS.CLASS SALV_DISPLAY IMPLEMENTATION.METHOD DATA_DISPLAY.DEFINE ADD_COLOR.CLEAR LS_COLOR.LS_COLOR-FNAME = &1.LS_COLOR-COLOR-COL = &2.LS_COLOR-COLOR-INT = 1.LS_COLOR-COLOR-INV = 0.LS_COLOR-NOKEYCOL = 'X'.APPEND LS_COLOR TO LT_COLOR.END-OF-DEFINITION.SELECT * FROM VBAK INTO CORRESPONDING FIELDS OF TABLE LT_DATA  UP TO 20 ROWS.WA_DATA-NETWR = 2222222222.APPEND WA_DATA TO LT_DATA.CLEAR:WA_DATA.LOOP AT LT_DATA INTO WA_DATA.IF WA_DATA-NETWR > 1000."单元格颜色条件LS_COLOR-FNAME = 'NETWR'.LS_COLOR-COLOR-COL = '5'.LS_COLOR-COLOR-INT = '0'."加深LS_COLOR-COLOR-INV = '0'."前景背景颜色反转APPEND LS_COLOR TO  LT_COLOR.WA_DATA-T_COLOR = LT_COLOR.MODIFY LT_DATA FROM WA_DATA.CLEAR:LS_COLOR,LT_COLOR."注意每次刷新内表及工作区ENDIF.IF WA_DATA-AUART = 'ZCQ'.
*        ADD_COLOR 'VBELN' 4."行颜色可以使用宏对每个单元格定义
*        ADD_COLOR 'ERDAT' 4.
*        ADD_COLOR 'ERZET' 4.
*        ADD_COLOR 'ERNAM' 4.
*        ADD_COLOR 'AUART' 4.
*        ADD_COLOR 'NETWR' 4.LS_COLOR-COLOR-COL = COL_NEGATIVE."行颜色也可以不指定列名就是整行LS_COLOR-COLOR-INT = '0'."加深LS_COLOR-COLOR-INV = '0'."前景背景颜色反转APPEND LS_COLOR TO  LT_COLOR.WA_DATA-T_COLOR = LT_COLOR.MODIFY LT_DATA FROM WA_DATA.CLEAR:LS_COLOR,LT_COLOR."注意每次刷新内表及工作区ENDIF.
*     ZZK的订单类型单元格设定成按钮IF WA_DATA-AUART = 'ZZK'.LS_CELLTYPE-COLUMNNAME = 'AUART'.LS_CELLTYPE-VALUE      = IF_SALV_C_CELL_TYPE=>BUTTON.APPEND LS_CELLTYPE TO LT_CELLTYPE.WA_DATA-T_CELLTYPE = LT_CELLTYPE.MODIFY LT_DATA FROM WA_DATA.CLEAR:LS_COLOR,LT_COLOR,LS_CELLTYPE,LT_CELLTYPE."注意每次刷新内表及工作区ENDIF.
*     只有用户名为80181007 ERNAM列设定hotspotIF WA_DATA-ERNAM = '80181007'.LS_CELLTYPE-COLUMNNAME = 'ERNAM'.LS_CELLTYPE-VALUE      = IF_SALV_C_CELL_TYPE=>HOTSPOT.APPEND LS_CELLTYPE TO LT_CELLTYPE.WA_DATA-T_CELLTYPE = LT_CELLTYPE.MODIFY LT_DATA FROM WA_DATA.CLEAR:WA_DATA,LS_COLOR,LT_COLOR,LS_CELLTYPE,LT_CELLTYPE."注意每次刷新内表及工作区ENDIF.ENDLOOP.TRY  .CL_SALV_TABLE=>FACTORY( IMPORTING R_SALV_TABLE = S_ALV CHANGING T_TABLE = LT_DATA ).CATCH  CX_SALV_MSG.ENDTRY."显示ALV的标准功能LR_FUNCTIONS = S_ALV->GET_FUNCTIONS( ).LR_FUNCTIONS->SET_ALL( 'X' ).ME->COLUMN_SET( CHANGING P_ALV = S_ALV )."=====事件注册
*    DATA:HANDLER TYPE REF TO LCL_HANDLE_EVENTS.LR_EVENTS = S_ALV->GET_EVENT( )."注册事件至类
*    CREATE OBJECT HANDLER.SET HANDLER ME->HOTPOT_CLICK FOR LR_EVENTS.SET HANDLER ME->DOUBLE_CLICK FOR LR_EVENTS.SET HANDLER ME->ON_LINK_CLICK FOR LR_EVENTS.S_ALV->DISPLAY( ).ENDMETHOD.METHOD COLUMN_SET.LR_COLUMNS = P_ALV->GET_COLUMNS( ).
*    LR_COLUMNS->SET_OPTIMIZE( 'X' )."设置全局列宽优化LR_COLUMNS->SET_HEADERS_VISIBLE( 'X' ).   "设置标题栏是否可见LR_FUNCTIONAL_SETTINGS = S_ALV->GET_FUNCTIONAL_SETTINGS( ).TRY .LR_COLUMNS->SET_CELL_TYPE_COLUMN( 'T_CELLTYPE' ).LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( 'VBELN' ).LR_COLUMN->SET_MEDIUM_TEXT( '销售订单号2')."修改列名LR_COLUMN->SET_VISIBLE( 'X' )."可以设置列不可见LR_COLUMN->SET_OPTIMIZED( 'X' )."单独设置列宽自适应LR_COLUMN->SET_CELL_TYPE( IF_SALV_C_CELL_TYPE=>HOTSPOT ).LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( 'ERDAT' ).G_COLOR-COL = '6'.G_COLOR-INT = '1'.G_COLOR-INV = '0'.LR_COLUMN->SET_COLOR( G_COLOR )."设置列颜色LR_COLUMNS->SET_COLOR_COLUMN( 'T_COLOR' )."设置行颜色及单元格颜色"设置复选框栏位LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( 'CHECKBOX' ).LR_COLUMN->SET_CELL_TYPE( IF_SALV_C_CELL_TYPE=>CHECKBOX_HOTSPOT ).LR_COLUMN->SET_LONG_TEXT( '选择' )."设置热点LR_COLUMN ?= LR_COLUMNS->GET_COLUMN( 'VBELN' ).LR_COLUMN->SET_CELL_TYPE( IF_SALV_C_CELL_TYPE=>HOTSPOT ).CATCH CX_SALV_NOT_FOUND.CATCH CX_SALV_DATA_ERROR.CATCH CX_SALV_EXISTING.ENDTRY.ENDMETHOD.METHOD HOTPOT_CLICK.
*    MESSAGE '你单击了我' TYPE 'I'.READ TABLE ME->LT_DATA INTO WA_DATA INDEX ROW."读当前行CASE COLUMN."取列名WHEN 'VBELN'.SET PARAMETER ID 'AUN'  FIELD WA_DATA-VBELN.CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.ENDCASE.ENDMETHOD.METHOD DOUBLE_CLICK.
*    MESSAGE '你双击了我' TYPE 'I'.READ TABLE ME->LT_DATA INTO WA_DATA INDEX ROW."读当前行CASE COLUMN."取列名WHEN 'ERNAM'.SET PARAMETER ID 'XUS'  FIELD WA_DATA-ERNAM.CALL TRANSACTION 'ZSD053' AND SKIP FIRST SCREEN.ENDCASE.ENDMETHOD.METHOD ON_LINK_CLICK."复选框选中操作READ TABLE ME->LT_DATA ASSIGNING FIELD-SYMBOL(<FS_DATA>) INDEX ROW."读当前行IF <FS_DATA>-CHECKBOX EQ ''.<FS_DATA>-CHECKBOX = 'X'.ELSE.<FS_DATA>-CHECKBOX = ''.ENDIF.ME->S_ALV->REFRESH( ).ENDMETHOD.
ENDCLASS.START-OF-SELECTION.DATA:LR_DISPLAY TYPE REF TO SALV_DISPLAY.CREATE OBJECT LR_DISPLAY.LR_DISPLAY->DATA_DISPLAY( ).

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

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

相关文章

第2章:建模篇——第1节:点线面的选择与控制

目录 1.模式的切换 &#xff08;1&#xff09;编辑模式的切换 &#xff08;2&#xff09;点线面的切换 2.点线面的选择 &#xff08;1&#xff09;选择的设置 &#xff08;2&#xff09;循环选择 3.点线面的控制 4.总结 1.模式的切换 &#xff08;1&#xff09;编辑模…

深入解析嵌套事务:原理与应用

嵌套事务是指在事务执行过程中启动另一个事务形成的层级调用结构&#xff0c;主要用于处理跨服务或复杂业务场景的事务一致性控制。其核心是通过事务传播机制管理多个操作的原子性&#xff0c;具体原理和应用如下&#xff1a;一、核心概念与工作原理层级结构 嵌套事务由顶层事务…

[激光原理与应用-168]:测量仪器 - 对光学指标进行测量的仪器

一、基础光学参数测量仪器 - 频率/波长/功率光学显微镜用途&#xff1a;观察微小物体的显微图像&#xff0c;用于材料科学、生物学等领域。特点&#xff1a;高放大倍数和分辨率&#xff0c;可清晰显示微观结构。光谱分析仪用途&#xff1a;测量发光体的辐射光谱&#xff0c;分析…

MPC-in-the-Head 转换入门指南

1. 引言 本文将探讨构建零知识证明&#xff08;ZKP&#xff09;的一种非常有趣的方法&#xff1a; MPC-in-the-Head Transformation&#xff08;转换&#xff09;。 该方法最早由 2007 年的论文 Zero-knowledge from secure multiparty computation 提出&#xff0c;通常被称…

SpringBoot的优缺点

题目详细答案优点快速开发&#xff1a;Spring Boot 通过自动配置和大量的开箱即用功能&#xff0c;使得开发者可以快速启动和运行一个应用程序&#xff0c;无需进行繁琐的配置工作。简化配置&#xff1a;Spring Boot 提供了自动配置和 "starter" 依赖&#xff0c;简化…

[激光原理与应用-171]:测量仪器 - 能量型 - 激光能量计(单脉冲能量测量)

一、工作原理激光能量计通过光电效应或光热效应将激光脉冲能量转换为可测量的物理信号&#xff0c;核心原理可分为两类&#xff1a;光电型原理光电效应&#xff1a;激光照射光电材料&#xff08;如硅、硒化锌&#xff09;时&#xff0c;光子激发电子产生光电流或光电压。通过测…

四、应急响应

一、linux入侵排查 思路: 1、查看帐号 查看/etc/passwd文件中使用 /bin/bash 作为默认 shell 的用户。 查询特权用户特权用户(uid 为0) 查询可以远程登录的帐号信息 除root帐号外&#xff0c;其他帐号是否存在sudo权限。 禁用或删除多余及可疑的帐号 用find命令查看拥有…

类和对象(中):类的默认成员函数、构造函数、析构函数

&#x1f525;个人主页&#xff1a;胡萝卜3.0 &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言&#xff1a;不试试怎么知道自己行不行 目录 一、类的默认成员函数 二、构造函数 三…

如何优雅地刷力扣 LeetCode - Easy

Source 力扣LeetCode题库 App > LeetCode > 题库 > 题解 Notes 仔细审题&#xff0c;明确输入输出&#xff0c;通过测试用例。先特殊&#xff0c;后寻常。逆向思维。 在条件语句中用!代替&#xff0c;提前终止循环&#xff0c;减少嵌套层级&#xff08;else&#…

AI绘画:生成唐初程咬金全身像提示词

根据唐代历史记载和艺术形象特征&#xff0c;以下是优化后的中文Midjourney 提示词&#xff0c;突出程咬金的猛将气质与唐初甲胄细节&#xff1a; 核心提示词&#xff08;战场形象&#xff09; 中年猛将程咬金&#xff0c;全身甲胄像&#xff0c;唐初光要甲制式&#xff1a;身…

【实时Linux实战系列】实时数据流处理框架分析

背景与重要性在当今数字化时代&#xff0c;数据的实时处理变得至关重要。无论是金融交易、工业自动化还是物联网&#xff08;IoT&#xff09;设备&#xff0c;都需要能够快速处理和响应数据流&#xff0c;以确保系统的高效运行和决策的及时性。实时Linux操作系统因其低延迟和高…

一周学会Matplotlib3 Python 数据可视化-Hello World编写

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Matplotlib3简介 Matplotlib 是 Python 最流行的数据可视化库之一&#xff0c;广泛应用于科学计算、数据分析、科研绘…

中国MCP市场:腾讯、阿里、百度的本土化实践

中国MCP市场&#xff1a;腾讯、阿里、百度的本土化实践 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一个特性都是我放飞的…

房产证识别在房产行业的技术实现及应用原理

技术实现1. 图像采集与预处理图像获取&#xff1a;通过高分辨率扫描仪或手机摄像头获取房产证图像预处理技术&#xff1a;去噪处理&#xff08;消除扫描噪声&#xff09;图像增强&#xff08;提高对比度&#xff09;倾斜校正&#xff08;自动旋转至正确角度&#xff09;二值化处…

决策树技术详解:从理论到Python实战

​决策树像人类的思考过程&#xff0c;用一系列“是/否”问题层层逼近答案​一、决策树的核心本质决策树是一种模仿人类决策过程的树形结构分类/回归模型。它通过节点&#xff08;问题&#xff09;​​ 和 ​边&#xff08;答案&#xff09;​​ 构建路径&#xff0c;最终在叶节…

Herd-proof thinking

Let’s dive into “herd-proof thinking” — the mindset and tactics that help you stay sharp, independent, and immune to manipulative systems.&#x1f9e0; Part 1: The Foundation of Herd-Proof Thinking 1. Recognize Incentives“If you don’t know who the pr…

day068-DevOps基本知识与搭建远程仓库

文章目录0. 老男孩思想-传统文化1. 运维人员对网站集群的关注项2. CI、CD3. DevOps4. 环境5. Git5.1 **为什么叫 “Git”&#xff1f;**5.2 Git的核心设计理念5.3 Git工作空间5.4 分支 branch5.5 命令5.5.1 配置git用户信息5.5.2 初始化git仓库5.5.3 将文件放入暂存区5.5.4 提交…

分布式文件系统07-小文件系统的请求异步化高并发性能优化

小文件系统的请求异步化高并发性能优化222_分布式图片存储系统中的高性能指的到底是什么&#xff1f;重构系统架构&#xff0c;来实现一个高性能。然后就要做非常完善的一个测试&#xff0c;最后对这个系统做一个总结&#xff0c;说说后续我们还要做一些什么东西。另外&#xf…

【C#补全计划:类和对象(十)】密封

一、密封类1. 关键字&#xff1a;sealed2. 作用&#xff1a;使类无法再被继承&#xff1b;在面向对象设计中&#xff0c;密封类的主要作用是不允许最底层子类被继承&#xff0c;可以保证程序的规范性、安全性3. 使用&#xff1a;using System;namespace Sealed {// 使用sealed关…

【视觉识别】Ubuntu 22.04 上安装和配置 TigerVNC 鲁班猫V5

系列文章目录 文章目录系列文章目录前言一、问题现象二、安装和配置步骤1.引入库2.安装完整组件3.修改 ~/.vnc/xstartup4. 设置权限5. 设置开机自启&#xff08;Systemd 服务&#xff09;总结前言 开发平台&#xff1a;鲁班猫V5 RK3588 系统版本&#xff1a;Ubuntu 22.04 一、…