• ABAP分享五 ALV修改单元格并将修改数据更新到数据表中示例1


    *下面的代码是在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   .
        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   .
        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   .
        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   .
        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   .
        wa_fieldcat-fieldname 'DERTIME'.
        wa_fieldcat-just      'C'.
        wa_fieldcat-seltext '出发时间'.
        APPEND wa_fieldcat TO i_fieldcat.
        CLEAR wa_fieldcat.

        wa_fieldcat-col_pos   .
        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.  

  • 相关阅读:
    Jeecms3.x 常用标签使用总结
    MySQL的常用参数设置
    如何让iframe透明
    转载 张子阳 学习记录 c#网络编程
    Automate download of Realtime Trade and MarketDepth stocks demonstration
    c#2.0 锐利体验 视频链接 (李建忠老师主讲)
    转载 张子阳 学习记录 c#网络编程 5
    关于连接 providers 的一些代码 (学习QD)
    转载张子阳 学习记录 c#网络编程 4
    转载 张子阳 学习记录 c#网络编程
  • 原文地址:https://www.cnblogs.com/abapweb/p/11648876.html
Copyright © 2020-2023  润新知