news 2026/8/9 22:58:12

【ABAP】ALV 指定单元格染色

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【ABAP】ALV 指定单元格染色

在 ALV GRID 中可以修改想强调的单元格染色。但是这相比强调行染色功能更注重系统资源,因此注重速度的程序中要考虑一下是否使用此功能。

在 ALV 报表开发中,为关键数据单元格设置醒目的颜色标识(如异常数值标红),能大幅提升报表的可读性和实用性。

一、内表结构定义

在内表中追加 lvc_t_scol 类型的颜色内表,该内表用于存储每个单元格的颜色配置信息。

TYPES:BEGIN OF ty_alv, category TYPE string, " 物料类别 werks TYPE werks_d, " 工厂 ... zmenge9 TYPE menge_d, " 前月差异(核心染色字段) ... cellcolor TYPE lvc_t_scol, " 单元格颜色字段(必须) END OF ty_alv. DATA: gt_alv TYPE TABLE OF ty_alv, gs_alv TYPE ty_alv, gt_fieldcat TYPE lvc_t_fcat, gs_fieldcat TYPE lvc_s_fcat, gs_layout TYPE lvc_s_layo, gs_stbl TYPE lvc_s_stbl, go_grid TYPE REF TO cl_gui_alv_grid.

二、ALV 布局绑定颜色字段

在设置 ALV 布局 lvc_s_scol 时,需通过 ctab_fname 参数指定颜色字段名称,让 ALV 控件识别并加载颜色配置。

*&----------------------------------------------------------------- *& 程序结束处理 *&----------------------------------------------------------------- END-OF-SELECTION. PERFORM frm_set_fieldcat . PERFORM frm_set_layout . PERFORM frm_sort_field. PERFORM frm_alv_show. *&---------------------------------------------------------------------* *& Form frm_set_layout *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_set_layout . gs_layout-cwidth_opt = 'X'. gs_layout-zebra = 'X'. gs_layout-sel_mode = 'A'. * gs_layout-no_merging = 'X'. * gs_layout-box_fname = 'SEL'. gs_layout-ctab_fname = 'CELLCOLOR'."单元格颜色名称 gs_layout-info_fname = 'CLR'."行颜色名称 PERFORM setting_cell . "设置单元格颜色 ENDFORM.

三、指定单元格颜色

根据需求,编写单元格颜色赋值逻辑,构造 lvc_s_scol 类型的颜色配置内表。这里我写的是当 zmenge9 这个字段大于0的时候,标记为红色。

另:ALV 常用颜色代码:

① col=1:灰色

② col=3:黄色

③ col=5:蓝色

④ col=6:红色(本文用)

⑤ col=7:橙色

FORM setting_cell. DATA: lt_color TYPE lvc_t_scol, " 颜色配置内表 ls_color TYPE lvc_s_scol, " 单单元格颜色配置 ls_field TYPE lvc_s_fcat, " 字段目录 index TYPE i. " 循环ALV数据行,逐行配置颜色 LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<ls_alv>). CLEAR: lt_color[]. index = index + 1. " 循环字段目录,定位目标字段 LOOP AT gt_fieldcat INTO ls_field. CLEAR: ls_color. ls_color-fname = ls_field-fieldname. " 绑定目标字段名 " 1. 定位需要染色的字段(如ZMENGE9:前月差异) IF ls_color-fname EQ 'ZMENGE9'. " 2. 业务规则:差异值>0时标红 IF <ls_alv>-zmenge9 > 0. " 3. 颜色参数配置(核心) ls_color-color-col = 6. " 颜色代码:6=红色(关键) ls_color-color-int = 0. " 强度:0=普通,1=高亮 ls_color-color-inv = 0. " 反色:0=不反色,1=反色 " 4. 将颜色配置插入内表 INSERT ls_color INTO TABLE lt_color. ENDIF. ENDIF. ENDLOOP. " 5. 将颜色配置赋值给当前行的cellcolor字段 CLEAR:<ls_alv>-cellcolor[]. INSERT LINES OF lt_color INTO TABLE <ls_alv>-cellcolor. ENDLOOP. ENDFORM.

四、ALV 显示与刷新

*&---------------------------------------------------------------------* *& Form frm_alv_show *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_alv_show . DATA: lv_handle TYPE slis_handl, gs_alv_variant LIKE disvariant. CLEAR gs_alv_variant. DATA:lt_event_exit TYPE slis_t_event_exit, ls_event_exit TYPE slis_event_exit. * gs_events-name = 'CALLER_EXIT'. * gs_events-form = 'FRM_CALLER_EXIT'. * APPEND gs_events TO gt_events . ls_event_exit-ucomm = '&SAL'. ls_event_exit-after = 'X'. * ls_event_exit-before = 'X'. APPEND ls_event_exit TO lt_event_exit . ls_event_exit-ucomm = '&ALL'. ls_event_exit-after = 'X'. * ls_event_exit-before = 'X'. APPEND ls_event_exit TO lt_event_exit. lv_handle = '0100'. gs_alv_variant-handle = lv_handle. gs_alv_variant-report = sy-repid. gs_alv_variant-username = sy-uname. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-cprog i_callback_pf_status_set = 'SUB_STATUS_SET' i_callback_user_command = 'SUB_USER_COMMAND' is_layout_lvc = gs_layout it_fieldcat_lvc = gt_fieldcat * it_sort_lvc = gt_sort i_save = 'A' is_variant = gs_alv_variant it_events = gt_events it_event_exit = lt_event_exit TABLES t_outtab = gt_alv EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suGT_OUTle error handling here ENDIF. ENDFORM.

=========================================================================这样就完成单元格的颜色标注了 END。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 22:57:30

中断很难?看完这篇就懂了

1.内核&#xff0c;总线&#xff0c;外设这三个概念是理解中断的必要前提&#xff0c;一个芯片具有内核、总线、外设这三个结构内核&#xff1a;芯片里的内核有很多架构&#xff0c;如ARM架构内核&#xff0c;它包含了许多核心部件&#xff0c;是整个芯片的大脑总线&#xff1a…

作者头像 李华
网站建设 2026/7/14 15:31:55

PyTorch保姆级安装教程

PyTorch保姆级安装教程 文章目录PyTorch保姆级安装教程一、准备环境1 安装 Python 环境&#xff08;推荐 Anaconda&#xff09;2 安装 VSCode二、创建 PyTorch 环境&#xff08;推荐&#xff09;激活环境三、安装 PyTorch四、验证 PyTorch 是否安装成功五、VSCode 配置 PyTorch…

作者头像 李华
网站建设 2026/7/14 15:32:11

FX5U PLC数据类型详解

本文详细整理了三菱FX5U系列PLC的各类数据类型定义、取值范围、存储方式及位操作方法。---1. Bool&#xff08;位&#xff09;类型| 属性 | 说明 ||------|------|| **数据位** | Bool只可能是 **0 / 1** || **数据大小** | 1位 || **X、Y点** | 8进制 |输入/输出区定义- **输入…

作者头像 李华
网站建设 2026/7/14 15:31:54

SEW 31C450-503-4-00移动变频器

SEW 31C450-503-4-00 移动变频器是 SEW-EURODRIVE 生产的一款工业驱动控制设备&#xff0c;属于 MOVITRAC 31C 系列。该变频器用于调节交流电机的转速和扭矩&#xff0c;通过改变输出频率和电压实现电机平稳启动、运行及调速控制&#xff0c;广泛应用于工业传动、自动化设备和移…

作者头像 李华
网站建设 2026/7/14 15:31:55

3分钟教你如何使用国产AI编程神器Trae的SOLO模式+Agent Skills+DeepSeek,零代码开发了一个超实用的爆款app(小白也能上手)

大家好&#xff0c;我是一个完全不懂桌面应用开发的小白。但我用3分钟时间&#xff0c;在Trae这个AI编程工具里&#xff0c;通过SOLO模式Agent Skills DeepSeek&#xff0c;搞出了一个桌面应用。这篇文章我就手把手教你&#xff0c;如何用AI编程工具&#xff0c;让AI帮你写代码…

作者头像 李华