本文主要是介绍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 ANDWA_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."展示avlPERFORM DISPLAY_FINANCIAL_DISPOSAL.
ENDMODULE. " DISPLAY_FINANCIAL_DISPOSAL OUTPUT
5.按实际情况配合修改数据事件使用
这篇关于SAP OOALV 动态设置单元格可否编辑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!