前两天有个打印需求变更,需要在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. Ubuntu系统下查看显卡相关信息

    查看显卡信息 root@ubuntu:/home/ubuntu# lspci |grep -i vga 02:00.0 VGA compatible controller: NVIDIA Corpor ...

  2. aspose 小记

    /// <summary> /// 定位书签替换值 /// </summary> /// <param name="documentBuilder"& ...

  3. 组合类C++

    C++中类的组合 ※组合的概念 ×类中的成员是另一个类的对象. ×可以在已有的抽象的基础上实现更加复杂的抽象. 通过对复杂对象进行分解.抽象,使我们能够将一个复杂对象 理解为简单对象的组合. 分解得到 ...

  4. OpenCV-跟我一起学数字图像处理之拉普拉斯算子

    https://www.cnblogs.com/german-iris/p/4840647.html Laplace算子和Sobel算子一样,属于空间锐化滤波操作.起本质与前面的Spatial Fil ...

  5. JavaScript 表单验证 案例

    JavaScript 表单验证 案例 版权声明:未经授权,严禁转载!   编写 HTML 文件,搭建主体界面 <html> <head> <meta charset=&q ...

  6. 简单的Django实现图片上传,并存储进MySQL数据库 案例——小白

    目标:通过网页上传一张图片到Django后台,后台接收并存储进数据库 真是不容易!!这个案例的代码网上太乱,不适合我,自己摸索着写,终于成功了,记录一下,仅供自己参考,有的解释可能不对,自己明白就好, ...

  7. linux下有线网卡出现ADDRCONF(NETDEV_UP): eth0: link is not ready的解决方法

    一.背景 2018年5月24日,笔者的pc已经连续运转两天了,突然要使用有线网卡,却发现有线网卡无法正常工作,于是查看了一下内核日志: r8169 0000:05:00.0 eth0: link do ...

  8. HDU 2089 不要62 (数位DP)题解

    思路: 详解 数位DP入门题dp[pos][sta],pos代表当前位数是第几位,sta代表当前状态,因为题目中只要不出现64,所以当前状态只分为两种:前一位是6或不是. #include<io ...

  9. poj 2481 Cows(树状数组)题解

    Description Farmer John's cows have discovered that the clover growing along the ridge of the hill ( ...

  10. printf("%f\n",5);

    http://zhidao.baidu.com/link?url=87OGcxtDa6fQoeKmk1KylLu4eIBLJSh7CA3n5NWY-Ipm9TxZViFnIui307duCXWhaM0 ...