原创:SAP LVC ALV编辑小技巧

前两天有个打印需求变更,需要在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 <> 0.
  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            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
  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 = 0.
      ASSIGN COMPONENT l_wa_data-fieldname OF STRUCTURE gw_show TO <lv_field>.
      IF sy-subrc = 0.
        <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
时间: 2024-10-23 13:55:53

原创:SAP LVC ALV编辑小技巧的相关文章

你可能不知道的 Android Studio 小技巧之「多行编辑」

Android Studio 大家应该都很熟悉了,但是可能很多人都仅限基本的功能使用,而 Android Studio 非常强大,有很多非常实用却又鲜为人知的小技巧,熟练掌握这些小技巧将能极大的提高你的工作效率,今天就来给大家介绍一个很实用的小技巧「多行编辑」. 正常情况下我们写代码都是一行一行敲的,就如当初我们小时候写作业大部分都是一支笔去写,而有部分同学在写一些重复的作业时有同时用两支笔写的,比如我就干过这种事.在一些重复性工作的时候,会极大的提高效率,而 Android Studio 就有

最强 Android Studio 使用小技巧和快捷键【非原创】

(发现本文是个很不错的文章,相当实用,特分享与大家.分享自:http://m.open-open.com/m/lib/view/1458715872710.html 特此声明,好记性不如烂笔头,market下来以备后用) 原文如下: 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 –

积累的VC编程小技巧之编辑框

1.如何让对话框中的编辑框接收对话框的消息 ////////////////////////////////////////////////// 如何让对话框中的CEdit控件类接收对话框的消息////////////////////////////////////////////////1.在对话框中增加一个ID 为IDC_EDIT1的CEdit1控件2.通过ClassWizard 生成一个基于CEdit的新类CMyEdit,CMyEdit  m_wndEdit;3.在对话框OnInitDia

Office 365 小技巧 :Microsoft Teams_ 就地编辑文档

Blog 地址:https://blog.51cto.com/13969817 Microsoft Teams 最大的特性是可以加强团队之间的协作能力,团队可以在同一个地方进行沟通和协作,并且与Microsoft Office深度集成,与团队成员进行文档共享,多人协同编辑,团队的工作方式发生了改变,工作效率得到了提升. 但很多企业在推广Teams的时候,终端用户都需要一个转型的过程,他们希望分享的文档可以就地编辑,保留传统的编辑模式,而非在线编辑,这种情况下,我们该如何满足用户的需求呢? 今天我

Vim编辑的小技巧

Vim编辑的小技巧 如何快速纠错 Ctrl + h 删除上一个字符, Ctrl + w 删除上一个单词, Ctrl + u 删除当前行. 从编辑模式快速切换到Nornal模式 1.Esc 2.Ctrl + c 3.Ctrl + [ 从Nornal模式快速切换到编辑模式 1. gi 原文地址:https://www.cnblogs.com/-mjs/p/11370256.html

[原创][FPGA]Quartus实用小技巧(长期更新)

0. 简介 在使用Quartus软件时,经常会时不时的发现一些小技巧,本文的目的是总结所查阅或者发现到的小技巧,本文长期更新. 1. Quartus中的模板功能 最近在Quartus II的菜单里找到了一个好去处:language template. 在Edit -> Insert Template下可以看到Verilog HDL.SystemVerilog.VHDL.AHDL.Quartus II TCL.TCL的语言模板. 在Verilog HDL下面,可以找到基本的逻辑操作符.基本语言结构

FineUI小技巧(5)向子窗口传值,向父窗口传值(另附24张专业版高清大图)

前言 FineUI中经常会用到启用IFrame的Window控件,这样有助于从物理上进行代码解耦和.IFrame的引入就会涉及传值问题,如何在父窗口和子窗口之间相互传值呢? 向子窗口传值 向子窗口传值只需要把要传递的参数放在页面URL中即可,一般有两种做法: 页面回发,在后台通过C#代码拼接需要的URL(推荐做法,方便!) 页面第一次加载时,即注册需要的URL(如果参数是页面上某输入框的值,则需要在URL中嵌入JavaScript代码) 来看一个例子,分别用上述两种方式实现: 页面的初始显示 点

FineUI小技巧(4)关闭窗体那些事(另附24张专业版高清大图)

前言 FineUI中的Window控件常用作选择.新增或编辑内容.而关闭Window控件却有很多技巧,了解这些技巧有助于项目的快速开发. 如何关闭Window控件 第一个问题就是如何关闭Window控件,最明显的方式就是右上角的关闭图标了.总的说来,有三种方式: ESC按键(在Window控件所在页面获取焦点的情况下,按下键盘的ESC将会关闭当前激活窗体) 窗体右上角的关闭图标 用户自定义的关闭按钮 前两种方式自不必说,那么如何自定义关闭按钮呢?有两种做法: 按钮禁用回发,在页面初始化时注册关闭

Xcode提高编码效率小技巧(一)

在开发过程中有时候利用一些小技巧就可以大大提高编码效率.下面介绍一种复用代码片段的小技巧. 先举个例子,我们在开发的过程中,输入if,选择ifelse后回车,就会出现下面的代码 这个其实就是系统给我们定义好的代码片段,这个可以快速完成我们想要的代码片段,从而大大提升了我们的编程效率. 其实我们自己也可以将常用的代码片段整理出来,实现这个效果的.步骤如下: 拖到右侧区域后弹出如下提示,再编辑 上面的Completion Shortcut处输入的值就相当于是快捷键了,以后输入该值就会出现上面封装的代