前两天有个打印需求变更,需要在ALV显示列表中添加两个字段,可编辑,而我自己用的是函数:REUSE_ALV_GRID_DISPLAY_LVC

因为之前做可编辑基本都是固定套路,定义类,画屏幕。。。。

很是麻烦,所以才看看能不能不用屏幕,不用定义方法,结果是可以的,分享给大家!

前提:ALV使用自定义的工具栏(工具栏引用标准的工具按钮,有个小技巧,有空的自己研究)

一:只是做编辑,修改,自动更新内表:

只需添加几行代码即可:

在SET_STATUS里加入:

FORM prm_set_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTAT'. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid. CALL METHOD lr_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
IF sy-subrc <> .
ENDIF. ENDFORM.

这样系统用自己的modify事件,修改数据,回车的时候就会触发更新内表

这种方式结合字段目录中定义的参考表和字段,就可以轻松实现F4功能,简单使用。

二:用自定义的修改逻辑:

给ALV添加事件和FORM

  REFRESH:lt_event.
ls_event-form = 'DATA_CHANGED_METHOD'.
ls_event-name = 'DATA_CHANGED'.
APPEND ls_event TO lt_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PRM_SET_STATUS'
i_callback_user_command = 'PRM_USER_COMMAND'
is_layout_lvc = ls_layout
it_fieldcat_lvc = gt_fieldcat[]
i_default = 'X'
i_save = 'A'
it_events = lt_event[]
TABLES
t_outtab = gt_show[]
EXCEPTIONS
program_error =
OTHERS = .
IF sy-subrc <> .
ENDIF.

注意:用此方法,也需要一中的代码

然后在程序中添加自己的代码处理内表就可以了,用这种方法可以做数据更新,关联更新

FORM data_changed_method
USING pa_data_changed TYPE REF TO cl_alv_changed_data_protocol .
DATA:
l_it_data TYPE lvc_t_modi,
l_wa_data LIKE LINE OF l_it_data.
FIELD-SYMBOLS:<lv_field> TYPE any. l_it_data = pa_data_changed->mt_mod_cells. CHECK l_it_data IS NOT INITIAL. LOOP AT pa_data_changed->mt_mod_cells INTO l_wa_data.
READ TABLE gt_show INTO gw_show INDEX l_wa_data-row_id.
IF sy-subrc = .
ASSIGN COMPONENT l_wa_data-fieldname OF STRUCTURE gw_show TO <lv_field>.
IF sy-subrc = .
<lv_field> = l_wa_data-value.
MODIFY gt_show FROM gw_show INDEX l_wa_data-row_id.
ENDIF.
ENDIF.
ENDLOOP. CALL METHOD lr_grid->refresh_table_display.
ENDFORM. " DATA_CHANGED_METHOD

ABAP基础二:ALV基础之ALV的简单编辑的更多相关文章

  1. day02--Python基础二(基础数据类型)

    一.数据与数据类型 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(int) 字符串 ...

  2. python基础二(基础数据类型)

    一. 引子 1. 什么是数据 x=10,10是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3.数据类型 数字 字符串 列表 元组 字 ...

  3. 自动化测试基础二(Python基础)

    1.为什么学习Python 1)简单.易学 2)强大:交互性.解释性.编译性.跨平台 3)市场需求上升快.顺应市场需要 4)自动化测试需要使用编程语言来写脚本 2.需要学习Python哪些内容? 1) ...

  4. R语言基础(二) 可视化基础

    > which.max(apply(x[c("x1","x2","x3")], 1, sum))49 > x$num[which ...

  5. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  6. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  7. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  8. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  9. Bootstrap<基础二十七> 多媒体对象(Media Object)

    Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论),我们可以在组件中使用图文混排,图像可以左对齐或者右对齐.媒体对象可以用更少的 ...

  10. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

随机推荐

  1. Python入门之安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了. 首要条件,python版本必 ...

  2. 散列表(HashTable)

    散列表 i. 散列函数 i. 冲突解决 ii. 分离链表法 ii. 开放地址法 iii. 线性探测法 iii. 平方探测法 iii. 双散列 ii. 再散列 ii. 可扩散列 i. 装填因子:元素个数 ...

  3. PHP安装包TS和NTS的区别

    原文链接:http://blog.csdn.net/zhuifengshenku/article/details/38796555 TS指Thread Safety,即线程安全,一般在IIS以ISAP ...

  4. 20145302张薇 《网络对抗技术》 web安全基础实践

    20145302张薇 <网络对抗技术> web安全基础实践 实验问题回答 1.SQL注入攻击原理,如何防御 原理:攻击者把SQL命令插入到网页的各种查询字符串处,达到欺骗服务器执行恶意的S ...

  5. 20145304 Exp7 网络欺诈技术防范

    20145304 Exp7 网络欺诈技术防范 实验后回答问题 1.通常在什么场景下容易受到DNS spoof攻击 在公共网络下,如一些购物场所.咖啡馆.快餐店等提供的网络下:当自己常使用的无线网被有恶 ...

  6. P2472 [SCOI2007]蜥蜴(网络最大流)

    P2472 [SCOI2007]蜥蜴 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距 ...

  7. linux 安装MySql 5.7.20

    1.下载文件(https://pan.baidu.com/s/1c1VBcHy)放到目录:/usr/local/ 2.解压 cd /usr/local/ tar -zxvf mysql-5.7.20- ...

  8. 关于java中的类的学习

    设计模式应该牵扯到类的分布排列了,尽管现在我只能这么表达. 下面来自段帅发来的视频课程中的整理: 类与类之间的关系 每天进步一点点 类是java程序中最小组成单位,要理解后才可以更能理解类继承,重载, ...

  9. C#学习笔记(十):函数和参数

    函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  10. 深度优先搜索初尝试-DFS-LakeCounting POJ No.2386

    DFS入门的一道经典题目:LakeCounting 用栈或队列来实现: #include<cstdio> #include<stdlib.h> #include<iost ...