表维护视图DEMO(4):单元格级别编辑

作者:拓荒牛 分类:默认分类 时间:2025-10-12 18:47
企业第二办公区-企业CBD - 宣传部

这个其实属于table control 技术的范畴。

比如根据table control 内容的某列的值,来判断该行某列是否可编辑等等。

在表维护视图的时候也会用到。

还是以之前的视图为例。

显示数据

做过简单的demo,没有实际业务意义。

当物料 = 60008030 的时候,日期字段可编辑。

首先步骤:

根据view 找到对应的表维护 的screen,也就是对应的table control。

在loop里面,这个位置添加一个module。

添加如下代码

*&---------------------------------------------------------------------*

*&Module  MDL_CONTRL_INPUT  OUTPUT *&---------------------------------------------------------------------* *text *----------------------------------------------------------------------* MODULE MDL_CONTRL_INPUT OUTPUT.   DATA:LV_MATRN TYPE MATNR.   LV_MATRN =  ZLM_V_002-MATNR .   SHIFT LV_MATRN LEFT DELETING LEADING '0'.   IF LV_MATRN  = '60008030'.     LOOP AT SCREEN. IF SCREEN-NAME = 'ZLM_V_002-DATUM'. SCREEN-INPUT = 1.   "可输入状态 MODIFY SCREEN. ENDIF.     ENDLOOP.   ENDIF. ENDMODULE.

执行效果:

但是,到这里还没有结束,你如果编辑这个字段,然后点保存,发现修改的不起作用。

所以如果想保存编辑字段的值。还需要做下面的处理。

针对这个字段加一个on request module。

(因为是使用的之前的视图,把之前的自动日期赋值给注释掉)

代码:

*----------------------------------------------------------------------*

MODULE MDL_CHANGE_DATE INPUT.   FIELD-SYMBOLS  TYPE ANY.   FIELD-SYMBOLS  TYPE ANY.   FIELD-SYMBOLS  TYPE ANY.   LOOP AT EXTRACT ASSIGNING .     "按物料做主键(表维护程序前台工厂必输)     ASSIGN COMPONENT 'MATNR' OF STRUCTURE  TO .     CHECK  = ZLM_V_002-MATNR.     ASSIGN COMPONENT 'DATUM' OF STRUCTURE  TO .     IF SY-SUBRC = 0.  = ZLM_V_002-DATUM.     ENDIF.   ENDLOOP. ENDMODULE.

修改日期,回车或者点保存即可。

当前用户暂时关闭评论 或尚未登录,请先 登录注册
暂无留言
版权所有:拓荒族 晋ICP备17002471号-6