<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Data changed in backend even without using data_changed_finished event explicitly in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/data-changed-in-backend-even-without-using-data-changed-finished-event/m-p/12819812#M2026217</link>
    <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;
  &lt;P&gt;I am using one custom report which is creating an editable (2 columns) ALV. In this report I am not using the events &lt;STRONG&gt;data_changed&lt;/STRONG&gt; OR &lt;STRONG&gt;data_changed_finished &lt;/STRONG&gt;to&lt;STRONG&gt; &lt;/STRONG&gt;capture the changes done on the screen and the update the internal table. But still, the data in the internal table is getting updated in the backend when seen in the debugger. I want to know why ??&lt;/P&gt;
  &lt;P&gt;Below is the source code of the report:&lt;/P&gt;
  &lt;P&gt;REPORT zdummy_p.&lt;BR /&gt;&lt;BR /&gt;*********************************************************************************************************************&lt;BR /&gt;&lt;BR /&gt;TABLES : sflight.&lt;BR /&gt;DATA: lv_fldate TYPE s_date,&lt;BR /&gt; custom_container TYPE REF TO cl_gui_custom_container.&lt;BR /&gt;SELECT-OPTIONS : s_fldate FOR lv_fldate.&lt;BR /&gt;&lt;BR /&gt;* For ALV output&lt;BR /&gt;TYPES : BEGIN OF ty_sflight,&lt;BR /&gt; carrid TYPE s_carr_id,&lt;BR /&gt; connid TYPE s_conn_id,&lt;BR /&gt; fldate TYPE s_date,&lt;BR /&gt; price TYPE s_price,&lt;BR /&gt; currency TYPE s_currcode,&lt;BR /&gt; planetype TYPE s_planetye,&lt;BR /&gt; checkbox TYPE char1,&lt;BR /&gt; END OF ty_sflight.&lt;BR /&gt;&lt;BR /&gt;DATA : gt_sflight TYPE STANDARD TABLE OF ty_sflight,&lt;BR /&gt; gt_fcat TYPE lvc_t_fcat,&lt;BR /&gt; gw_layout TYPE lvc_s_layo,&lt;BR /&gt; gr_alv TYPE REF TO cl_gui_alv_grid,&lt;BR /&gt; gt_exclude TYPE ui_functions.&lt;BR /&gt;&lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;fs_sflight&amp;gt; TYPE ty_sflight.&lt;BR /&gt;&lt;BR /&gt;* Event handler class for ALV&lt;BR /&gt;CLASS lcl_alvhandler DEFINITION.&lt;BR /&gt; PUBLIC SECTION.&lt;BR /&gt; METHODS:&lt;BR /&gt;&lt;BR /&gt; me_handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid&lt;BR /&gt; IMPORTING e_object,&lt;BR /&gt;&lt;BR /&gt; me_handle_user_command FOR EVENT user_command OF cl_gui_alv_grid&lt;BR /&gt; IMPORTING e_ucomm.&lt;BR /&gt;&lt;BR /&gt;ENDCLASS. ""lcl_alvhandler DEFINITION&lt;BR /&gt;&lt;BR /&gt;DATA : gr_alvhandler TYPE REF TO lcl_alvhandler.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;* Extracting to populate ALV table&lt;BR /&gt; SELECT carrid&lt;BR /&gt; connid&lt;BR /&gt; fldate&lt;BR /&gt; price&lt;BR /&gt; currency&lt;BR /&gt; planetype&lt;BR /&gt; FROM sflight INTO TABLE gt_sflight&lt;BR /&gt; WHERE fldate IN s_fldate.&lt;BR /&gt;&lt;BR /&gt; IF sy-subrc IS INITIAL.&lt;BR /&gt;&lt;BR /&gt;* Populate Fieldcatalog and Exclude alv buttons which are not required&lt;BR /&gt; PERFORM f_field_cat.&lt;BR /&gt;&lt;BR /&gt;* Calling screen 9000 to display ALV&lt;BR /&gt; CALL SCREEN 9000.&lt;BR /&gt;&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_FCAT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_field_cat.&lt;BR /&gt; DATA lv_pos TYPE i.&lt;BR /&gt; REFRESH :gt_fcat[],gt_exclude[].&lt;BR /&gt;&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_delete_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_views TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_insert_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_append_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_paste_new_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_cut TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_refresh TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_mb_paste TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_undo TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_check TO gt_exclude.&lt;BR /&gt;&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CHECKBOX' 'Select'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CARRID' 'Airline Code'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CONNID' 'Connection Number'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'FLDATE' 'Flight date'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'PRICE' 'Airfare'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CURRENCY' 'Currency '.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'PLANETYPE' 'Aircraft Type'.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. "f_field_cat&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_FCAT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_fcat USING p_pos&lt;BR /&gt; p_fname&lt;BR /&gt; p_text.&lt;BR /&gt;&lt;BR /&gt; DATA : gw_fcat TYPE lvc_s_fcat.&lt;BR /&gt;&lt;BR /&gt; CLEAR gw_fcat.&lt;BR /&gt; gw_fcat-fieldname = p_fname.&lt;BR /&gt; gw_fcat-col_pos = p_pos.&lt;BR /&gt; gw_fcat-coltext = p_text.&lt;BR /&gt; IF p_fname = 'CHECKBOX'.&lt;BR /&gt; gw_fcat-edit = abap_true.&lt;BR /&gt; gw_fcat-checkbox = abap_true.&lt;BR /&gt; gw_fcat-key = abap_true.&lt;BR /&gt; ELSEIF p_fname = 'CARRID' OR&lt;BR /&gt; p_fname = 'CONNID' OR&lt;BR /&gt; p_fname = 'FLDATE'.&lt;BR /&gt; gw_fcat-key = abap_true.&lt;BR /&gt; ELSEIF p_fname = 'PRICE'.&lt;BR /&gt; gw_fcat-edit = abap_true.&lt;BR /&gt; gw_fcat-datatype = 'DECIMAL'.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; APPEND gw_fcat TO gt_fcat.&lt;BR /&gt; CLEAR : gw_fcat.&lt;BR /&gt;ENDFORM. "” F_FCAT&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Module STATUS_9000 OUTPUT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;* text&lt;BR /&gt;*———————————————————————-*&lt;BR /&gt;MODULE status_9000 OUTPUT.&lt;BR /&gt;&lt;BR /&gt; SET PF-STATUS 'Z9000'.&lt;BR /&gt; SET TITLEBAR 'Z9000'.&lt;BR /&gt;&lt;BR /&gt; PERFORM f_display.&lt;BR /&gt;&lt;BR /&gt;ENDMODULE. "status_9000 OUTPUT&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form f_display&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM f_display .&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS INITIAL.&lt;BR /&gt; CREATE OBJECT gr_alv&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_parent = custom_container&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; error_cntl_create = 1&lt;BR /&gt; error_cntl_init = 2&lt;BR /&gt; error_cntl_link = 3&lt;BR /&gt; error_dp_create = 4&lt;BR /&gt; OTHERS = 5.&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS NOT INITIAL.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;register_edit_event&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_modified.&lt;BR /&gt;&lt;BR /&gt; IF gr_alvhandler IS INITIAL.&lt;BR /&gt; CREATE OBJECT gr_alvhandler.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; SET HANDLER gr_alvhandler-&amp;gt;me_handle_toolbar FOR gr_alv.&lt;BR /&gt; SET HANDLER gr_alvhandler-&amp;gt;me_handle_user_command FOR gr_alv.&lt;BR /&gt;&lt;BR /&gt; gw_layout-cwidth_opt = abap_true.&lt;BR /&gt; gw_layout-sel_mode = 'A'.&lt;BR /&gt;&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;set_table_for_first_display&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_save = 'A'&lt;BR /&gt; is_layout = gw_layout&lt;BR /&gt; it_toolbar_excluding = gt_exclude&lt;BR /&gt; CHANGING&lt;BR /&gt; it_outtab = gt_sflight&lt;BR /&gt; it_fieldcatalog = gt_fcat&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; invalid_parameter_combination = 1&lt;BR /&gt; program_error = 2&lt;BR /&gt; too_many_lines = 3&lt;BR /&gt; OTHERS = 4.&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ELSE.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;refresh_table_display.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. ""f_display&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* CLASS lcl_alvhandler IMPLEMENTATION&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;*&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;CLASS lcl_alvhandler IMPLEMENTATION.&lt;BR /&gt; METHOD me_handle_toolbar.&lt;BR /&gt; DATA: ls_toolbar TYPE stb_button.&lt;BR /&gt;&lt;BR /&gt;* Append a separator to normal toolbar&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt; MOVE 3 TO ls_toolbar-butn_type.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;* Append Button &amp;amp; Icon for your function&lt;BR /&gt; MOVE 'SELALL' TO ls_toolbar-function.&lt;BR /&gt; MOVE icon_select_all TO ls_toolbar-icon.&lt;BR /&gt; MOVE 'Select All' TO ls_toolbar-quickinfo.&lt;BR /&gt; MOVE 'Select All' TO ls_toolbar-text.&lt;BR /&gt; MOVE ' ' TO ls_toolbar-disabled.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; MOVE 3 TO ls_toolbar-butn_type.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; MOVE 'DESELALL' TO ls_toolbar-function.&lt;BR /&gt; MOVE icon_deselect_all TO ls_toolbar-icon.&lt;BR /&gt; MOVE 'Deselect All' TO ls_toolbar-quickinfo.&lt;BR /&gt; MOVE 'Deselect All' TO ls_toolbar-text.&lt;BR /&gt; MOVE ' ' TO ls_toolbar-disabled.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; ENDMETHOD. ""me_handle_toolbar&lt;BR /&gt;&lt;BR /&gt; METHOD me_handle_user_command.&lt;BR /&gt;&lt;BR /&gt; CASE e_ucomm.&lt;BR /&gt; WHEN 'SELALL'.&lt;BR /&gt; DATA : i_filter_entries TYPE lvc_t_fidx, "Filtered entries,&lt;BR /&gt; gv_sel_valid TYPE char1,&lt;BR /&gt; gv_sel_tabix TYPE sy-tabix.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS NOT INITIAL.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;check_changed_data&lt;BR /&gt; IMPORTING&lt;BR /&gt; e_valid = gv_sel_valid.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; IF gv_sel_valid EQ 'X'.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;get_filtered_entries&lt;BR /&gt; IMPORTING&lt;BR /&gt; et_filtered_entries = i_filter_entries.&lt;BR /&gt;&lt;BR /&gt; UNASSIGN &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; LOOP AT gt_sflight ASSIGNING &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; gv_sel_tabix = sy-tabix.&lt;BR /&gt; READ TABLE i_filter_entries FROM gv_sel_tabix TRANSPORTING NO FIELDS.&lt;BR /&gt; IF sy-subrc IS NOT INITIAL.&lt;BR /&gt; &amp;lt;fs_sflight&amp;gt;-checkbox = abap_true.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ENDLOOP.&lt;BR /&gt;&lt;BR /&gt;* Refresh output&lt;BR /&gt; PERFORM f_refresh_alv.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; WHEN 'DESELALL'.&lt;BR /&gt; UNASSIGN &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; LOOP AT gt_sflight ASSIGNING &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; &amp;lt;fs_sflight&amp;gt;-checkbox = abap_false.&lt;BR /&gt; ENDLOOP.&lt;BR /&gt;&lt;BR /&gt;* Refresh output&lt;BR /&gt; PERFORM f_refresh_alv.&lt;BR /&gt;&lt;BR /&gt; ENDCASE.&lt;BR /&gt; ENDMETHOD. ""me_handle_user_command&lt;BR /&gt;&lt;BR /&gt;ENDCLASS. ""lcl_alvhandler IMPLEMENTATION&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_REFRESH_ALV&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_refresh_alv.&lt;BR /&gt;&lt;BR /&gt; DATA : lw_stable TYPE lvc_s_stbl.&lt;BR /&gt;&lt;BR /&gt; CLEAR : lw_stable.&lt;BR /&gt; lw_stable-row = abap_true.&lt;BR /&gt; lw_stable-col = abap_true.&lt;BR /&gt;&lt;BR /&gt; gr_alv-&amp;gt;refresh_table_display(&lt;BR /&gt; EXPORTING&lt;BR /&gt; is_stable = lw_stable&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; finished = 1&lt;BR /&gt; OTHERS = 2 ).&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. "f_refresh_alv&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Module USER_COMMAND_9000 INPUT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;MODULE user_command_9000 INPUT.&lt;BR /&gt;&lt;BR /&gt; CASE sy-ucomm.&lt;BR /&gt; WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.&lt;BR /&gt; LEAVE TO SCREEN 0.&lt;BR /&gt; ENDCASE.&lt;BR /&gt;&lt;BR /&gt;ENDMODULE. "user_command_9000 INPUT&lt;/P&gt;
  &lt;P&gt;Screen:&lt;/P&gt;
  &lt;P&gt;&lt;IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2235721-image.png" /&gt;&lt;/P&gt;
  &lt;P&gt;Thanks in advance !!&lt;/P&gt;</description>
    <pubDate>Mon, 15 Jan 2024 19:10:07 GMT</pubDate>
    <dc:creator>piyushnandwani</dc:creator>
    <dc:date>2024-01-15T19:10:07Z</dc:date>
    <item>
      <title>Data changed in backend even without using data_changed_finished event explicitly</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/data-changed-in-backend-even-without-using-data-changed-finished-event/m-p/12819812#M2026217</link>
      <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;
  &lt;P&gt;I am using one custom report which is creating an editable (2 columns) ALV. In this report I am not using the events &lt;STRONG&gt;data_changed&lt;/STRONG&gt; OR &lt;STRONG&gt;data_changed_finished &lt;/STRONG&gt;to&lt;STRONG&gt; &lt;/STRONG&gt;capture the changes done on the screen and the update the internal table. But still, the data in the internal table is getting updated in the backend when seen in the debugger. I want to know why ??&lt;/P&gt;
  &lt;P&gt;Below is the source code of the report:&lt;/P&gt;
  &lt;P&gt;REPORT zdummy_p.&lt;BR /&gt;&lt;BR /&gt;*********************************************************************************************************************&lt;BR /&gt;&lt;BR /&gt;TABLES : sflight.&lt;BR /&gt;DATA: lv_fldate TYPE s_date,&lt;BR /&gt; custom_container TYPE REF TO cl_gui_custom_container.&lt;BR /&gt;SELECT-OPTIONS : s_fldate FOR lv_fldate.&lt;BR /&gt;&lt;BR /&gt;* For ALV output&lt;BR /&gt;TYPES : BEGIN OF ty_sflight,&lt;BR /&gt; carrid TYPE s_carr_id,&lt;BR /&gt; connid TYPE s_conn_id,&lt;BR /&gt; fldate TYPE s_date,&lt;BR /&gt; price TYPE s_price,&lt;BR /&gt; currency TYPE s_currcode,&lt;BR /&gt; planetype TYPE s_planetye,&lt;BR /&gt; checkbox TYPE char1,&lt;BR /&gt; END OF ty_sflight.&lt;BR /&gt;&lt;BR /&gt;DATA : gt_sflight TYPE STANDARD TABLE OF ty_sflight,&lt;BR /&gt; gt_fcat TYPE lvc_t_fcat,&lt;BR /&gt; gw_layout TYPE lvc_s_layo,&lt;BR /&gt; gr_alv TYPE REF TO cl_gui_alv_grid,&lt;BR /&gt; gt_exclude TYPE ui_functions.&lt;BR /&gt;&lt;BR /&gt;FIELD-SYMBOLS : &amp;lt;fs_sflight&amp;gt; TYPE ty_sflight.&lt;BR /&gt;&lt;BR /&gt;* Event handler class for ALV&lt;BR /&gt;CLASS lcl_alvhandler DEFINITION.&lt;BR /&gt; PUBLIC SECTION.&lt;BR /&gt; METHODS:&lt;BR /&gt;&lt;BR /&gt; me_handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid&lt;BR /&gt; IMPORTING e_object,&lt;BR /&gt;&lt;BR /&gt; me_handle_user_command FOR EVENT user_command OF cl_gui_alv_grid&lt;BR /&gt; IMPORTING e_ucomm.&lt;BR /&gt;&lt;BR /&gt;ENDCLASS. ""lcl_alvhandler DEFINITION&lt;BR /&gt;&lt;BR /&gt;DATA : gr_alvhandler TYPE REF TO lcl_alvhandler.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;START-OF-SELECTION.&lt;BR /&gt;* Extracting to populate ALV table&lt;BR /&gt; SELECT carrid&lt;BR /&gt; connid&lt;BR /&gt; fldate&lt;BR /&gt; price&lt;BR /&gt; currency&lt;BR /&gt; planetype&lt;BR /&gt; FROM sflight INTO TABLE gt_sflight&lt;BR /&gt; WHERE fldate IN s_fldate.&lt;BR /&gt;&lt;BR /&gt; IF sy-subrc IS INITIAL.&lt;BR /&gt;&lt;BR /&gt;* Populate Fieldcatalog and Exclude alv buttons which are not required&lt;BR /&gt; PERFORM f_field_cat.&lt;BR /&gt;&lt;BR /&gt;* Calling screen 9000 to display ALV&lt;BR /&gt; CALL SCREEN 9000.&lt;BR /&gt;&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_FCAT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_field_cat.&lt;BR /&gt; DATA lv_pos TYPE i.&lt;BR /&gt; REFRESH :gt_fcat[],gt_exclude[].&lt;BR /&gt;&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_delete_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_views TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_insert_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_append_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_paste_new_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy_row TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_cut TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_refresh TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_mb_paste TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_loc_undo TO gt_exclude.&lt;BR /&gt; APPEND cl_gui_alv_grid=&amp;gt;mc_fc_check TO gt_exclude.&lt;BR /&gt;&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CHECKBOX' 'Select'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CARRID' 'Airline Code'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CONNID' 'Connection Number'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'FLDATE' 'Flight date'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'PRICE' 'Airfare'.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'CURRENCY' 'Currency '.&lt;BR /&gt; lv_pos = lv_pos + 1.&lt;BR /&gt; PERFORM f_fcat USING lv_pos 'PLANETYPE' 'Aircraft Type'.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. "f_field_cat&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_FCAT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_fcat USING p_pos&lt;BR /&gt; p_fname&lt;BR /&gt; p_text.&lt;BR /&gt;&lt;BR /&gt; DATA : gw_fcat TYPE lvc_s_fcat.&lt;BR /&gt;&lt;BR /&gt; CLEAR gw_fcat.&lt;BR /&gt; gw_fcat-fieldname = p_fname.&lt;BR /&gt; gw_fcat-col_pos = p_pos.&lt;BR /&gt; gw_fcat-coltext = p_text.&lt;BR /&gt; IF p_fname = 'CHECKBOX'.&lt;BR /&gt; gw_fcat-edit = abap_true.&lt;BR /&gt; gw_fcat-checkbox = abap_true.&lt;BR /&gt; gw_fcat-key = abap_true.&lt;BR /&gt; ELSEIF p_fname = 'CARRID' OR&lt;BR /&gt; p_fname = 'CONNID' OR&lt;BR /&gt; p_fname = 'FLDATE'.&lt;BR /&gt; gw_fcat-key = abap_true.&lt;BR /&gt; ELSEIF p_fname = 'PRICE'.&lt;BR /&gt; gw_fcat-edit = abap_true.&lt;BR /&gt; gw_fcat-datatype = 'DECIMAL'.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; APPEND gw_fcat TO gt_fcat.&lt;BR /&gt; CLEAR : gw_fcat.&lt;BR /&gt;ENDFORM. "” F_FCAT&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Module STATUS_9000 OUTPUT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;* text&lt;BR /&gt;*———————————————————————-*&lt;BR /&gt;MODULE status_9000 OUTPUT.&lt;BR /&gt;&lt;BR /&gt; SET PF-STATUS 'Z9000'.&lt;BR /&gt; SET TITLEBAR 'Z9000'.&lt;BR /&gt;&lt;BR /&gt; PERFORM f_display.&lt;BR /&gt;&lt;BR /&gt;ENDMODULE. "status_9000 OUTPUT&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;*&amp;amp; Form f_display&lt;BR /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;BR /&gt;* text&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;FORM f_display .&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS INITIAL.&lt;BR /&gt; CREATE OBJECT gr_alv&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_parent = custom_container&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; error_cntl_create = 1&lt;BR /&gt; error_cntl_init = 2&lt;BR /&gt; error_cntl_link = 3&lt;BR /&gt; error_dp_create = 4&lt;BR /&gt; OTHERS = 5.&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS NOT INITIAL.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;register_edit_event&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_modified.&lt;BR /&gt;&lt;BR /&gt; IF gr_alvhandler IS INITIAL.&lt;BR /&gt; CREATE OBJECT gr_alvhandler.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; SET HANDLER gr_alvhandler-&amp;gt;me_handle_toolbar FOR gr_alv.&lt;BR /&gt; SET HANDLER gr_alvhandler-&amp;gt;me_handle_user_command FOR gr_alv.&lt;BR /&gt;&lt;BR /&gt; gw_layout-cwidth_opt = abap_true.&lt;BR /&gt; gw_layout-sel_mode = 'A'.&lt;BR /&gt;&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;set_table_for_first_display&lt;BR /&gt; EXPORTING&lt;BR /&gt; i_save = 'A'&lt;BR /&gt; is_layout = gw_layout&lt;BR /&gt; it_toolbar_excluding = gt_exclude&lt;BR /&gt; CHANGING&lt;BR /&gt; it_outtab = gt_sflight&lt;BR /&gt; it_fieldcatalog = gt_fcat&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; invalid_parameter_combination = 1&lt;BR /&gt; program_error = 2&lt;BR /&gt; too_many_lines = 3&lt;BR /&gt; OTHERS = 4.&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ELSE.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;refresh_table_display.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. ""f_display&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;* CLASS lcl_alvhandler IMPLEMENTATION&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;*&lt;BR /&gt;*----------------------------------------------------------------------*&lt;BR /&gt;CLASS lcl_alvhandler IMPLEMENTATION.&lt;BR /&gt; METHOD me_handle_toolbar.&lt;BR /&gt; DATA: ls_toolbar TYPE stb_button.&lt;BR /&gt;&lt;BR /&gt;* Append a separator to normal toolbar&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt; MOVE 3 TO ls_toolbar-butn_type.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;* Append Button &amp;amp; Icon for your function&lt;BR /&gt; MOVE 'SELALL' TO ls_toolbar-function.&lt;BR /&gt; MOVE icon_select_all TO ls_toolbar-icon.&lt;BR /&gt; MOVE 'Select All' TO ls_toolbar-quickinfo.&lt;BR /&gt; MOVE 'Select All' TO ls_toolbar-text.&lt;BR /&gt; MOVE ' ' TO ls_toolbar-disabled.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; MOVE 3 TO ls_toolbar-butn_type.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; MOVE 'DESELALL' TO ls_toolbar-function.&lt;BR /&gt; MOVE icon_deselect_all TO ls_toolbar-icon.&lt;BR /&gt; MOVE 'Deselect All' TO ls_toolbar-quickinfo.&lt;BR /&gt; MOVE 'Deselect All' TO ls_toolbar-text.&lt;BR /&gt; MOVE ' ' TO ls_toolbar-disabled.&lt;BR /&gt; APPEND ls_toolbar TO e_object-&amp;gt;mt_toolbar.&lt;BR /&gt; CLEAR ls_toolbar.&lt;BR /&gt;&lt;BR /&gt; ENDMETHOD. ""me_handle_toolbar&lt;BR /&gt;&lt;BR /&gt; METHOD me_handle_user_command.&lt;BR /&gt;&lt;BR /&gt; CASE e_ucomm.&lt;BR /&gt; WHEN 'SELALL'.&lt;BR /&gt; DATA : i_filter_entries TYPE lvc_t_fidx, "Filtered entries,&lt;BR /&gt; gv_sel_valid TYPE char1,&lt;BR /&gt; gv_sel_tabix TYPE sy-tabix.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt; IF gr_alv IS NOT INITIAL.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;check_changed_data&lt;BR /&gt; IMPORTING&lt;BR /&gt; e_valid = gv_sel_valid.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; IF gv_sel_valid EQ 'X'.&lt;BR /&gt; CALL METHOD gr_alv-&amp;gt;get_filtered_entries&lt;BR /&gt; IMPORTING&lt;BR /&gt; et_filtered_entries = i_filter_entries.&lt;BR /&gt;&lt;BR /&gt; UNASSIGN &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; LOOP AT gt_sflight ASSIGNING &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; gv_sel_tabix = sy-tabix.&lt;BR /&gt; READ TABLE i_filter_entries FROM gv_sel_tabix TRANSPORTING NO FIELDS.&lt;BR /&gt; IF sy-subrc IS NOT INITIAL.&lt;BR /&gt; &amp;lt;fs_sflight&amp;gt;-checkbox = abap_true.&lt;BR /&gt; ENDIF.&lt;BR /&gt; ENDLOOP.&lt;BR /&gt;&lt;BR /&gt;* Refresh output&lt;BR /&gt; PERFORM f_refresh_alv.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt; WHEN 'DESELALL'.&lt;BR /&gt; UNASSIGN &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; LOOP AT gt_sflight ASSIGNING &amp;lt;fs_sflight&amp;gt;.&lt;BR /&gt; &amp;lt;fs_sflight&amp;gt;-checkbox = abap_false.&lt;BR /&gt; ENDLOOP.&lt;BR /&gt;&lt;BR /&gt;* Refresh output&lt;BR /&gt; PERFORM f_refresh_alv.&lt;BR /&gt;&lt;BR /&gt; ENDCASE.&lt;BR /&gt; ENDMETHOD. ""me_handle_user_command&lt;BR /&gt;&lt;BR /&gt;ENDCLASS. ""lcl_alvhandler IMPLEMENTATION&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Form F_REFRESH_ALV&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;FORM f_refresh_alv.&lt;BR /&gt;&lt;BR /&gt; DATA : lw_stable TYPE lvc_s_stbl.&lt;BR /&gt;&lt;BR /&gt; CLEAR : lw_stable.&lt;BR /&gt; lw_stable-row = abap_true.&lt;BR /&gt; lw_stable-col = abap_true.&lt;BR /&gt;&lt;BR /&gt; gr_alv-&amp;gt;refresh_table_display(&lt;BR /&gt; EXPORTING&lt;BR /&gt; is_stable = lw_stable&lt;BR /&gt; EXCEPTIONS&lt;BR /&gt; finished = 1&lt;BR /&gt; OTHERS = 2 ).&lt;BR /&gt; IF sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt; MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;BR /&gt; WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;BR /&gt; ENDIF.&lt;BR /&gt;&lt;BR /&gt;ENDFORM. "f_refresh_alv&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;*&amp;amp; Module USER_COMMAND_9000 INPUT&lt;BR /&gt;*&amp;amp;———————————————————————*&lt;BR /&gt;MODULE user_command_9000 INPUT.&lt;BR /&gt;&lt;BR /&gt; CASE sy-ucomm.&lt;BR /&gt; WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.&lt;BR /&gt; LEAVE TO SCREEN 0.&lt;BR /&gt; ENDCASE.&lt;BR /&gt;&lt;BR /&gt;ENDMODULE. "user_command_9000 INPUT&lt;/P&gt;
  &lt;P&gt;Screen:&lt;/P&gt;
  &lt;P&gt;&lt;IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2235721-image.png" /&gt;&lt;/P&gt;
  &lt;P&gt;Thanks in advance !!&lt;/P&gt;</description>
      <pubDate>Mon, 15 Jan 2024 19:10:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/data-changed-in-backend-even-without-using-data-changed-finished-event/m-p/12819812#M2026217</guid>
      <dc:creator>piyushnandwani</dc:creator>
      <dc:date>2024-01-15T19:10:07Z</dc:date>
    </item>
    <item>
      <title>Re: Data changed in backend even without using data_changed_finished event explicitly</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/data-changed-in-backend-even-without-using-data-changed-finished-event/m-p/12819813#M2026218</link>
      <description>&lt;P&gt;The internal table is updated by the method check_changed_data.&lt;/P&gt;&lt;P&gt;Please edit your question (Actions&amp;gt;Edit), select your code and press the button [CODE], which makes the code appear colored/indented, it'll be easier for people to look at it. Thanks! &lt;/P&gt;</description>
      <pubDate>Mon, 15 Jan 2024 22:08:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/data-changed-in-backend-even-without-using-data-changed-finished-event/m-p/12819813#M2026218</guid>
      <dc:creator>Sandra_Rossi</dc:creator>
      <dc:date>2024-01-15T22:08:34Z</dc:date>
    </item>
  </channel>
</rss>

