<?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 Re: Save Changed data in editable alv grid. in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489145#M1653094</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer this below link&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editing" target="test_blank"&gt;http://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editing&lt;/A&gt;&lt;EM&gt;and&lt;/EM&gt;saving&lt;EM&gt;the&lt;/EM&gt;edited&lt;EM&gt;values&lt;/EM&gt;in+Database(OOPS)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or take this sample program and make changes in your programe accordingly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT z_demo_alv_jg.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TYPE-POOLS                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis. *******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INTERNAL TABLES/WORK AREAS/VARIABLES     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;DATA: i_fieldcat TYPE slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      i_index TYPE STANDARD TABLE OF i WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      w_field TYPE slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      p_table LIKE dd02l-tabname,&lt;/P&gt;&lt;P&gt;      dy_table TYPE REF TO data,&lt;/P&gt;&lt;P&gt;      dy_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;      dy_line TYPE REF TO data.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FIELD-SYMBOLS                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;dyn_table&amp;gt; TYPE STANDARD TABLE,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_wa&amp;gt; TYPE ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_field&amp;gt; TYPE ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_tab_temp&amp;gt; TYPE STANDARD TABLE.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION SCREEN                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;PARAMETERS: tabname(30) TYPE c,&lt;/P&gt;&lt;P&gt;            lines(5)  TYPE n.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.* Storing table name&lt;/P&gt;&lt;P&gt;  p_table = tabname.* Create internal table dynamically with the stucture of table name&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;entered in the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE DATA dy_table TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN dy_table-&amp;gt;* TO &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE i000(z_zzz_ca_messages) WITH ' No table found'.    LEAVE TO LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create workarea for the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE DATA dy_line LIKE LINE OF &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;  ASSIGN dy_line-&amp;gt;* TO &amp;lt;dyn_wa&amp;gt;.* Create another temp. table&lt;/P&gt;&lt;P&gt;  CREATE DATA dy_tab TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN dy_tab-&amp;gt;* TO &amp;lt;dyn_tab_temp&amp;gt;.  SORT i_fieldcat BY col_pos.* Select data from table&lt;/P&gt;&lt;P&gt;  SELECT * FROM (p_table)&lt;/P&gt;&lt;P&gt;  INTO TABLE &amp;lt;dyn_table&amp;gt;&lt;/P&gt;&lt;P&gt;  UP TO lines ROWS.  REFRESH &amp;lt;dyn_tab_temp&amp;gt;.* Display report&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program       = sy-repid&lt;/P&gt;&lt;P&gt;      i_structure_name         = p_table&lt;/P&gt;&lt;P&gt;      i_callback_user_command  = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab                 = &amp;lt;dyn_table&amp;gt;&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error            = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.  IF sy-subrc &amp;lt;&amp;gt; 0.  ENDIF.&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Setting custom PF-Status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;RT_EXTAB   Excluding table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM set_pf_status USING rt_extab TYPE slis_t_extab.  SET PF-STATUS 'Z_STANDARD'.ENDFORM.                    "SET_PF_STATUS&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Handling custom function codes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;R_UCOMM      Function code value&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;RS_SELFIELD  Info. of cursor position in ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM user_command  USING    r_ucomm LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;        			    rs_selfield TYPE slis_selfield.* Local data declaration&lt;/P&gt;&lt;P&gt;  DATA: li_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;        l_line TYPE REF TO data.* Local field-symbols&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS:&amp;lt;l_tab&amp;gt; TYPE table,&lt;/P&gt;&lt;P&gt;                &amp;lt;l_wa&amp;gt;  TYPE ANY.* Create table&lt;/P&gt;&lt;P&gt;  CREATE DATA li_tab TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN li_tab-&amp;gt;* TO &amp;lt;l_tab&amp;gt;.* Create workarea&lt;/P&gt;&lt;P&gt;  CREATE DATA l_line LIKE LINE OF &amp;lt;l_tab&amp;gt;.&lt;/P&gt;&lt;P&gt;  ASSIGN l_line-&amp;gt;* TO &amp;lt;l_wa&amp;gt;.  CASE r_ucomm.*   When a record is selected&lt;/P&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.*     Read the selected record&lt;/P&gt;&lt;P&gt;      READ TABLE &amp;lt;dyn_table&amp;gt; ASSIGNING &amp;lt;dyn_wa&amp;gt; INDEX&lt;/P&gt;&lt;P&gt;      rs_selfield-tabindex.      IF sy-subrc = 0.*       Store the record in an internal table&lt;/P&gt;&lt;P&gt;        APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;l_tab&amp;gt;.*       Fetch the field catalog info&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_program_name         = 'Z_DEMO_PDF_JG'&lt;/P&gt;&lt;P&gt;            i_structure_name       = p_table&lt;/P&gt;&lt;P&gt;          CHANGING&lt;/P&gt;&lt;P&gt;            ct_fieldcat            = i_fieldcat&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;            program_error          = 2&lt;/P&gt;&lt;P&gt;            OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.*         Make all the fields input enabled except key fields&lt;/P&gt;&lt;P&gt;          w_field-input = 'X'.          MODIFY i_fieldcat FROM w_field TRANSPORTING input&lt;/P&gt;&lt;P&gt;          WHERE key IS INITIAL.        ENDIF.*       Display the record for editing purpose&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_callback_program    = sy-repid&lt;/P&gt;&lt;P&gt;            i_structure_name      = p_table&lt;/P&gt;&lt;P&gt;            it_fieldcat           = i_fieldcat&lt;/P&gt;&lt;P&gt;            i_screen_start_column = 10&lt;/P&gt;&lt;P&gt;            i_screen_start_line   = 15&lt;/P&gt;&lt;P&gt;            i_screen_end_column   = 200&lt;/P&gt;&lt;P&gt;            i_screen_end_line     = 20&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            t_outtab              = &amp;lt;l_tab&amp;gt;&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            program_error         = 1&lt;/P&gt;&lt;P&gt;            OTHERS                = 2.        IF sy-subrc = 0.*         Read the modified data&lt;/P&gt;&lt;P&gt;          READ TABLE &amp;lt;l_tab&amp;gt; INDEX 1 INTO &amp;lt;l_wa&amp;gt;.*         If the record is changed then track its index no.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        and populate it in an internal table for future&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        action&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF sy-subrc = 0 AND &amp;lt;dyn_wa&amp;gt; &amp;lt;&amp;gt; &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;            &amp;lt;dyn_wa&amp;gt; = &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;            i_index = rs_selfield-tabindex.&lt;/P&gt;&lt;P&gt;            APPEND i_index.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.      ENDIF.*   When save button is pressed&lt;/P&gt;&lt;P&gt;    WHEN 'SAVE'.*     Sort the index table&lt;/P&gt;&lt;P&gt;      SORT i_index.*     Delete all duplicate records&lt;/P&gt;&lt;P&gt;      DELETE ADJACENT DUPLICATES FROM i_index.      LOOP AT i_index.*       Find out the changes in the internal table&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      and populate these changes in another internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        READ TABLE &amp;lt;dyn_table&amp;gt; ASSIGNING &amp;lt;dyn_wa&amp;gt; INDEX i_index.&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;        ENDIF.      ENDLOOP.*     Lock the table&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'ENQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          mode_rstable   = 'E'&lt;/P&gt;&lt;P&gt;          tabname        = p_table&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          foreign_lock   = 1&lt;/P&gt;&lt;P&gt;          system_failure = 2&lt;/P&gt;&lt;P&gt;          OTHERS         = 3.      IF sy-subrc = 0.*       Modify the database table with these changes&lt;/P&gt;&lt;P&gt;        MODIFY (p_table) FROM TABLE &amp;lt;dyn_tab_temp&amp;gt;.        REFRESH &amp;lt;dyn_tab_temp&amp;gt;.*       Unlock the table&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'DEQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            mode_rstable = 'E'&lt;/P&gt;&lt;P&gt;            tabname      = p_table.      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.  rs_selfield-refresh = 'X'.ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sanjay Gogikar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 19 Dec 2011 11:17:45 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2011-12-19T11:17:45Z</dc:date>
    <item>
      <title>Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489144#M1653093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Apabers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1)I have a selection screen with Original Delivery and Consignment Delivery.&lt;/P&gt;&lt;P&gt;2)grid output with vbeln,refvbeln and quantity. where quantity is the editable field. &lt;/P&gt;&lt;P&gt;3)when the user change the quantity the changed data should save in such a way that i should not change the old records but have to insert new records with changed data in this manner  &lt;STRONG&gt;selection-screen Consignment Delivery as vbeln, grid output vbeln as refvbeln and changed quantity.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am stuck to save the changed data.&lt;/P&gt;&lt;P&gt;hope for the help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &amp;amp; regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Dec 2011 11:03:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489144#M1653093</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-19T11:03:36Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489145#M1653094</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer this below link&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editing" target="test_blank"&gt;http://wiki.sdn.sap.com/wiki/display/Snippets/ALV-Editing&lt;/A&gt;&lt;EM&gt;and&lt;/EM&gt;saving&lt;EM&gt;the&lt;/EM&gt;edited&lt;EM&gt;values&lt;/EM&gt;in+Database(OOPS)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or take this sample program and make changes in your programe accordingly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT z_demo_alv_jg.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TYPE-POOLS                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis. *******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INTERNAL TABLES/WORK AREAS/VARIABLES     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;DATA: i_fieldcat TYPE slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      i_index TYPE STANDARD TABLE OF i WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;      w_field TYPE slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      p_table LIKE dd02l-tabname,&lt;/P&gt;&lt;P&gt;      dy_table TYPE REF TO data,&lt;/P&gt;&lt;P&gt;      dy_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;      dy_line TYPE REF TO data.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FIELD-SYMBOLS                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;dyn_table&amp;gt; TYPE STANDARD TABLE,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_wa&amp;gt; TYPE ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_field&amp;gt; TYPE ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;dyn_tab_temp&amp;gt; TYPE STANDARD TABLE.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION SCREEN                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;PARAMETERS: tabname(30) TYPE c,&lt;/P&gt;&lt;P&gt;            lines(5)  TYPE n.*******************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.* Storing table name&lt;/P&gt;&lt;P&gt;  p_table = tabname.* Create internal table dynamically with the stucture of table name&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;entered in the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE DATA dy_table TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN dy_table-&amp;gt;* TO &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE i000(z_zzz_ca_messages) WITH ' No table found'.    LEAVE TO LIST-PROCESSING.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create workarea for the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CREATE DATA dy_line LIKE LINE OF &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;  ASSIGN dy_line-&amp;gt;* TO &amp;lt;dyn_wa&amp;gt;.* Create another temp. table&lt;/P&gt;&lt;P&gt;  CREATE DATA dy_tab TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN dy_tab-&amp;gt;* TO &amp;lt;dyn_tab_temp&amp;gt;.  SORT i_fieldcat BY col_pos.* Select data from table&lt;/P&gt;&lt;P&gt;  SELECT * FROM (p_table)&lt;/P&gt;&lt;P&gt;  INTO TABLE &amp;lt;dyn_table&amp;gt;&lt;/P&gt;&lt;P&gt;  UP TO lines ROWS.  REFRESH &amp;lt;dyn_tab_temp&amp;gt;.* Display report&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_callback_program       = sy-repid&lt;/P&gt;&lt;P&gt;      i_structure_name         = p_table&lt;/P&gt;&lt;P&gt;      i_callback_user_command  = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab                 = &amp;lt;dyn_table&amp;gt;&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      program_error            = 1&lt;/P&gt;&lt;P&gt;      OTHERS                   = 2.  IF sy-subrc &amp;lt;&amp;gt; 0.  ENDIF.&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Setting custom PF-Status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;RT_EXTAB   Excluding table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM set_pf_status USING rt_extab TYPE slis_t_extab.  SET PF-STATUS 'Z_STANDARD'.ENDFORM.                    "SET_PF_STATUS&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  user_command&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Handling custom function codes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;R_UCOMM      Function code value&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;RS_SELFIELD  Info. of cursor position in ALV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM user_command  USING    r_ucomm LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;        			    rs_selfield TYPE slis_selfield.* Local data declaration&lt;/P&gt;&lt;P&gt;  DATA: li_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;        l_line TYPE REF TO data.* Local field-symbols&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS:&amp;lt;l_tab&amp;gt; TYPE table,&lt;/P&gt;&lt;P&gt;                &amp;lt;l_wa&amp;gt;  TYPE ANY.* Create table&lt;/P&gt;&lt;P&gt;  CREATE DATA li_tab TYPE STANDARD TABLE OF (p_table).&lt;/P&gt;&lt;P&gt;  ASSIGN li_tab-&amp;gt;* TO &amp;lt;l_tab&amp;gt;.* Create workarea&lt;/P&gt;&lt;P&gt;  CREATE DATA l_line LIKE LINE OF &amp;lt;l_tab&amp;gt;.&lt;/P&gt;&lt;P&gt;  ASSIGN l_line-&amp;gt;* TO &amp;lt;l_wa&amp;gt;.  CASE r_ucomm.*   When a record is selected&lt;/P&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.*     Read the selected record&lt;/P&gt;&lt;P&gt;      READ TABLE &amp;lt;dyn_table&amp;gt; ASSIGNING &amp;lt;dyn_wa&amp;gt; INDEX&lt;/P&gt;&lt;P&gt;      rs_selfield-tabindex.      IF sy-subrc = 0.*       Store the record in an internal table&lt;/P&gt;&lt;P&gt;        APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;l_tab&amp;gt;.*       Fetch the field catalog info&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_program_name         = 'Z_DEMO_PDF_JG'&lt;/P&gt;&lt;P&gt;            i_structure_name       = p_table&lt;/P&gt;&lt;P&gt;          CHANGING&lt;/P&gt;&lt;P&gt;            ct_fieldcat            = i_fieldcat&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            inconsistent_interface = 1&lt;/P&gt;&lt;P&gt;            program_error          = 2&lt;/P&gt;&lt;P&gt;            OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.*         Make all the fields input enabled except key fields&lt;/P&gt;&lt;P&gt;          w_field-input = 'X'.          MODIFY i_fieldcat FROM w_field TRANSPORTING input&lt;/P&gt;&lt;P&gt;          WHERE key IS INITIAL.        ENDIF.*       Display the record for editing purpose&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            i_callback_program    = sy-repid&lt;/P&gt;&lt;P&gt;            i_structure_name      = p_table&lt;/P&gt;&lt;P&gt;            it_fieldcat           = i_fieldcat&lt;/P&gt;&lt;P&gt;            i_screen_start_column = 10&lt;/P&gt;&lt;P&gt;            i_screen_start_line   = 15&lt;/P&gt;&lt;P&gt;            i_screen_end_column   = 200&lt;/P&gt;&lt;P&gt;            i_screen_end_line     = 20&lt;/P&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;P&gt;            t_outtab              = &amp;lt;l_tab&amp;gt;&lt;/P&gt;&lt;P&gt;          EXCEPTIONS&lt;/P&gt;&lt;P&gt;            program_error         = 1&lt;/P&gt;&lt;P&gt;            OTHERS                = 2.        IF sy-subrc = 0.*         Read the modified data&lt;/P&gt;&lt;P&gt;          READ TABLE &amp;lt;l_tab&amp;gt; INDEX 1 INTO &amp;lt;l_wa&amp;gt;.*         If the record is changed then track its index no.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        and populate it in an internal table for future&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        action&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF sy-subrc = 0 AND &amp;lt;dyn_wa&amp;gt; &amp;lt;&amp;gt; &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;            &amp;lt;dyn_wa&amp;gt; = &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;            i_index = rs_selfield-tabindex.&lt;/P&gt;&lt;P&gt;            APPEND i_index.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ENDIF.      ENDIF.*   When save button is pressed&lt;/P&gt;&lt;P&gt;    WHEN 'SAVE'.*     Sort the index table&lt;/P&gt;&lt;P&gt;      SORT i_index.*     Delete all duplicate records&lt;/P&gt;&lt;P&gt;      DELETE ADJACENT DUPLICATES FROM i_index.      LOOP AT i_index.*       Find out the changes in the internal table&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      and populate these changes in another internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        READ TABLE &amp;lt;dyn_table&amp;gt; ASSIGNING &amp;lt;dyn_wa&amp;gt; INDEX i_index.&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;        ENDIF.      ENDLOOP.*     Lock the table&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'ENQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          mode_rstable   = 'E'&lt;/P&gt;&lt;P&gt;          tabname        = p_table&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          foreign_lock   = 1&lt;/P&gt;&lt;P&gt;          system_failure = 2&lt;/P&gt;&lt;P&gt;          OTHERS         = 3.      IF sy-subrc = 0.*       Modify the database table with these changes&lt;/P&gt;&lt;P&gt;        MODIFY (p_table) FROM TABLE &amp;lt;dyn_tab_temp&amp;gt;.        REFRESH &amp;lt;dyn_tab_temp&amp;gt;.*       Unlock the table&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'DEQUEUE_E_TABLE'&lt;/P&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;P&gt;            mode_rstable = 'E'&lt;/P&gt;&lt;P&gt;            tabname      = p_table.      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.  rs_selfield-refresh = 'X'.ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sanjay Gogikar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Dec 2011 11:17:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489145#M1653094</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-19T11:17:45Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489146#M1653095</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Thanku for quick reply.&lt;/P&gt;&lt;P&gt;Hope u have read my requirement..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i am using REUSE_ALV_GRID_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &amp;amp; regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Dec 2011 11:30:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489146#M1653095</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-19T11:30:37Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489147#M1653096</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Copy data to another internal table before displaying the report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i_copy[] = i_output[] .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Write the following code in User Command subroutine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step1: Create a reference variable to hold the instance of the ALV grid control.&lt;/P&gt;&lt;P&gt;This instance is defined with reference to class CL_GUI_ALV_GRID&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: ref1 TYPE REF TO cl_gui_alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step2: Instantiate the ALV grid control to the above created variable.&lt;/P&gt;&lt;P&gt;Call 'GET_GLOBALS_FROM_SLVC_FULLSCR' function module to do this.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      e_grid = ref1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step3: Check the changed data from the selected entries&lt;/P&gt;&lt;P&gt;CALL METHOD ref1-&amp;gt;check_changed_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Step4:&lt;/P&gt;&lt;P&gt;Now loop into display table and read copied data.&lt;/P&gt;&lt;P&gt;For those records where quantity is not matching store them as a new record in the table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT i_output INTO wa_output.&lt;/P&gt;&lt;P&gt;READ TABLE i_copy INTO wa_copy&lt;/P&gt;&lt;P&gt;              WITH KEY vbeln = wa_output-vbeln&lt;/P&gt;&lt;P&gt;                        refvbeln = wa_output-refvbeln.&lt;/P&gt;&lt;P&gt; if sy-subrc = 0&lt;/P&gt;&lt;P&gt; AND wa_copy-quantity &amp;lt;&amp;gt; wa_output-quantity.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Append wa_output to another table or i_output/i_copy&lt;/P&gt;&lt;P&gt; ENDIF.                    &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Dec 2011 12:55:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489147#M1653096</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-19T12:55:15Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489148#M1653097</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Before displaying the data to output. Copy the data into temp internal table for referance.(ex: t_out_tmp)&lt;/P&gt;&lt;P&gt;2. In grid setting ALV set the option EDT_CLL_CB = 'X'.&lt;/P&gt;&lt;P&gt;3. In user command perform of ALV once save is performed do following operation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF sy-ucomm = 'SAVE'.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;    Loop at t_out into wa_out.&lt;/P&gt;&lt;P&gt;          &lt;/P&gt;&lt;P&gt;             read table t_out_tmp into wa_tmp with key vbeln  = wa_out-vbeln.&lt;/P&gt;&lt;P&gt;             if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;*---it is not new record,in this case check remaining editable fields changes.&lt;/P&gt;&lt;P&gt;                 if wa_out_tmp-qty &amp;lt;&amp;gt; wa_out-qty.&lt;/P&gt;&lt;P&gt;                     *--Update the data.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;           else.&lt;/P&gt;&lt;P&gt;*---it is now new record,for this case create the record&lt;/P&gt;&lt;P&gt;           endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   endloop.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;raghu.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Dec 2011 13:19:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489148#M1653097</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-19T13:19:59Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489149#M1653098</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;am not able to fetch the data, here is my code..can u please help me...&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Displaying Grid Output&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      I_CALLBACK_PROGRAM       = SY-REPID&lt;/P&gt;&lt;P&gt;      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      IS_LAYOUT                = WA_LAYOUT&lt;/P&gt;&lt;P&gt;      IT_FIELDCAT              = LT_FIELDCAT&lt;/P&gt;&lt;P&gt;      I_DEFAULT                = 'X'&lt;/P&gt;&lt;P&gt;      I_SAVE                   = 'A'&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      T_OUTTAB                 = LT_FINAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR :WA_LAYOUT,WA_FIELDCAT.&lt;/P&gt;&lt;P&gt;  FREE : LT_FIELDCAT,LT_FINAL.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM BUILD_FIELDCAT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      I_PROGRAM_NAME         = SY-CPROG&lt;/P&gt;&lt;P&gt;      I_STRUCTURE_NAME       = 'ZPDMTISSUES'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      CT_FIELDCAT            = LT_FIELDCAT&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      INCONSISTENT_INTERFACE = 1&lt;/P&gt;&lt;P&gt;      PROGRAM_ERROR          = 2&lt;/P&gt;&lt;P&gt;      OTHERS                 = 3.&lt;/P&gt;&lt;P&gt;  LOOP AT LT_FIELDCAT ASSIGNING &amp;lt;FS_FIELDCAT&amp;gt;.&lt;/P&gt;&lt;P&gt;    IF &amp;lt;FS_FIELDCAT&amp;gt;-FIELDNAME EQ 'MENGE'.&lt;/P&gt;&lt;P&gt;      &amp;lt;FS_FIELDCAT&amp;gt;-EDIT                = 'X'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  CLEAR : WA_LAYOUT, WA_COMMON_GRID_SETTINGS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WA_LAYOUT-ZEBRA                    = 'X'.&lt;/P&gt;&lt;P&gt;  WA_LAYOUT-COLWIDTH_OPTIMIZE        = 'X'.&lt;/P&gt;&lt;P&gt;  WA_COMMON_GRID_SETTINGS-EDT_CLL_CB = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SET_PF_STATUS USING EXCLUDETAB TYPE SLIS_T_EXTAB.      "#EC CALLED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'ZPDMTCONSIGN'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  USER_COMMAND                                             *&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM L_SELFIELD TYPE SLIS_SELFIELD."#EC CALLED  "#EC *&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;When user clicks on '&amp;amp;DATA_SAVE' button&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF SY-UCOMM = '&amp;amp;DATA_SAVE'.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'POPUP_TO_CONFIRM'                        "#EC *&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        TITLEBAR       = TEXT-003&lt;/P&gt;&lt;P&gt;        TEXT_QUESTION  = TEXT-004&lt;/P&gt;&lt;P&gt;        TEXT_BUTTON_1  = 'Yes'&lt;/P&gt;&lt;P&gt;        TEXT_BUTTON_2  = 'No'&lt;/P&gt;&lt;P&gt;        DEFAULT_BUTTON = '1'&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        ANSWER         = L_ANSWER&lt;/P&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;P&gt;        TEXT_NOT_FOUND = 1&lt;/P&gt;&lt;P&gt;        OTHERS         = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*If User Want To Save Changes&lt;/P&gt;&lt;P&gt;  IF L_ANSWER = '1'.&lt;/P&gt;&lt;P&gt;    CLEAR : WA_FINAL.&lt;/P&gt;&lt;P&gt;*Deleting Empty Records From LT_FINAL&lt;/P&gt;&lt;P&gt;    DELETE LT_FINAL WHERE  MENGE  IS INITIAL.&lt;/P&gt;&lt;P&gt;*IF User Clicks On Save Without Making Changes&lt;/P&gt;&lt;P&gt;    IF LT_FINAL = ZPDMTISSUES.&lt;/P&gt;&lt;P&gt;      MESSAGE S000(ZZ) WITH TEXT-006.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;*To Create Or Change A Record&lt;/P&gt;&lt;P&gt;      UPDATE ZPDMTISSUES FROM TABLE LT_FINAL.&lt;/P&gt;&lt;P&gt;      COMMIT WORK AND WAIT.&lt;/P&gt;&lt;P&gt;      CLEAR : LT_FINAL.&lt;/P&gt;&lt;P&gt;      L_SELFIELD-REFRESH = 'X'.&lt;/P&gt;&lt;P&gt;      REFRESH : LT_FINAL.&lt;/P&gt;&lt;P&gt;*IF User Clicks On Save After Making Changes&lt;/P&gt;&lt;P&gt;      LOOP AT LT_FINAL.&lt;/P&gt;&lt;P&gt;        READ TABLE LT_FINAL WITH KEY ID = LT_FINAL-ID.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;          IF LT_FINAL &amp;lt;&amp;gt; ZPDMTISSUES.&lt;/P&gt;&lt;P&gt;*Records Changed&lt;/P&gt;&lt;P&gt;            L_RECORDSCHANGED = L_RECORDSCHANGED + 1.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;*Records Deleted&lt;/P&gt;&lt;P&gt;          L_RECORDSDELETED = L_RECORDSDELETED + 1.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        CLEAR : LT_FINAL.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*To Display Number Of Records Created Or Changed Or Deleted&lt;/P&gt;&lt;P&gt;      IF L_RECORDSCHANGED IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;        CONCATENATE L_RECORDSCHANGED TEXT-007 INTO L_TEXT2 SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF L_RECORDSDELETED IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;        CONCATENATE L_RECORDSDELETED TEXT-008 INTO L_TEXT3 SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      DATA : REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new&lt;/P&gt;&lt;P&gt;      IF REF_GRID IS INITIAL.&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'&lt;/P&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;P&gt;            E_GRID = REF_GRID.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF NOT REF_GRID IS INITIAL.&lt;/P&gt;&lt;P&gt;        CALL METHOD REF_GRID-&amp;gt;CHECK_CHANGED_DATA.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND LINES OF LT_FINAL TO LT_COPY.&lt;/P&gt;&lt;P&gt;      LOOP AT LT_FINAL INTO WA_FINAL.&lt;/P&gt;&lt;P&gt;        READ TABLE LT_COPY INTO WA_COPY&lt;/P&gt;&lt;P&gt;        WITH KEY VBELN = P_RVBELN&lt;/P&gt;&lt;P&gt;        REFVBELN = P_VBELN.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0&lt;/P&gt;&lt;P&gt;        AND WA_COPY-MENGE &amp;lt;&amp;gt; WA_FINAL-MENGE.&lt;/P&gt;&lt;P&gt;           APPEND WA_FINAL TO LT_FINAL.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        CLEAR : LT_FINAL.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "USER_COMMAND&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &amp;amp; regards.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Dec 2011 05:43:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489149#M1653098</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-20T05:43:02Z</dc:date>
    </item>
    <item>
      <title>Re: Save Changed data in editable alv grid.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489150#M1653099</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi anusha,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please check it in debug mode , in debug mode check whether internal table is filled or not , if it is empty check your data fetching logic and check field cat also once,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Siva&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Dec 2011 10:00:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-changed-data-in-editable-alv-grid/m-p/8489150#M1653099</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2011-12-20T10:00:44Z</dc:date>
    </item>
  </channel>
</rss>

