Preface – This post is part of the ABAP Programs series.
Table of Contents
Introduction
ALV in ABAP enables users to view data in a tabular format. We can even make it editable. In this article, we will explore the same.
Editable ALV Program in ABAP
************************************************************************ * INTERNAL TABLES ************************************************************************ DATA: lt_mapping TYPE STANDARD TABLE OF zBarry_emp, lt_fieldcat TYPE lvc_t_fcat. ************************************************************************ * WORK AREAS ************************************************************************ DATA: ls_fieldcat TYPE lvc_s_fcat, ls_mapping TYPE zBarry_emp, lw_layout TYPE lvc_s_layo. ************************************************************************ * REFERENCE OBJECT ************************************************************************ DATA: r_container TYPE REF TO cl_gui_custom_container, r_grid TYPE REF TO cl_gui_alv_grid. ************************************************************************ * Field symbol ************************************************************************ FIELD-SYMBOLS: <ls_fieldcat> TYPE lvc_s_fcat. ************************************************************************ * START-OF-SELECTION. ************************************************************************ START-OF-SELECTION. SELECT * FROM zBarry_emp INTO TABLE lt_mapping UP TO 20 ROWS. * Call screen 200 CALL SCREEN 200. MODULE status_0200 OUTPUT. SET PF-STATUS 'PF-STATUS'. SET TITLEBAR 'TITLE'. CREATE OBJECT r_container EXPORTING container_name = 'CUSTOM_1'. CREATE OBJECT r_grid EXPORTING i_parent = r_container. * create Field Catalog ls_fieldcat-fieldname = 'EMP_FNAME'. ls_fieldcat-tabname = 'zBarry_emp'. ls_fieldcat-seltext = 'Employee Name'. ls_fieldcat-edit = 'X'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. ls_fieldcat-fieldname = 'EMP_LNAME'. ls_fieldcat-tabname = 'zBarry_emp'. ls_fieldcat-seltext = 'Employee Last Name'. ls_fieldcat-edit = 'X'. *ls_fieldcat-hotspot = 'X'. APPEND ls_fieldcat TO lt_fieldcat. CLEAR ls_fieldcat. CALL METHOD r_grid->set_table_for_first_display EXPORTING * I_BUFFER_ACTIVE = * I_BYPASSING_BUFFER = * I_CONSISTENCY_CHECK = i_structure_name = 'zBarry_emp' * IS_VARIANT = i_save = 'A' i_default = abap_true is_layout = lw_layout * IS_PRINT = * IT_SPECIAL_GROUPS = * IT_TOOLBAR_EXCLUDING = * IT_HYPERLINK = * IT_ALV_GRAPHICS = * IT_EXCEPT_QINFO = * IR_SALV_ADAPTER = CHANGING it_outtab = lt_mapping it_fieldcatalog = lt_fieldcat * IT_SORT = * IT_FILTER = EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. ENDMODULE. *&---------------------------------------------------------------------* *& Module USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0200 INPUT. CASE sy-ucomm. WHEN 'BACK' OR 'EXIT' OR 'CANCEL'. LEAVE PROGRAM. LEAVE TO SCREEN 0. WHEN 'SAVE'. DATA: lt_t_row TYPE lvc_t_row, ls_t_row LIKE LINE OF lt_t_row . FIELD-SYMBOLS: <fs_changed_data> LIKE LINE OF lt_mapping. CALL METHOD r_grid->check_changed_data. CALL METHOD r_grid->get_selected_rows IMPORTING et_index_rows = lt_t_row. " Indexes of Selected Rows LOOP AT lt_t_row INTO ls_t_row. READ TABLE lt_mapping ASSIGNING <fs_changed_data> INDEX ls_t_row-index. IF sy-subrc = 0. MODIFY zBarry_emp FROM <fs_changed_data>. ENDIF. ENDLOOP. ENDCASE. ENDMODULE.
0 Comments