在 CSDN 和我的知识星球里有朋友向我提出同样的问题,询问如何在 ALV 里实现增删改查操作。
虽然需求只有一句话,但是这个需求背后涉及到的知识点不少,因此笔者会通过几篇文章的篇幅,来介绍这个需求的详细实现步骤。
本文先解决第一个障碍,如何让 ALV 报表进入可编辑状态?
笔者通过一个 ABAP 报表来说明。
ALV Grid 控件里每个单元格的状态有两种:
- non-editable 状态,不可编辑
- editable 可编辑状态
其中 editable 状态又分为两种:
(1) editable 并且活跃(active),此时单元格已经可以输入新的值
(2) editable 但是不活跃(not active),此时单元格无法进行编辑
这两种 editable 的不同状态,可以通过 ALV Grid 的 API 来切换。
我们还是先来看看通过本文介绍的实现步骤之后,能达到什么样的效果。
我们执行 ABAP 报表(完整的源代码在文末获得),看到如下的 ALV 报表。
首先,这个报表单元格的背景色是白色,这意味着单元格可以编辑。并且工具栏上我们也看到了新建,插入,删除和复制这四个按钮。
我随便在单元格里胡乱维护了一些值,然后通过新建按钮,创建了一些空白行。当然,目前还没有实现保存功能。
显然,ALV 报表的这个状态,就是我们刚刚介绍过的 editable 并且活跃(active)状态。
点击上图右下角按钮,可以切换成 editable 但是不活跃状态。这个按钮包含了一幅眼镜和一只笔的图案,眼镜代表只读方式查看,笔代表修改。
点击之后,ALV 报表单元格的背景色变灰,同时工具栏上那四个提供编辑功能的按钮也消失了。此时这个 ALV 报表的单元格,暂时不支持修改,除非我们再次点击眼镜和笔的按钮。
详细步骤参考这里。