设置ALV单元格可编辑状态

时间:2022-02-28 09:53:05
在使用ALV显示列表的过程中,我们可以使用IT_FIELDCAT参数设置某一个字段的可编辑状态。但是,要设置具体的单元格的可编辑状态对于对ALV不是很了解的人来说是一个头大的问题。

      具体单元格可编辑状态设置的主要思想:首先通过EIDT参数设置列为可编辑状态;其次对输出内表进行循环将不需要编辑的行设置为不可编辑状态,如此单元格的可编辑属性设置完毕。下面粘贴简要代码。

部分代码:

DATA: BEGIN OF ITAB OCCURS 0,

      ZQRFH_ICON TYPE STRING,

      ZLDATE TYPE ZLDATE,

      ZLUSR TYPE ZLUSR,

      K TYPE STRING,

      FIELD_STYLE TYPE LVC_T_STYL, " 为内表添加设置编辑状态所需的字段  

      END OF ITAB.

S_FIELDCAT-FIELDNAME = 'ZBQFS'. " 设置列可编辑

S_FIELDCAT-EDIT = 'X'.

APPEND S_FIELDCAT TO T_FIELDCAT.

DATA STYLELIN TYPE LVC_S_STYL.

LOOP AT ITAB.

    IF ITAB-ZXMDM = 'D' OR ITAB-ZXMDM = 'F' OR ITAB-ZXMDM = 'H'.

      STYLELIN-FIELDNAME = 'ZBQFS'. " 需要编辑的列名

      STYLELIN-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. " 设置为不可编辑状态

      APPEND STYLELIN TO ITAB-FIELD_STYLE.

      CLEAR STYLELIN.

      MODIFY ITAB.

    ENDIF.

endloop.

X_LAYOUT-STYLE_FNAME = 'FIELD_STYLE'. " 将内表中的字段名存入显示格式

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'"调用函数设置ALV单元格可编辑状态

    EXPORTING

     IT_FIELDCAT_LVC    = T_FIELDCAT

      IS_LAYOUT_LVC      = X_LAYOUT

    TABLES

      T_OUTTAB           = ITAB_LB

    EXCEPTIONS

      PROGRAM_ERROR      = 1

      OTHERS             = 2.