【OO ALV行、列和单元格设置颜色和可编辑属性】

概述

OO ALV,是指通过面向对象(object-Oriented)的方式实现的ALV输出
基本使用原理:

  • 通过界面调用,在界面的Customer Control控件中,输出ALV

CLASS ALV优势:

  • 使用面向对象的编程方式
  • 使用容器,可以在一个界面中指定位置进行ALV的输出

设置fieldcat

  • 定义:
    内表:LVC_T_FCAT
    结构:LVC_S_FCAT
  • 执行ALV输出前,对fieldcat表单进行赋值
  • 调用ALV输出方法时,传值给IT_FIELDCATALOG
    以下是fieldcat字段的作用总结表格:
字段名描述
COL_POS指定列的位置
FIELDNAME定义字段的名称
COLTEXT设置列的文本描述
KEY指定字段是否为关键字段
EDIT指示字段是否可编辑
OUTPUTLEN设置字段的输出长度
F4AVAILABL指定字段是否可用F4帮助
CHECKBOX指示字段是否为复选框
EMPHASIZE设置字段是否需要突出显示(高亮)

设置layout

  • 定义:
    结构:LVC_S_LAYO
  • 执行ALV输出前,对layout结构进行赋值
  • 调用ALV输出方法时,传值给IS_LAYOUT
字段名描述
CWIDTH_OPT最优化宽度SPACE, ‘X’
GRID_TITLE标题,在网格和工具条之间最长70个字符
NO_TOOLBAR隐藏工具条SPACE, ‘X’
NO_VGRIDLN隐藏垂直线SPACE, ‘X’
SEL_MODE选择模式SPACE, ‘A’, ‘B’, ‘C’, ‘D’
CTAB_FNAME带有复杂单元格颜色编码的字段名称最长30个字符
INFO_FNAME带有简单行彩色代码的字段名称最长30个字符
ZEBRA可选行颜色,如果设置了,出现了间隔色带SPACE, ‘X’
STYLEFNAME字段格式-

颜色设置

颜色值

颜色值的设置:C+X(颜色:1~7)X(是否加重:1/0)X(是否反色1/0)

以列为单位

在这里插入图片描述
在FIELDCAT中给EMPHASIZE字段赋值
在这里插入图片描述
效果

在这里插入图片描述

以行为单位

  • 在内表中增加一个字段,类型为CHAR,至少长度为4,例COLOR
* 根据需要修改结构体
TYPES: BEGIN OF GTY_STUDENT.
         INCLUDE STRUCTURE ZSTUDENT_JSM_01.
TYPES:   COLOR TYPE CHAR4,
*         COLOR TYPE LVC_T_SCOL,
       END OF GTY_STUDENT.
  • 给向输出内表获取数据时,给COLOR字段赋值
FORM GRM_GET_DATA .

  SELECT *
    FROM ZSTUDENT_JSM_01
    INTO CORRESPONDING FIELDS OF TABLE GTY_STU
    WHERE ZCODE IN S_ID.

  LOOP AT GTY_STU INTO GW_STU.
* 单元格颜色设置
    IF GW_STU-SEX IS INITIAL.
     GW_STU-COLOR = 'C610'.
    ENDIF.
    MODIFY GTY_STU FROM GW_STU.
  ENDLOOP.

ENDFORM.
  • 设置LAYOUT,给INFO_FNAME字段赋值颜色字段名称,例COLOR
    在这里插入图片描述
    效果
    在这里插入图片描述

以单元格为单位

  • 在内表中增加一个字段,类型为LVC_T_SCOL,例COLOR
* 根据需要修改结构体
TYPES: BEGIN OF GTY_STUDENT.
         INCLUDE STRUCTURE ZSTUDENT_JSM_01.
TYPES:   COLOR TYPE LVC_T_SCOL, 
       END OF GTY_STUDENT.
  • 在向输出内表取数据时,通过结构给COLOR字段内表赋值
FORM GRM_GET_DATA .
  DATA LS_SCOL LIKE LINE OF GW_STU-COLOR.
  SELECT *
    FROM ZSTUDENT_JSM_01
    INTO CORRESPONDING FIELDS OF TABLE GTY_STU
    WHERE ZCODE IN S_ID.

  LOOP AT GTY_STU INTO GW_STU.
* 单元格颜色设置
    IF GW_STU-SEX IS INITIAL.
      LS_SCOL-FNAME = 'SEX'.
      LS_SCOL-COLOR-COL = '3'.
      APPEND LS_SCOL TO GW_STU-COLOR.
    ENDIF.
    MODIFY GTY_STU FROM GW_STU.
  ENDLOOP.

ENDFORM.
  • 设置LAYOUT,给CTAB_FNAME字段赋值颜色字段名称,例COLOR
    在这里插入图片描述
    效果
    在这里插入图片描述

可修改属性设置

以表单为单位

  • 设置LAYOUT-EDIT,为X,表示可修改
    在这里插入图片描述
    效果
    在这里插入图片描述

以列为单位

  • 设置FIELDCAT-EDIT字段,为X,表示列可修改
    在这里插入图片描述
  • 在字段设置中指定了学生姓名字段的编辑状态为可编辑状态
    在这里插入图片描述
    效果
    在这里插入图片描述

以单元格为单位

1.在内表中增加一个字段,类型为LVC_T_STYL,例CELLSTL

* 根据需要修改结构体
TYPES: BEGIN OF GTY_STUDENT.
         INCLUDE STRUCTURE ZSTUDENT_JSM_01.
TYPES:   COLOR TYPE CHAR4,
         CELLSTL TYPE LVC_T_STYL,
       END OF GTY_STUDENT.

2.在需要设置修改属性的位置,通过结构给CELLSTL字段内表赋值

  • FIELDNAME,需要设置属性的字段名
  • STYLE,可修改属性:
    不可修改:CL_GU_ALV_GRID=>MC_STYLE_DISABLED
    可修改:CL_GUI_ALV_GRID=>MC_STYLE_ENABLED
FORM GRM_GET_DATA .
  DATA LS_STYL TYPE LVC_S_STYL.

  SELECT *
    FROM ZSTUDENT_JSM_01
    INTO CORRESPONDING FIELDS OF TABLE GTY_STU
    WHERE ZCODE IN S_ID.

  LOOP AT GTY_STU INTO GW_STU.
* 单元格颜色设置
*    IF GW_STU-SEX IS INITIAL.
*      GW_STU-COLOR = 'C610'.
*    ENDIF.

* 单元格可修改设置
    IF GW_STU-SEX IS INITIAL.
      LS_STYL-FIELDNAME = 'SEX'.
      LS_STYL-STYLE     = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED."ready for input
      APPEND LS_STYL TO GW_STU-CELLSTL .
    ENDIF.

    MODIFY GTY_STU FROM GW_STU.
  ENDLOOP.

ENDFORM.

3.设置LAYOUT,给STYLEFNAME字段赋值修改属性的字段名,例CELLSTL
在这里插入图片描述

以上步骤做完后还需要检查ALV表格初始化后是否有调用set_ready_for_input这个方法:
set_ready_for_input:用于控制ALV网格的输入状态。
i_ready_for_input:
1:表示将ALV设置为可输入状态,用户可以在表格中进行编辑、修改等操作。
0:表示将ALV设置为只读状态,用户无法编辑表格中的数据。

  CALL METHOD G_GRID_ALV->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
        IS_LAYOUT            = GW_LAYOUT_ALV
        IT_TOOLBAR_EXCLUDING = GT_EXCLUDE_ALV
        I_SAVE               = 'A'
        IS_VARIANT           = LW_VARIANT
      CHANGING
        IT_FIELDCATALOG      = GT_FIELDCAT_ALV
        IT_OUTTAB            = GTY_STU[].

    CALL METHOD G_GRID_ALV->SET_READY_FOR_INPUT
      EXPORTING
        I_READY_FOR_INPUT = 1.

效果
在这里插入图片描述

4.特别的,如果将某一列中部分字段设置为可修改状态,一般通过以下方式完成:

  • 在FIELDCAT中,设置该列属性为可修改
  • 在表单赋值时,将不应为可修改状态的字段,设置为不可修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值