当前位置: 首页 > news >正文

【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。

http://www.jsqmd.com/news/491880/

相关文章:

  • LeetCode Hot 100——贪心部分
  • spaCy v2.0:自定义流水线组件与扩展属性实战
  • 赋能智慧电厂:一块开发板如何重塑能源安全巡检的底层逻辑
  • 相比高防IP,为什么现在的游戏公司更倾向于选择“湘情盾”?
  • 2026年全国精密传动设备供应商选型测评:行星减速机与中空旋转平台综合指南 - 深度智识库
  • 从标准件到定制化:2026车床刀座选型全流程指南与品牌推荐 - 品牌推荐大师1
  • Linux 基础IO (五)深入理解文件系统
  • 国产化编辑器如何扩展KindEditor的Excel公式导入?
  • 将文本转化为向量化表示
  • ansys apdl 车轨耦合车桥耦合 列车模型:考虑车体、转向架、车轮质量和二系悬挂 钢轨
  • 计算机毕业设计springboot高校学生党员信息管理系统 基于SpringBoot的高校党建信息化管理平台 基于SpringBoot的智慧校园党员服务系统
  • 全志H618
  • ceph提供rbd存储
  • 飞函私有化,安全重塑跨部门协作
  • 建议收藏|2026知网新规下如何降AI?国内外5款降低AIGC率工具实测(含免费降AI教程) - 殷念写论文
  • Unity Shader 实战:从零掌握 PBR 基于物理的渲染
  • django基于大数据技术的医疗数据分析与研究
  • CoPaw网页爬虫skill技能及定时任务管理
  • Linux 命令之 uname 详解(查看系统信息)
  • Python全栈入门到实战【基础篇 23】函数式编程:高阶函数与匿名函数
  • 中断很难?看完这篇就懂了
  • Claude code安装/CC switch安装
  • 伟伦定制工厂店
  • 医疗HIS系统Java如何通过控件优化病历图片文件夹的浏览器端分片加密断传?
  • 315严选好锅:京尚纯陶瓷锅具,健康看得见
  • 基于Spring Boot的高校二手市场交易系统设计与实现vue3
  • 2026大专财富管理毕业生面临的岗位饱和问题及数据分析技能的应对策略
  • COMSOL太赫兹超表面BIC与能带折叠
  • 57.状态机的几种实现方式
  • sqlmap 魔改研究 —— 从流量特征到 WAF 对抗