ALV:刷新单元格属性

ALV:刷新单元格属性

需求:包装类型和包装箱型号在状态 01为可编辑,状态02不可编辑,点击提交后将将状态01改为02,且字段不可编辑,取消提交相反。

实现:
在ALV内表中增加字段参照LVC_T_STYL.

TYPES:BEGIN OF TY_CREATE.
    INCLUDE STRUCTURE ZTMM305.
TYPES:BOX TYPE C.
TYPES:CELLSTYLE TYPE LVC_T_STYL.
TYPES:END OF TY_CREATE.

将ALV布局设置为可编辑,赋值ALV一般显示选项,对于其他不可编辑字段fieldcat-edit设置为空

      GS_LAYOUT-EDIT = 'X'.
      GS_LAYOUT-STYLEFNAME = 'CELLSTYLE'.

    IF LS_FCAT-FIELDNAME <> 'LIFNR' OR  LS_FCAT-FIELDNAME <> 'ZBZLX' OR LS_FCAT-FIELDNAME <> 'ZBZXXH'.
      LS_FCAT-EDIT = ''.
    ENDIF.

循环内表,给CELLSTYLE字段赋值

FORM FRM_EDITABLES .
DATA: GS_STYLE TYPE LVC_S_STYL,
      GT_STYLE TYPE LVC_T_STYL.
  LOOP AT GT_CREATE INTO GS_CREATE.

    CLEAR:GS_STYLE.
    REFRESH:GT_STYLE.

    GS_STYLE-FIELDNAME = 'AUFNR'.
    GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT GS_STYLE INTO TABLE GT_STYLE.
    GS_STYLE-FIELDNAME = 'SERNR'.
    GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT GS_STYLE INTO TABLE GT_STYLE.
    GS_STYLE-FIELDNAME = 'MATNR'.
    GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT GS_STYLE INTO TABLE GT_STYLE.
    GS_STYLE-FIELDNAME = 'LIFNR'.
    GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT GS_STYLE INTO TABLE GT_STYLE.

    IF GS_CREATE-ZZT <> '01'.
      GS_STYLE-FIELDNAME = 'ZBZLX'.
      GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
      INSERT GS_STYLE INTO TABLE GT_STYLE.
    ENDIF.
    IF GS_CREATE-ZZT <> '01'.
      GS_STYLE-FIELDNAME = 'ZBZXXH'.
      GS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
      INSERT GS_STYLE INTO TABLE GT_STYLE.
    ENDIF.

    GS_CREATE-CELLSTYLE = GT_STYLE.
    MODIFY GT_CREATE FROM GS_CREATE.
  ENDLOOP.

ENDFORM.

实现单元格可编辑功能
点击按钮功能后,刷新ALV

  CASE OK_CODE.
    WHEN 'QXTJ'.      "取消提交
        PERFORM FRM_QXTJ.

      "获取ALV变化过后的布局参数
      PERFORM FRM_EDITABLES.
      CALL METHOD GRID1->GET_FRONTEND_LAYOUT
        IMPORTING
          ES_LAYOUT = GS_LAYOUT.
      "重新回写自适应宽度
      GS_LAYOUT-CWIDTH_OPT = 'X'.
      CALL METHOD GRID1->SET_FRONTEND_LAYOUT
        EXPORTING
          IS_LAYOUT = GS_LAYOUT.
      GS_STABLE-ROW = 'X'.
      GS_STABLE-COL = 'X'.

      CALL METHOD GRID1->REFRESH_TABLE_DISPLAY
        EXPORTING
          IS_STABLE = GS_STABLE.

    WHEN OTHERS.
      CALL METHOD GRID1->REFRESH_TABLE_DISPLAY.
  ENDCASE.

效果图
修改前在这里插入图片描述
提交后在这里插入图片描述
后记:写这些东西只是为了让给自己做个记录。如果你看到了这篇博文希望能对你有那么一点帮助,关于里面的注解只是我自己的理解,不正确的地方,请指出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值