<?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: alv editable and saving data into database table --sample program in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030504#M963265</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Pl. see this prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT z_demo_alv_jg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Storing table name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  p_table = tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create internal table dynamically with the stucture of table name&lt;/P&gt;&lt;/LI&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'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create another temp. table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_fieldcat BY col_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select data from table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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  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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'Z_STANDARD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local data declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: li_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;        l_line TYPE REF TO data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local field-symbols&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create workarea&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE r_ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  When a record is selected&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Read the selected record&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&lt;/P&gt;&lt;P&gt;      rs_selfield-tabindex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Store the record in an internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;l_tab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Fetch the field catalog info&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Make all the fields input enabled except key fields&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          w_field-input = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          MODIFY i_fieldcat FROM w_field TRANSPORTING input&lt;/P&gt;&lt;P&gt;          WHERE key IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display the record for editing purpose&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Read the modified data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          READ TABLE &amp;lt;l_tab&amp;gt; INDEX 1 INTO &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        If the record is changed then track its index no.&lt;/P&gt;&lt;/LI&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  When save button is pressed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN 'SAVE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Sort the index table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SORT i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Delete all duplicate records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DELETE ADJACENT DUPLICATES FROM i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find out the changes in the internal table&lt;/P&gt;&lt;/LI&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Lock the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Modify the database table with these changes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MODIFY (p_table) FROM TABLE &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Unlock the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  rs_selfield-refresh = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Joy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 24 Jun 2008 11:44:10 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-06-24T11:44:10Z</dc:date>
    <item>
      <title>alv editable and saving data into database table --sample program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030502#M963263</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi i need a help  on alv report with editable and saving data into the database table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanx in advance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;sat&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2008 11:36:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030502#M963263</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-06-24T11:36:55Z</dc:date>
    </item>
    <item>
      <title>Re: alv editable and saving data into database table --sample program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030503#M963264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please refer these sample programs,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BCALV_EDIT_01&lt;/P&gt;&lt;P&gt;BCALV_EDIT_02&lt;/P&gt;&lt;P&gt;BCALV_EDIT_03&lt;/P&gt;&lt;P&gt;BCALV_EDIT_04&lt;/P&gt;&lt;P&gt;BCALV_EDIT_05&lt;/P&gt;&lt;P&gt;BCALV_EDIT_06&lt;/P&gt;&lt;P&gt;BCALV_EDIT_07&lt;/P&gt;&lt;P&gt;BCALV_EDIT_08&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2008 11:42:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030503#M963264</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-06-24T11:42:19Z</dc:date>
    </item>
    <item>
      <title>Re: alv editable and saving data into database table --sample program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030504#M963265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Pl. see this prog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT z_demo_alv_jg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************************&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Storing table name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  p_table = tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create internal table dynamically with the stucture of table name&lt;/P&gt;&lt;/LI&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'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create another temp. table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT i_fieldcat BY col_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select data from table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Display report&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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  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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'Z_STANDARD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "SET_PF_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local data declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: li_tab TYPE REF TO data,&lt;/P&gt;&lt;P&gt;        l_line TYPE REF TO data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local field-symbols&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create workarea&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE r_ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  When a record is selected&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Read the selected record&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&lt;/P&gt;&lt;P&gt;      rs_selfield-tabindex.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Store the record in an internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        APPEND &amp;lt;dyn_wa&amp;gt; TO &amp;lt;l_tab&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Fetch the field catalog info&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Make all the fields input enabled except key fields&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          w_field-input = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          MODIFY i_fieldcat FROM w_field TRANSPORTING input&lt;/P&gt;&lt;P&gt;          WHERE key IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display the record for editing purpose&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Read the modified data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          READ TABLE &amp;lt;l_tab&amp;gt; INDEX 1 INTO &amp;lt;l_wa&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        If the record is changed then track its index no.&lt;/P&gt;&lt;/LI&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  When save button is pressed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN 'SAVE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Sort the index table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SORT i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Delete all duplicate records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DELETE ADJACENT DUPLICATES FROM i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT i_index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find out the changes in the internal table&lt;/P&gt;&lt;/LI&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Lock the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Modify the database table with these changes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MODIFY (p_table) FROM TABLE &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        REFRESH &amp;lt;dyn_tab_temp&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Unlock the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  rs_selfield-refresh = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Joy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2008 11:44:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-editable-and-saving-data-into-database-table-sample-program/m-p/4030504#M963265</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-06-24T11:44:10Z</dc:date>
    </item>
  </channel>
</rss>

