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

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.lryc.cn/news/613217.html

相关文章:

  • 大屏数据展示页面,数据可视化可以用到的框架和插件
  • 阿里云部署若依后,浏览器能正常访问,但是apifox和小程序访问后报错链接被重置
  • day27 同步互斥
  • IDEA-Research推出的一系列检测、分割模型:从DINO(改进版DETR)、Grounding Dino、DINO-X到Grounded SAM2
  • 【SPIE出版| 前4届均已完成EI检索】第五届算法、高性能计算与人工智能国际学术会议(AHPCAI 2025)
  • 解决GitHub push失败-Failed to connect to github.com port 443: Timed out
  • YooAsset为什么要分组
  • 《深入Java包装类体系:类型转换原理与Integer缓存实战指南》
  • jetson上使用opencv的gstreamer进行MIPI和USB摄像头的连接以及udp推流
  • PyTorch RNN 名字分类器
  • 解决 npm i node-sass@4.12.0 安装失败异常 npm i node-sass异常解决
  • QT的拖拽功能
  • vue-plugin-hiprint 打印模版使用
  • DicomObjects COM 8.XX
  • 云平台运维工具 ——AWS 原生工具
  • 008 前端vue
  • 解决React白板应用中的画布内容丢失问题
  • [盛最多水的容器]
  • 【关于Java中==和equals( )和hashCode( )三者异同】
  • Java中接口与抽象类
  • 国内使用 npm 时配置镜像源
  • 2025年 IT 服务管理(ITSM)工具市场分析:选型逻辑与企业适配趋势报告
  • Spring Cloud系列—LoadBalance负载均衡
  • 边缘算力×AI应用:如何在2025年实现爆发式增长
  • 酉矩阵(Unitary Matrix)和随机矩阵
  • “认知裂缝边缘”地带
  • PyTorch LSTM文本生成
  • 基于深度学习的污水新冠RNA测序数据分析系统
  • 进程Linux
  • TSMaster-C小程序使用