*下面的代码是在alv字段中修改字段的内容,点击保存后就可以保存数据至数据表。

TABLES: spfli.

DATA:

wa_fieldcat TYPE lvc_s_fcat ,  " 相当于工作区

i_fieldcat  TYPE lvc_t_fcat ,  " 存放输出栏位名称的列表

i_layout    TYPE lvc_s_layo .  " 负责整个ALV的全局属性

DATA tab_spfli LIKE  TABLE OF spfli WITH HEADER LINE.  " 定义内表
 DATA wa_spfli TYPE spfli.

DATA it_spfli LIKE STANDARD TABLE OF spfli.   " 定义内表
 DATA lt_spfli TYPE spfli.

SELECT * FROM spfli
   INTO CORRESPONDING FIELDS OF TABLE tab_spfli.  "将数据表中的数据存入内表中

PERFORM getfield.
PERFORM is_layout.
DATA: l_user_command TYPE slis_formname VALUE 'USER_COMMAND'.  "定义返回事件
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     "定义显示内表
  EXPORTING
    I_CALLBACK_PROGRAM                = sy-repid
    I_CALLBACK_USER_COMMAND           = l_user_command
    IS_LAYOUT_LVC                     = i_layout
    IT_FIELDCAT_LVC                   = i_fieldcat
    I_SAVE                            = 'A'
  TABLES
    t_outtab                          = tab_spfli
  EXCEPTIONS
    PROGRAM_ERROR                     = 1
    OTHERS                            = 2
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

FORM getfield.     "定义显示字段  
    wa_fieldcat-col_pos   = 1 .
    wa_fieldcat-fieldname = 'CARRID'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '航线代码'.
    wa_fieldcat-fix_column = 'X'.
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

wa_fieldcat-col_pos   = 2 .
    wa_fieldcat-fieldname = 'CONNID'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '航班连接号'.
    wa_fieldcat-fix_column = 'X'.
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

wa_fieldcat-col_pos   = 3 .
    wa_fieldcat-fieldname = 'CITYFROM'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '起飞城市'.
    wa_fieldcat-edit      = 'X'.           "设置成可编辑状态
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

wa_fieldcat-col_pos   = 4 .
    wa_fieldcat-fieldname = 'CITYTO'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '到达城市'.
    wa_fieldcat-edit      = 'X'.           "设置成可编辑状态
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

wa_fieldcat-col_pos   = 5 .
    wa_fieldcat-fieldname = 'DERTIME'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '出发时间'.
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

wa_fieldcat-col_pos   = 6 .
    wa_fieldcat-fieldname = 'ARRTIME'.
    wa_fieldcat-just      = 'C'.
    wa_fieldcat-seltext = '到达时间'.
    APPEND wa_fieldcat TO i_fieldcat.
    CLEAR wa_fieldcat.

ENDFORM.

FORM is_layout.     "定义ALV显示样式
   i_layout-ZEBRA = 'X'.
   i_layout-CWIDTH_OPT = 'X'.
ENDFORM.

FORM user_command USING r_ucomm LIKE sy-ucomm               "执行事件
                  rs_selfield TYPE slis_selfield.

CASE r_ucomm .

WHEN '&DATA_SAVE'.                  "当点击保存按钮时执行下面代码

SELECT * FROM spfli INTO TABLE  it_spfli  "tab_spfli 查找数据表中数据到内表 
       FOR ALL ENTRIES IN tab_spfli
       WHERE carrid = tab_spfli-carrid AND connid = tab_spfli-connid.

LOOP AT it_spfli INTO lt_spfli.   "循环内表
            READ TABLE tab_spfli INTO wa_spfli  WITH KEY   "读取修改后的内表
              carrid = lt_spfli-carrid connid = lt_spfli-connid.
            IF sy-subrc = 0.   "如果读取一致将修改后的内表字段的值赋值给新内表字段
              lt_spfli-cityfrom  = wa_spfli-cityfrom.
              lt_spfli-cityto    = wa_spfli-cityto.
              MODIFY it_spfli FROM lt_spfli.  "更新修改后的内表字段的值
            ENDIF.
            CLEAR lt_spfli.
            CLEAR wa_spfli.
          ENDLOOP.
          UPDATE spfli FROM TABLE it_spfli.  "根据更新后的内表更新数据表,将更新后的字段的值传入数据表中。
          IF sy-subrc = 0.
            COMMIT WORK.
*            MESSAGE '保存成功' TYPE 'I'.
            MESSAGE '保存成功' TYPE 'I'.
          ELSE.
            ROLLBACK WORK.
          ENDIF.
        WHEN '2'.
        WHEN OTHERS.

ENDCASE.
ENDFORM.

ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1的更多相关文章

  1. ABAP分享二 ALV标准范例DEMO汇总

    SAP软件针对ALV的使用方法,提供了ALV标准demo程序: sap提供的ALV标准demo程序,只是展示简单的数据,用function ALV即可,若有复杂的增删改查操作 建议使用OO ALV,下 ...

  2. Easyui之datagrid实现点击单元格修改单元格背景颜色

    前段时间有个需求中有点击datagrid的单元格实现某种事件,调用datagrid的onclickCell这个方法很容易实现,但是体验不好啊,完全不知道自己刚才点击的是哪个单元格,然后就尝试单击单元格 ...

  3. Excel表格如何保护单元格不被修改

    Excel如何保护单元格不被修改  有时使用Excel时希望保护单元格不被修改,这可以叫做单元格的“写保护”即把光标定位在一个不允许输入数据的区域内时,是无论如何也无法在里面输入数据的.下面咱们就一起 ...

  4. poi操作Excel并修改单元格背景色

    废话不多说,直接来代码!!! 其中标红的才是重点!!! 代码中有时可以不用创建新文件, 如果报错的话可以通过创建新文件来进行操作(懒,没去找报错原因),不过原文件也会被修改. 操作之前做好备份!操作之 ...

  5. 27.openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽

    openpyxl 向指定单元格添加图片并修改图片大小 以及修改单元格行高列宽 from openpyxl import Workbook,load_workbook from openpyxl.dra ...

  6. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  7. mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享

    原文地址:http://www.maomao365.com/?p=7335 摘要:    数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql ...

  8. 使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

    使用PreparedStatement向数据表中插入.修改.删除.获取Blob类型的数据 2014-09-07 20:17 Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是 ...

  9. ABAP ALV单个单元格状态编辑

    *&---------------------------------------------------------------------* *& Report  ZPPR0024 ...

随机推荐

  1. Java并发编程学习随笔 (一) 使用run() 和 start()的差别

    java多线程run()和start()的区别 当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况.但是,当你启动线程时,调用run()方法,系统 ...

  2. 洛谷 P1920 成功密码 题解

    这是蒟蒻的第一篇题解,(之前的都没过,估计这篇也过不了 回到正题 这题,本蒟蒻第一眼看到以后,就决定咦,这不是模拟吗? 看到世界范围,嗯,打扰了. 扯回正题 首先,暴力肯定是A不了的(至少我A不了 但 ...

  3. .Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换

    1.什么是API网关 API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API.它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等.API ...

  4. Oracle 数据库启动与关闭

    只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果没有启 ...

  5. MongoDB下载+安装+运行

    一. 官网下载安装 MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包. 下载地址:MongoDB官网-Community Server 选择适合自己平台的版本, 下载对 ...

  6. [TimLinux] TCP全连接队列满

    0. TCP三次握手 该图来自:TCP SOCKET中backlog参数的用途是什么? syns queue: 半连接队列 accept queue: 全连接队列 控制参数存放在文件:/proc/sy ...

  7. Python的面试题

    (1)怎么把一个字符串转换成整型? 可以使用int函数  如 int('3')   结果由字符串'3'变为整型3 (2)python内建数据类型有哪些? int .bool. str.list. ru ...

  8. 【Webpack】319- Webpack4 入门手册(共 18 章)(上)

    介绍 1. 背景 最近和部门老大,一起在研究团队[EFT - 前端新手村]的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平. 本文也是属于[E ...

  9. 在Linux系统下制作系统启动盘(Ubuntu Linux)

    在Linux系统下制作系统启动盘有两种方法: 1.用dd命令 2.用Linux自带的图形界面工具 Startup Disk Creator 本教程使用第2种方式,用Linux自带的图形界面工具制作系统 ...

  10. java8-Stream流API

    一回顾与说明 经过前面发布的三章java8的博客,你就懂得了我们为什么要用Lamda表达式,Lamda表达式的原理与函数式接口的关系,从Lamda表达式到方法引用和构造引用. 想要学Stream流你必 ...