开发基础 报表教程 数据字典 对话编程 表单打印 增强出口 SAP接口 S/4 HANA
实战案例 实战笔记 资料下载 CRM
问答互助 会员分享 俱乐部 广告区
论坛指南、建议和投诉
Twilight发表于 2014-10-30 14:45glb1197531 最后回复于 2015-06-07 10:17 [复制链接] 12224 2
使用道具 举报
Twilight
管理员
发表回复 回帖后跳转到最后一页
在REUSE_ALV_GRID_DISPLAY_LVC显示的ALV中,实现可编辑字段的新值自动更新到内表有一个前提:
REUSE_ALV_GRID_DISPLAY_LVC的输入参数中,有一个是:I_GRID_SETTINGS,其中的EDT_CLL_CB字段是可回调标识,需要设置EDT_CLL_CB = 'X'。
在此前提下,再按是否自定义STATUS区分:
(1)没有自定义STATUS,即使用标准的界面。
当为可编辑字段输入新值后,敲回车点击标准工具栏的按钮点击标准的保存按钮,都可以自动更新字段的新值到内表中;
(2)自定义STATUS,此时又区分2种情况:
(2.1)自定义按钮的功能码设置为&DATA_SAVE。当为可编辑字段输入新值后,点击此按钮,也可以自动更新字段的新值到内表中;
(2.2)自定义按钮的功能码不是&DATA_SAVE。当为可编辑字段输入新值后,点击此按钮,是不会自动更新字段的新值到内表中的。
其中,&DATA_SAVE是标准界面保存按钮的功能码。
对于(2.2)情况,可以在判断功能码时,调用方法CHECK_CHANGED_DATA,这样即可自动更新可编辑字段的新值到内表中。
以“FM ALV自定义小计文本”一文代码为例,设置“数量”字段为可编辑字段。
新建了状态ZSTATUS,保留标准保存按钮。
创建了按钮YES、NO,功能码分别是POPUP_1、POPUP_2。
这2个按钮和标准的保存按钮都是调用FORM:FRM_ALV_POPUP弹出另一个ALV窗口显示内表最新值。
这2个按钮的区别在于:按钮YES在调用FORM:FRM_ALV_POPUP之前,调用了方法CHECK_CHANGED_DATA;而按钮NO没有。
你可以尝试上述说的几种情况,对比当前界面内表与弹出的窗口内表(即更新后)的值。
对可编辑字段输入新值后:直接点击标准保存按钮按钮YES,内表更新了;点击按钮NO,内表没有更新。
所以自定义按钮时,建议把方法CHECK_CHANGED_DATA的调用移到判断功能码前。
程序代码:
* 本程序保留了“REUSE_ALV_POPUP_TO_SELECT导出”一文中的导出功能。
程序执行初始界面
yes按钮调用oo的CHECK_CHANGED_DATA方法监听修改内容更新至内表
no按钮没有调用oo的CHECK_CHANGED_DATA方法,所以alv界面的值没有更新至内表,但我们也可以设置I_GRID_SETTINGS-EDT_CLL_CB = 'X'参数达到同样的效果