SAP OOALV 动态设置单元格可否编辑

对于OOALV有些列允许客户输入,但是当用户输入之后,或者ALV展示之前要判断是否满足一定的条件,如果满足,那么就要单独设置某一行或者几行的这个字段不可以编辑或可以编辑,效果如果所示:
在这里插入图片描述
动态编辑
实现步骤
1.在展示的内表或内表类型中添加字段
CELLTAB TYPE LVC_T_STYL.
例如:

TYPES : BEGIN OF T_SC,
BUKRS LIKE ANLZ-BUKRS,
ANLN1 LIKE ANLA-ANLN1, "模具编号
ANLN2 LIKE ANLA-ANLN2,
CELLTAB TYPE LVC_T_STYL,
END OF T_SC.

2.在layout设置中添加代码
XXX_LAYOUT-STYLEFNAME =’CELLTAB’.

3.实现控制编辑属性的代码

FORM FRM_INIT_STYLE_TAB .
DATA: LT_SFLIGHT TYPE TABLE OF SFLIGHT WITH HEADER LINE,
LT_CELLTAB TYPE LVC_T_STYL,
LS_CELLTAB TYPE LVC_S_STYL,
L_INDEX TYPE I.
LOOP AT IT_TAB INTO WA_TAB.
CLEAR : WA_TAB-CELLTAB. "不为空会报错
IF WA_TAB-CELLTAB IS INITIAL.
L_INDEX = SY-TABIX.
REFRESH LT_CELLTAB.
LS_CELLTAB-FIELDNAME = ‘ZCWCZD’.

  IF WA_TAB-ZCWCZI IS NOT INITIAL AND
      WA_TAB-ZCXCZI IS INITIAL.
    LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
  ELSE.
    LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
  ENDIF.
  INSERT LS_CELLTAB INTO TABLE LT_CELLTAB.

  INSERT LINES OF LT_CELLTAB INTO TABLE WA_TAB-CELLTAB.
  MODIFY IT_TAB FROM WA_TAB INDEX L_INDEX.
ENDIF.

ENDLOOP.
ENDFORM. " FRM_INIT_STYLE_TAB

4.在需要重新显示的地方调用代码
在每一个你需要重新判断单元格是否可以编辑的地方调用,如:

MODULE DISPLAY_FINANCIAL_DISPOSAL OUTPUT.
"设置可编辑字段
PERFORM FRM_INIT_STYLE_TAB.
"展示avl
PERFORM DISPLAY_FINANCIAL_DISPOSAL.
ENDMODULE. " DISPLAY_FINANCIAL_DISPOSAL OUTPUT
5.按实际情况配合修改数据事件使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值