前两天有个打印需求变更,需要在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

最新文章

  1. Sqli-LABS通关笔录-18-审计SQL注入2-HTTP头注入
  2. c point ccccc
  3. linux包之coreutils之du和df命令
  4. 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)
  5. Office 365 plans, SharePoint Online, and SharePoint 2013 on-premises 功能对比列表
  6. 练习--LINUX进程间通信之有名管理FIFO
  7. windowIsTranlucent 属性
  8. linux 下启动jar小程序
  9. Kendo UI开发教程(8): Kendo UI 特效概述
  10. C#事件与委托详解【精华 多看看】
  11. HAProxy出现&quot;远程主机强迫关闭了一个现有的连接 &quot; 的错误及解决
  12. 重读《深入理解Java虚拟机》二、Java如何分配和回收内存?Java垃圾收集器如何工作?
  13. 【jdk】使用wget下载jdk8
  14. 使用sos查看.NET对象内存布局
  15. 解决 jersey 单jar包 IME media type text/plain was not found.
  16. 通讯协议(一)HTTP协议
  17. Java Mail(二):JavaMail介绍及发送一封简单邮件
  18. mysql-elastic search canal
  19. MVVMLight - Messenger 1
  20. git 配置多用户

热门文章

  1. Redis 如何保持和MySQL数据一致【二】
  2. 20165310_Exp2实验三《敏捷开发与XP实践》
  3. UVa 12661 Funny Car Racing - spfa
  4. poj 2777 Count Color - 线段树 - 位运算优化
  5. Zookeeper 概念
  6. UVa 1152 和为0的4个值(二分查找)
  7. Robot framework(RF)学习基础
  8. XML序列化、反序列化
  9. Java中的this
  10. pandas 处理数据中NaN数据