<?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 in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409307#M537281</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;There are lot of example programs in the package SLIS  that will be there in all R/3 systems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check all the programs that end with EDITXX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 Jun 2007 05:03:06 GMT</pubDate>
    <dc:creator>seshatalpasai_madala</dc:creator>
    <dc:date>2007-06-28T05:03:06Z</dc:date>
    <item>
      <title>ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409306#M537280</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can any one explain me how can we write the code for the ALV . I want to get an ALV output which come in an editable mode where i can edit in the output and if i click a userdefined pushbutton i should get that data updated in database and should come and get visible. How can we do this. Please tell me briefly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Points will be granted for all the answers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 04:52:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409306#M537280</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-28T04:52:49Z</dc:date>
    </item>
    <item>
      <title>Re: ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409307#M537281</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;There are lot of example programs in the package SLIS  that will be there in all R/3 systems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check all the programs that end with EDITXX&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 05:03:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409307#M537281</guid>
      <dc:creator>seshatalpasai_madala</dc:creator>
      <dc:date>2007-06-28T05:03:06Z</dc:date>
    </item>
    <item>
      <title>Re: ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409308#M537282</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;editable alv:&lt;/P&gt;&lt;P&gt;chk this link.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_editable.htm" target="test_blank"&gt;http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_editable.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then u can capture the events in USER COMMAND.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_ucomm.htm" target="test_blank"&gt;http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_ucomm.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See these threads&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1593636"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1947160"&gt;&lt;/A&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; Report ZLAXMI_REPORT6 *&lt;/P&gt;&lt;P&gt;*&amp;amp; *&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; *&lt;/P&gt;&lt;P&gt;*&amp;amp; *&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;&lt;/P&gt;&lt;P&gt;REPORT ZLAXMI_REPORT6 NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;MESSAGE-ID ZZ&lt;/P&gt;&lt;P&gt;LINE-SIZE 132&lt;/P&gt;&lt;P&gt;LINE-COUNT 65 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: MARA.&lt;/P&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;TYPES: BEGIN OF T_MARA,&lt;/P&gt;&lt;P&gt;MATNR TYPE MARA-MATNR, "Material Number&lt;/P&gt;&lt;P&gt;ERSDA TYPE MARA-ERSDA, "Creation date&lt;/P&gt;&lt;P&gt;BRGEW TYPE MARA-BRGEW, "Gross weight&lt;/P&gt;&lt;P&gt;NTGEW TYPE MARA-NTGEW, "Net weight&lt;/P&gt;&lt;P&gt;MTART TYPE MARA-MTART, "Material type&lt;/P&gt;&lt;P&gt;MBRSH TYPE MARA-MBRSH, "Industry Sector&lt;/P&gt;&lt;P&gt;REC_SEL TYPE C , "checkbox&lt;/P&gt;&lt;P&gt;END OF T_MARA.&lt;/P&gt;&lt;P&gt;&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;V A R I A B L E S&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;DATA: V_REPID LIKE SY-REPID,&lt;/P&gt;&lt;P&gt;V_FLAG(1) TYPE C.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS :&lt;/P&gt;&lt;P&gt;C_X(1) TYPE C VALUE 'X',&lt;/P&gt;&lt;P&gt;C_PF_STATUS TYPE SLIS_FORMNAME VALUE 'F_SET_PF_STATUS',&lt;/P&gt;&lt;P&gt;C_FC_DELETE(6) TYPE C VALUE 'DELETE',&lt;/P&gt;&lt;P&gt;C_FC_MODIFY(6) TYPE C VALUE 'MODIFY',&lt;/P&gt;&lt;P&gt;C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND',&lt;/P&gt;&lt;P&gt;C_USER_COMMAND_MODIFY TYPE SLIS_FORMNAME&lt;/P&gt;&lt;P&gt;VALUE 'F_USER_COMMAND_MODIFY',&lt;/P&gt;&lt;P&gt;C_ICON_DELETE TYPE ICON-NAME VALUE 'ICON_DELETE', " Icon,Delete'&lt;/P&gt;&lt;P&gt;C_ICON_CANCEL TYPE ICON-NAME VALUE 'ICON_CANCEL', " Icon,Cancel'&lt;/P&gt;&lt;P&gt;C_FC_SAVE(4) TYPE C VALUE 'SAVE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*internal table declarations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;IT_MODIFY TYPE STANDARD TABLE OF T_MARA WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;IT_TEMP TYPE STANDARD TABLE OF MARA WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-ALV Internal Tables.&lt;/P&gt;&lt;P&gt;*--Field Catalog&lt;/P&gt;&lt;P&gt;IT_FIELDCAT TYPE STANDARD TABLE OF&lt;/P&gt;&lt;P&gt;SLIS_FIELDCAT_ALV WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;*--Layout&lt;/P&gt;&lt;P&gt;WA_LAYOUT TYPE SLIS_LAYOUT_ALV,&lt;/P&gt;&lt;P&gt;*--Sort&lt;/P&gt;&lt;P&gt;IT_SORT TYPE SLIS_T_SORTINFO_ALV,&lt;/P&gt;&lt;P&gt;WA_SORT TYPE SLIS_SORTINFO_ALV ,&lt;/P&gt;&lt;P&gt;**-Structure for excluding function codes&lt;/P&gt;&lt;P&gt;WA_EXTAB TYPE SLIS_EXTAB,&lt;/P&gt;&lt;P&gt;**-To hold function codes to be excluded in ALV toolbar&lt;/P&gt;&lt;P&gt;IT_EXTAB TYPE SLIS_T_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*selection screen.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,&lt;/P&gt;&lt;P&gt;S_ERSDA FOR MARA-ERSDA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Radio buttons to select either Display/Delete/Modify&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME&lt;/P&gt;&lt;P&gt;TITLE TEXT-002.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(20) TEXT-003.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_DISP RADIOBUTTON GROUP RAD1 DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(20) TEXT-005.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_UPD RADIOBUTTON GROUP RAD1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(20) TEXT-004.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_DEL RADIOBUTTON GROUP RAD1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN : END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B2 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;PERFORM VALIDATE_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*start of selection&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*clear the internal tables to be used.&lt;/P&gt;&lt;P&gt;CLEAR: IT_MARA,IT_MARA[],&lt;/P&gt;&lt;P&gt;V_FLAG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*get the data&lt;/P&gt;&lt;P&gt;PERFORM GET_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*end of selection&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF IT_MARA[] IS INITIAL.&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH&lt;/P&gt;&lt;P&gt;'No Records found for the given Selection Criteria'(012).&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;*do alv process&lt;/P&gt;&lt;P&gt;V_REPID = SY-REPID.&lt;/P&gt;&lt;P&gt;*--Sort the Output Fields&lt;/P&gt;&lt;P&gt;PERFORM SORT_FIELDS.&lt;/P&gt;&lt;P&gt;*--Build Field catalog for the Output fields&lt;/P&gt;&lt;P&gt;PERFORM BUILD_FIELDCAT.&lt;/P&gt;&lt;P&gt;*--Set the Layout for ALV&lt;/P&gt;&lt;P&gt;PERFORM SET_LAYOUT.&lt;/P&gt;&lt;P&gt;IF P_DISP = C_X.&lt;/P&gt;&lt;P&gt;*--Exclude any Buttons on the Appn tool bar&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;perform change_default_pf_status.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;MOVE C_FC_DELETE TO WA_EXTAB-FCODE. " DELETE button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE C_FC_MODIFY TO WA_EXTAB-FCODE. " MODIFY button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF P_UPD = C_X.&lt;/P&gt;&lt;P&gt;*--Exclude DELETE Button on the appn tool bar&lt;/P&gt;&lt;P&gt;MOVE C_FC_DELETE TO WA_EXTAB-FCODE. " DELETE button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF P_DEL = C_X.&lt;/P&gt;&lt;P&gt;*--Exclude MODIFY button on appn tool bar&lt;/P&gt;&lt;P&gt;MOVE C_FC_MODIFY TO WA_EXTAB-FCODE. " MODIFY button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;*--Exclude SAVE button for all options&lt;/P&gt;&lt;P&gt;MOVE 'SAVE' TO WA_EXTAB-FCODE. " SAVE button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Display ALV output&lt;/P&gt;&lt;P&gt;PERFORM LIST_DISPLAY TABLES IT_MARA&lt;/P&gt;&lt;P&gt;USING C_USER_COMMAND.&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 get_data&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 GET_DATA .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT MATNR&lt;/P&gt;&lt;P&gt;ERSDA&lt;/P&gt;&lt;P&gt;BRGEW&lt;/P&gt;&lt;P&gt;NTGEW&lt;/P&gt;&lt;P&gt;MTART&lt;/P&gt;&lt;P&gt;MBRSH&lt;/P&gt;&lt;P&gt;FROM MARA&lt;/P&gt;&lt;P&gt;INTO TABLE IT_MARA&lt;/P&gt;&lt;P&gt;WHERE MATNR IN S_MATNR&lt;/P&gt;&lt;P&gt;AND ERSDA IN S_ERSDA.&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;*no records selected leave processing&lt;/P&gt;&lt;P&gt;STOP.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT IT_MARA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " get_data&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 sort_fields&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 SORT_FIELDS .&lt;/P&gt;&lt;P&gt;CLEAR WA_SORT.&lt;/P&gt;&lt;P&gt;WA_SORT-FIELDNAME = 'MATNR'.&lt;/P&gt;&lt;P&gt;WA_SORT-SPOS = '1'.&lt;/P&gt;&lt;P&gt;WA_SORT-UP = 'X'.&lt;/P&gt;&lt;P&gt;APPEND WA_SORT TO IT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR WA_SORT.&lt;/P&gt;&lt;P&gt;WA_SORT-FIELDNAME = 'ERSDA'.&lt;/P&gt;&lt;P&gt;WA_SORT-SPOS = '2'.&lt;/P&gt;&lt;P&gt;WA_SORT-UP = 'X'.&lt;/P&gt;&lt;P&gt;APPEND WA_SORT TO IT_SORT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " sort_fields&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 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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 BUILD_FIELDCAT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '1'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'MATNR'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-KEY = 'X'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '15'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'Material number'(022).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '2'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'ERSDA'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-KEY = 'X'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'Created on'(023).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '3'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'BRGEW'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '10'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'GROSS WEIGHT'(024).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '4'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'NTGEW'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '15'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'NET WEIGHT'(025).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '5'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'MTART'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '3'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'Material type'(026).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-COL_POS = '6'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'MBRSH'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-OUTPUTLEN = '25'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-SELTEXT_L = 'Industry sector'(027).&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-FIELDNAME = 'REC_SEL'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-NO_OUT = C_X.&lt;/P&gt;&lt;P&gt;APPEND IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;CLEAR IT_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " build_fieldcat&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 list_display&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;text&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;P_IT_MARA text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;P_C_USER_COMMAND text&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 LIST_DISPLAY TABLES P_IT_MARA&lt;/P&gt;&lt;P&gt;USING P_USER_COMMAND TYPE SLIS_FORMNAME.&lt;/P&gt;&lt;P&gt;&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 = V_REPID&lt;/P&gt;&lt;P&gt;I_CALLBACK_PF_STATUS_SET = C_PF_STATUS&lt;/P&gt;&lt;P&gt;I_CALLBACK_USER_COMMAND = P_USER_COMMAND&lt;/P&gt;&lt;P&gt;IS_LAYOUT = WA_LAYOUT&lt;/P&gt;&lt;P&gt;IT_FIELDCAT = IT_FIELDCAT[]&lt;/P&gt;&lt;P&gt;IT_EXCLUDING = IT_EXTAB[]&lt;/P&gt;&lt;P&gt;IT_SORT = IT_SORT[]&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;T_OUTTAB = P_IT_MARA&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;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " list_display&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 F_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;Set PF_STATUS STANDARD modifying the standard toolbar&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;by excluding some buttons&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;P_IT_EXTAB -- TABLE OF EXCLUDING FUNCTIONS&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 F_SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR : WA_EXTAB,&lt;/P&gt;&lt;P&gt;IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Set the Modified PF status for the ALV.&lt;/P&gt;&lt;P&gt;SET PF-STATUS 'ALV_STATUS_01' EXCLUDING RT_EXTAB.&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;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 f_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;Handle user action on ALV toolbar&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 F_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;P&gt;RS_SELFIELD-REFRESH = C_X.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF R_UCOMM = C_FC_DELETE.&lt;/P&gt;&lt;P&gt;*--User Selected DELETE button.&lt;/P&gt;&lt;P&gt;PERFORM DELETE_SELECTED_RECORDS.&lt;/P&gt;&lt;P&gt;ELSEIF R_UCOMM = C_FC_MODIFY.&lt;/P&gt;&lt;P&gt;*--If user selects MODIFY button.&lt;/P&gt;&lt;P&gt;PERFORM CHANGE_RECORDS.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. "F_USER_COMMAND&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 POP_UP_CONFIRMATION&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;text&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;lt;--P_ANSWER text&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 POP_UP_CONFIRMATION&lt;/P&gt;&lt;P&gt;CHANGING P_ANSWER TYPE C.&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;L_TITLE(14) TYPE C, " Title of pop-up&lt;/P&gt;&lt;P&gt;L_TXT_QUESTION(52) TYPE C, " Text displayed in pop-up&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;L_DISP_CANCEL TYPE C, " Display 'Cancel' button?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;L_BTN1 TYPE ICON-NAME, " Icon on button 1&lt;/P&gt;&lt;P&gt;L_BTN2 TYPE ICON-NAME. " Icon on button 2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;L_TITLE = 'Delete'(017). " delete&lt;/P&gt;&lt;P&gt;L_TXT_QUESTION = 'Are you sure to delete?'(018).&lt;/P&gt;&lt;P&gt;L_BTN1 = C_ICON_DELETE.&lt;/P&gt;&lt;P&gt;L_BTN2 = C_ICON_CANCEL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**-Display pop-up asking user for confirmation&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'POPUP_TO_CONFIRM'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;TITLEBAR = L_TITLE&lt;/P&gt;&lt;P&gt;TEXT_QUESTION = L_TXT_QUESTION&lt;/P&gt;&lt;P&gt;TEXT_BUTTON_1 = 'Yes'&lt;/P&gt;&lt;P&gt;ICON_BUTTON_1 = L_BTN1&lt;/P&gt;&lt;P&gt;TEXT_BUTTON_2 = 'No'&lt;/P&gt;&lt;P&gt;ICON_BUTTON_2 = L_BTN2&lt;/P&gt;&lt;P&gt;DEFAULT_BUTTON = '2'&lt;/P&gt;&lt;P&gt;DISPLAY_CANCEL_BUTTON = 'X'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;ANSWER = P_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;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;MESSAGE E000 WITH 'Error executing function module:'(019)&lt;/P&gt;&lt;P&gt;'POPUP_TO_CONFIRM'.&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;ENDFORM. "pop_up_confirmation&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_layout&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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_LAYOUT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF P_DEL = C_X OR P_UPD = C_X.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Allow Input only if user choose 'UPDATE'/ 'DELETE' radio buttons&lt;/P&gt;&lt;P&gt;WA_LAYOUT-BOX_FIELDNAME = 'REC_SEL'.&lt;/P&gt;&lt;P&gt;WA_LAYOUT-BOX_TABNAME = 'IT_MARA'.&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;*--Display Header based on the user selection&lt;/P&gt;&lt;P&gt;IF P_DISP = C_X.&lt;/P&gt;&lt;P&gt;WA_LAYOUT-WINDOW_TITLEBAR =&lt;/P&gt;&lt;P&gt;'Display '(036).&lt;/P&gt;&lt;P&gt;ELSEIF P_DEL = C_X.&lt;/P&gt;&lt;P&gt;WA_LAYOUT-WINDOW_TITLEBAR =&lt;/P&gt;&lt;P&gt;'Delete '(037).&lt;/P&gt;&lt;P&gt;ELSEIF P_UPD = C_X.&lt;/P&gt;&lt;P&gt;WA_LAYOUT-WINDOW_TITLEBAR =&lt;/P&gt;&lt;P&gt;'Change '(038).&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " set_layout&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 change_default_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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 CHANGE_DEFAULT_PF_STATUS .&lt;/P&gt;&lt;P&gt;MOVE C_FC_DELETE TO WA_EXTAB-FCODE. " DELETE button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE C_FC_MODIFY TO WA_EXTAB-FCODE. " MODIFY button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " change_default_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 f_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;Handle user action on ALV toolbar&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;&lt;/P&gt;&lt;P&gt;FORM F_USER_COMMAND_MODIFY USING R_UCOMM LIKE SY-UCOMM "#EC *&lt;/P&gt;&lt;P&gt;RS_SELFIELD TYPE SLIS_SELFIELD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : L_ANSWER TYPE C. "#EC *&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF R_UCOMM = C_FC_SAVE.&lt;/P&gt;&lt;P&gt;*user selected save button&lt;/P&gt;&lt;P&gt;READ TABLE IT_MODIFY WITH KEY REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;*check if user selected atleast one line.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH 'No record(s) Selected to Modify'(016).&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;*--Check the entered values are valid or not.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF NOT ( it_modify-status = 'A' OR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;it_modify-status = 'C' OR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;it_modify-status = 'E' ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*--User Entered invalid value for STATUS field,so Display Error Msg&lt;/P&gt;&lt;P&gt;CLEAR R_UCOMM.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE e000 WITH 'Invalid value '''(031)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'' for Status in the Record # '(032)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sy-tabix.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;CLEAR: IT_TEMP,&lt;/P&gt;&lt;P&gt;IT_TEMP[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;MOVE-CORRESPONDING IT_MODIFY TO IT_TEMP.&lt;/P&gt;&lt;P&gt;APPEND IT_TEMP.&lt;/P&gt;&lt;P&gt;CLEAR IT_TEMP.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--start new code&lt;/P&gt;&lt;P&gt;DATA : IT_TEMP2 LIKE STANDARD TABLE OF MARA WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;SELECT * FROM MARA&lt;/P&gt;&lt;P&gt;INTO TABLE IT_TEMP2&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN IT_TEMP&lt;/P&gt;&lt;P&gt;WHERE MATNR = IT_TEMP-MATNR.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;LOOP AT IT_MODIFY WHERE REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;READ TABLE IT_TEMP2 WITH KEY MATNR = IT_MODIFY-MATNR.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;IT_TEMP2-NTGEW = IT_MODIFY-NTGEW.&lt;/P&gt;&lt;P&gt;IT_TEMP2-BRGEW = IT_MODIFY-BRGEW.&lt;/P&gt;&lt;P&gt;MODIFY IT_TEMP2 INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;*modify mara table with the changed values&lt;/P&gt;&lt;P&gt;MODIFY MARA FROM TABLE IT_TEMP2 .&lt;/P&gt;&lt;P&gt;*--end new code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;COMMIT WORK AND WAIT.&lt;/P&gt;&lt;P&gt;*--Display message with Success in Updating database&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH SY-DBCNT&lt;/P&gt;&lt;P&gt;' Record(s) has been Updated'(020).&lt;/P&gt;&lt;P&gt;CLEAR :&lt;/P&gt;&lt;P&gt;IT_MARA,&lt;/P&gt;&lt;P&gt;IT_MARA[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*get-data again from database.&lt;/P&gt;&lt;P&gt;PERFORM GET_DATA.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;RS_SELFIELD-REFRESH = C_X.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;*--Error occurred&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH 'Error occured in Modifying the database'(021).&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;ENDFORM. "f_user_command_modify&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 validate_screen&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 VALIDATE_SCREEN .&lt;/P&gt;&lt;P&gt;DATA : LV_MATNR LIKE MARA-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--validate product&lt;/P&gt;&lt;P&gt;IF NOT S_MATNR[] IS INITIAL.&lt;/P&gt;&lt;P&gt;SELECT MATNR&lt;/P&gt;&lt;P&gt;INTO MARA-MATNR&lt;/P&gt;&lt;P&gt;FROM MARA&lt;/P&gt;&lt;P&gt;WHERE MATNR IN S_MATNR.&lt;/P&gt;&lt;P&gt;ENDSELECT.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;*--Error&lt;/P&gt;&lt;P&gt;MESSAGE E000 WITH 'Invalid Material'(034).&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;ENDFORM. " validate_screen&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 delete_records&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 DELETE_RECORDS .&lt;/P&gt;&lt;P&gt;LOOP AT IT_MARA.&lt;/P&gt;&lt;P&gt;MOVE-CORRESPONDING IT_MARA TO IT_TEMP.&lt;/P&gt;&lt;P&gt;APPEND IT_TEMP.&lt;/P&gt;&lt;P&gt;CLEAR IT_TEMP.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DELETE MARA FROM TABLE IT_TEMP.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;*--Successfully selected records Deleted.&lt;/P&gt;&lt;P&gt;COMMIT WORK AND WAIT.&lt;/P&gt;&lt;P&gt;*--Display Success Message to the user&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH SY-DBCNT&lt;/P&gt;&lt;P&gt;' Record(s) deleted Successfully'(010).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;*--Error occured in deletion&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH 'Error occured in Deleting the Record(s)'(011).&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;CLEAR: IT_MARA,&lt;/P&gt;&lt;P&gt;IT_MARA[],&lt;/P&gt;&lt;P&gt;IT_TEMP,&lt;/P&gt;&lt;P&gt;IT_TEMP[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;V_FLAG = C_X.&lt;/P&gt;&lt;P&gt;STOP.&lt;/P&gt;&lt;P&gt;ENDFORM. " delete_records&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 delete_selected_records&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 DELETE_SELECTED_RECORDS .&lt;/P&gt;&lt;P&gt;DATA : L_ANSWER(1) TYPE C.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE IT_MARA WITH KEY REC_SEL = C_X.&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;MESSAGE I000 WITH 'No record(s) Selected to Delete'(013).&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;*--Ask for delete confirmation&lt;/P&gt;&lt;P&gt;PERFORM POP_UP_CONFIRMATION&lt;/P&gt;&lt;P&gt;CHANGING L_ANSWER.&lt;/P&gt;&lt;P&gt;IF L_ANSWER = '1'. " 'Yes'&lt;/P&gt;&lt;P&gt;CLEAR: IT_TEMP,&lt;/P&gt;&lt;P&gt;IT_TEMP[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_MARA WHERE REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;MOVE-CORRESPONDING IT_MARA TO IT_TEMP.&lt;/P&gt;&lt;P&gt;APPEND IT_TEMP.&lt;/P&gt;&lt;P&gt;CLEAR IT_TEMP.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;DELETE MARA FROM TABLE IT_TEMP.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;*--Successfully selected records Deleted.&lt;/P&gt;&lt;P&gt;COMMIT WORK AND WAIT.&lt;/P&gt;&lt;P&gt;*--Display completed work information to the user&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH SY-DBCNT&lt;/P&gt;&lt;P&gt;' Record(s) deleted Successfully'(014).&lt;/P&gt;&lt;P&gt;*--Clear the Internal tables&lt;/P&gt;&lt;P&gt;CLEAR: IT_MARA,&lt;/P&gt;&lt;P&gt;IT_MARA[].&lt;/P&gt;&lt;P&gt;*--Reselects entries from Database again &amp;amp; display in ALV&lt;/P&gt;&lt;P&gt;PERFORM GET_DATA.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;*--Error occured&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH&lt;/P&gt;&lt;P&gt;'Error occured in Deleting the Record(s)'(015).&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " delete_selected_records&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 change_records&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 CHANGE_RECORDS .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE IT_MARA WITH KEY REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;*--check user selected at least 1 record to MODIFY or not&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;MESSAGE I000 WITH 'No record(s) Selected to Modify'(016).&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;CLEAR : IT_MODIFY,&lt;/P&gt;&lt;P&gt;IT_MODIFY[].&lt;/P&gt;&lt;P&gt;LOOP AT IT_MARA WHERE REC_SEL = 'X'.&lt;/P&gt;&lt;P&gt;IT_MODIFY = IT_MARA.&lt;/P&gt;&lt;P&gt;APPEND IT_MODIFY.&lt;/P&gt;&lt;P&gt;CLEAR IT_MODIFY.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--Change PF status for this new ALV list.&lt;/P&gt;&lt;P&gt;PERFORM CHANGE_PF_STATUS_AGAIN.&lt;/P&gt;&lt;P&gt;*--Change Field Catalog to make INPUT enabled.&lt;/P&gt;&lt;P&gt;READ TABLE IT_FIELDCAT WITH KEY FIELDNAME = 'NTGEW'.&lt;/P&gt;&lt;P&gt;IT_FIELDCAT-INPUT = C_X.&lt;/P&gt;&lt;P&gt;MODIFY IT_FIELDCAT INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;*--Call ALV LIST DISPLAY with this new values.&lt;/P&gt;&lt;P&gt;PERFORM LIST_DISPLAY TABLES IT_MODIFY&lt;/P&gt;&lt;P&gt;USING C_USER_COMMAND_MODIFY.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " change_records&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 change_pf_status_again&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;text&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; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&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 CHANGE_PF_STATUS_AGAIN .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE C_FC_DELETE TO WA_EXTAB-FCODE. " DELETE button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE C_FC_MODIFY TO WA_EXTAB-FCODE. " MODIFY button on ALV&lt;/P&gt;&lt;P&gt;APPEND WA_EXTAB TO IT_EXTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM. " change_pf_status_again&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 05:08:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409308#M537282</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-28T05:08:55Z</dc:date>
    </item>
    <item>
      <title>Re: ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409309#M537283</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks friends for sending me the answers. I need one more to ask. Can any one send me the material for ABAP'S  OOPs concept. I need to learn from scratch. Sincei know nothing about ABAP OOps concept.Please send me satishrajuv@gmail.com.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Points will be rewarded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Satish raju&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 06:41:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409309#M537283</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-28T06:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409310#M537284</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;for alv ..check alv robot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b09ac4d5-e3ad-2910-6a81-96d1b861928c" target="test_blank"&gt;https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b09ac4d5-e3ad-2910-6a81-96d1b861928c&lt;/A&gt;&lt;/P&gt;&lt;P&gt;There is a link wherein u can go, fill in the detials and get the ready ABAP code.&lt;/P&gt;&lt;P&gt;Just copy paste it in SE38 and the program is ready 4 u.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The link is &lt;A href="https://community.sap.com/www.ALVROBOT.com.ar" target="test_blank"&gt;www.ALVROBOT.com.ar&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for ooabap i will send u the gud doc ....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 06:52:13 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409310#M537284</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-28T06:52:13Z</dc:date>
    </item>
    <item>
      <title>Re: ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409311#M537285</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've answered this type of post before&lt;/P&gt;&lt;P&gt;First FORGET ALL THE OLD FUNCTION MODULES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's an OO program which does EXACTLY what you want and can be used as a model.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has dynamic table, dynamic Fcat, access to protected methods of a class etc etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use this as a template&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It has pretty well every option you need for a grid including colouring cells and adding / changing / displaying data etc etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROGRAM zdynfieldcat.&lt;/P&gt;&lt;P&gt;class zcltest definition  deferred.  "For field symbol reference.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The ultimate ALV program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;this program demos the following&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1) Build Dynamic ITAB with fields NOT defined in DDIC&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2) Build Dynamic FieldCat. Table structure is obtained via&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   the new RTTI functionality&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3) Add the CELL colour table as a deep structure to our dynamic table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   so we can colour individual cells.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4) Inherit a class so protected attributes of class cl_gui_alv_grid&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   can be accessed&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;5) Add events so we can can program functionality when the user presses the ENTER key,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   or selects an action from the toolbar.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;6)  Display one line of a grid from our dynamic table with some cells coloured.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;6) Set the Grid editable.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;7) if user enters data then colour cells of entered data.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&lt;span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;😎&lt;/span&gt; show contents of new table after all data has been entered.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To use program copy the source and&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create a blank screen 100 with a custom container called CCONTAINER1.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;with the screen logic shown below&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;As we are using EVENTS we actually don't need a PAI module so it&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;doesn't contain any code.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*PROCESS BEFORE OUTPUT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MODULE STATUS_0100.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*PROCESS AFTER INPUT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MODULE USER_COMMAND_0100&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;James Hawthorne&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Define field symbols as these can't be defined in classes&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;g2&amp;gt; type ref to zcltest,&lt;/P&gt;&lt;P&gt;               &amp;lt;g1&amp;gt; type ref to cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;               &amp;lt;data_changed&amp;gt; type ref to cl_alv_changed_data_protocol,&lt;/P&gt;&lt;P&gt;               &amp;lt;actual_tab&amp;gt; type standard table,&lt;/P&gt;&lt;P&gt;               &amp;lt;outtab&amp;gt; type table,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs1&amp;gt; type ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;FS2&amp;gt; TYPE TABLE,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs3&amp;gt; type table,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs4&amp;gt; type table,&lt;/P&gt;&lt;P&gt;               &amp;lt;fs5&amp;gt; type  table,&lt;/P&gt;&lt;P&gt;               &amp;lt;wa_dyn_table&amp;gt;   TYPE ANY,&lt;/P&gt;&lt;P&gt;               &amp;lt;w_field1&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;w_field2&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;w_field3&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;w_field4&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;w_field5&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;t_colours&amp;gt; type any,&lt;/P&gt;&lt;P&gt;               &amp;lt;t_clrs&amp;gt; type line of lvc_t_scol,&lt;/P&gt;&lt;P&gt;               &amp;lt;t_cellcolors&amp;gt;   TYPE lvc_t_scol,&lt;/P&gt;&lt;P&gt;               &amp;lt;t_cellcolors1&amp;gt; type  lvc_t_scol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class zcltest definition inheriting from cl_gui_alv_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  public section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types:  g4 type ref to cl_gui_custom_container.&lt;/P&gt;&lt;P&gt;    types:  g3  type ref to cl_alv_changed_data_protocol.&lt;/P&gt;&lt;P&gt;    data:   i_parent type g4,&lt;/P&gt;&lt;P&gt;            lr_rtti_struc TYPE REF TO cl_abap_structdescr, "RTTI&lt;/P&gt;&lt;P&gt;    zog like line of lr_rtti_struc-&amp;gt;components. "RTTI&lt;/P&gt;&lt;P&gt;    types: struc like zog.&lt;/P&gt;&lt;P&gt;    types: struc1 type table of struc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods:&lt;/P&gt;&lt;P&gt;       constructor&lt;/P&gt;&lt;P&gt;           importing i_parent type g4,&lt;/P&gt;&lt;P&gt;         disp_tab&lt;/P&gt;&lt;P&gt;           importing  p_er_data_changed type g3,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      create_dynamic_fcat&lt;/P&gt;&lt;P&gt;           importing zogt type struc1&lt;/P&gt;&lt;P&gt;           exporting it_fldcat type lvc_t_fcat.&lt;/P&gt;&lt;P&gt;Protected section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;private section.&lt;/P&gt;&lt;P&gt;data: stab type ref to data,&lt;/P&gt;&lt;P&gt;        wa_it_fldcat type lvc_s_fcat,&lt;/P&gt;&lt;P&gt;        c_index type sy-index,&lt;/P&gt;&lt;P&gt;        lt_good_cells type lvc_t_modi,&lt;/P&gt;&lt;P&gt;         ls_good type lvc_s_modi,&lt;/P&gt;&lt;P&gt;         ls_good_cells type lvc_s_modi,&lt;/P&gt;&lt;P&gt;         et_good_cells type LVC_T_MODI,&lt;/P&gt;&lt;P&gt;         e_row    type i,&lt;/P&gt;&lt;P&gt;         e_value type c,&lt;/P&gt;&lt;P&gt;         e_col    type i,&lt;/P&gt;&lt;P&gt;         es_row_id  type lvc_s_row,&lt;/P&gt;&lt;P&gt;         es_col_id  type lvc_s_col,&lt;/P&gt;&lt;P&gt;         es_row_no   type LVC_S_ROID,&lt;/P&gt;&lt;P&gt;         wa_cellcolors    TYPE LINE OF lvc_t_scol,&lt;/P&gt;&lt;P&gt;         wa_modified_cells type line of LVC_T_MODI,&lt;/P&gt;&lt;P&gt;         es_layout type LVC_S_LAYO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class zcltest implementation.&lt;/P&gt;&lt;P&gt;  METHOD constructor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD super-&amp;gt;constructor&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_appl_events = 'X'&lt;/P&gt;&lt;P&gt;        i_parent      = i_parent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endmethod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  method disp_tab.&lt;/P&gt;&lt;P&gt;  break-point 2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;mt_outtab is the data table held as a protected attribute&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;in class cl_gui_alv_grid.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    assign me-&amp;gt;mt_outtab-&amp;gt;* TO &amp;lt;outtab&amp;gt;. "Original data&lt;/P&gt;&lt;P&gt;    assign p_er_data_changed-&amp;gt;mp_mod_rows TO &amp;lt;FS1&amp;gt;.&lt;/P&gt;&lt;P&gt;    stab = p_er_data_changed-&amp;gt;mp_mod_rows.&lt;/P&gt;&lt;P&gt;    assign p_er_data_changed-&amp;gt;mt_inserted_rows to &amp;lt;fs3&amp;gt;.&lt;/P&gt;&lt;P&gt;    assign p_er_data_changed-&amp;gt;mt_deleted_rows to &amp;lt;fs4&amp;gt;.&lt;/P&gt;&lt;P&gt;    assign p_er_data_changed-&amp;gt;mt_mod_cells to &amp;lt;fs5&amp;gt;.&lt;/P&gt;&lt;P&gt;    assign stab-&amp;gt;* TO &amp;lt;fs2&amp;gt;.  "Updated Rows&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;some functions --chose what you want&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;This method gets the last (or current cell)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method me-&amp;gt;get_current_cell&lt;/P&gt;&lt;P&gt;      importing  e_row  = e_row&lt;/P&gt;&lt;P&gt;                 e_value = e_value&lt;/P&gt;&lt;P&gt;                 e_col   = e_col&lt;/P&gt;&lt;P&gt;                 es_row_id = es_row_id&lt;/P&gt;&lt;P&gt;                 es_col_id = es_col_id&lt;/P&gt;&lt;P&gt;                 es_row_no  = es_row_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For an example let's change the colour of any data entered including&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;inserted rows.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Proceed as follows&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;read table &amp;lt;fs5&amp;gt; which gives us the row number and field name of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the modified cell(s) including inserted rows&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For deleted rows we don't have to do anything&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Update the cell's colour characteristic table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;remember we added a colour table to the dynamic data table we built&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;note that it's a DEEP structure.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;On REFRESH the alv will look at the updated colour table for the cells.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;we don't actually have to modify the data table but just the colour&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;recapping&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1) Create your Field catalog WITHOUT the colour table for the ALV grid display&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2) Add the colour table to a 2nd field catalog which you use to build the actual data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   dynamic table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3) add the name of the colour table to the layout&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            (struct_grid_lset-ctab_fname = 'T_CELLCOLORS')&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Refresh Grid and new cell colours will work&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;We "sort of cheat" here&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;we can add / modify the cell colour table here&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the actual data content will be managed by alv in data_changed_finished.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ALV will show updated data which is what we want&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BUT THE UPDATED CELL COLOUR table wil also be RE-READ  by&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the layout manager on refresh display.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;giving us the new cell colours.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The internal alv data table doesn't contain our deep structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&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;now let's change the colour of the selected cells.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;  ASSIGN COMPONENT 'T_CELLCOLORS'&lt;/P&gt;&lt;P&gt;      OF STRUCTURE &amp;lt;wa_dyn_table&amp;gt; TO &amp;lt;t_cellcolors1&amp;gt;.&lt;/P&gt;&lt;P&gt;   loop at &amp;lt;fs5&amp;gt; into wa_modified_cells.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read a line from our data table (original) with the index of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the row the modified cell is in&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;   read  table &amp;lt;dyn_table&amp;gt; into  &amp;lt;wa_dyn_table&amp;gt; index wa_modified_cells-row_id.&lt;/P&gt;&lt;P&gt;    case sy-subrc.&lt;/P&gt;&lt;P&gt;      when 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;an existing table line (data)  has been modified&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;so we can just update the colour table for that cell&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       read table &amp;lt;t_cellcolors1&amp;gt; into wa_cellcolors&lt;/P&gt;&lt;P&gt;         with key fname = wa_modified_cells-fieldname.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If there is no current colour entry for the cell create one.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if not  wa_modified_cells-value is initial.&lt;/P&gt;&lt;P&gt;      wa_cellcolors-fname = wa_modified_cells-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_cellcolors-color-col = '5'.&lt;/P&gt;&lt;P&gt;    MODIFY  &amp;lt;t_cellcolors1&amp;gt; from wa_cellcolors index sy-tabix.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;    if not  wa_modified_cells-value is initial.&lt;/P&gt;&lt;P&gt;     wa_cellcolors-fname = wa_modified_cells-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_cellcolors-color-col = '5'.&lt;/P&gt;&lt;P&gt;     append  wa_cellcolors  to &amp;lt;t_cellcolors1&amp;gt;.&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;   when others.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  append a row from &amp;lt;fs2&amp;gt; into our data table.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;fs2&amp;gt; contains the changed rows in the same structure as our original table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   loop at &amp;lt;fs2&amp;gt; into &amp;lt;wa_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;   append  &amp;lt;wa_dyn_table&amp;gt; to &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;now update the  colour table (or create it) for the relevant cell(s)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of our added row(s).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   read  table &amp;lt;dyn_table&amp;gt; into  &amp;lt;wa_dyn_table&amp;gt; index wa_modified_cells-row_id.&lt;/P&gt;&lt;P&gt;   clear wa_cellcolors.&lt;/P&gt;&lt;P&gt;    if not  wa_modified_cells-value is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   wa_cellcolors-fname = wa_modified_cells-fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   wa_cellcolors-color-col = 5.&lt;/P&gt;&lt;P&gt;   append wa_cellcolors to &amp;lt;t_cellcolors1&amp;gt;.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;   endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MODIFY &amp;lt;dyn_table&amp;gt; FROM &amp;lt;wa_dyn_table&amp;gt; index wa_modified_cells-row_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endmethod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  method create_dynamic_fcat.&lt;/P&gt;&lt;P&gt;    loop at zogt into zog.&lt;/P&gt;&lt;P&gt;      c_index = c_index + 1.&lt;/P&gt;&lt;P&gt;      clear wa_it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-fieldname = zog-name .&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-datatype = zog-type_kind.&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-inttype = zog-type_kind.&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-intlen = zog-length.&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-decimals = zog-decimals.&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-coltext = zog-name.&lt;/P&gt;&lt;P&gt;      wa_it_fldcat-lowercase = 'X'.&lt;/P&gt;&lt;P&gt;      append wa_it_fldcat to it_fldcat .&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "create_dynamic_fcat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endclass.                    "zcltest IMPLEMENTATION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class lcl_grid_event_receiver definition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  public section.&lt;/P&gt;&lt;P&gt;data: data_c type ref to cl_alv_changed_data_protocol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;methods:&lt;/P&gt;&lt;P&gt;    handle_data_changed&lt;/P&gt;&lt;P&gt;         for event data_changed of zcltest&lt;/P&gt;&lt;P&gt;         importing  er_data_changed,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    handle_data_changed_finished&lt;/P&gt;&lt;P&gt;         for event data_changed_finished of zcltest&lt;/P&gt;&lt;P&gt;         importing E_MODIFIED&lt;/P&gt;&lt;P&gt;                   ET_GOOD_CELLS,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    toolbar&lt;/P&gt;&lt;P&gt;         for event toolbar of zcltest&lt;/P&gt;&lt;P&gt;         importing e_object&lt;/P&gt;&lt;P&gt;         e_interactive,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    user_command&lt;/P&gt;&lt;P&gt;         for event user_command of zcltest&lt;/P&gt;&lt;P&gt;         importing e_ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endclass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;class lcl_grid_event_receiver implementation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;g2&amp;gt; is an instance of the zcltest class&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;this means we can now use methods in that class&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when our event handle-data_changed occurs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*we want to use those methods as that gives us all the data functionality&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;of the grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  method handle_data_changed.&lt;/P&gt;&lt;P&gt;   call method &amp;lt;g2&amp;gt;-&amp;gt;disp_tab&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        p_er_data_changed = er_data_changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endmethod.                    "handle_data_changed&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  method handle_data_changed_finished.&lt;/P&gt;&lt;P&gt; break-point 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;at this point our data dynamic table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;dyn_table&amp;gt; now contains the actual updated values from&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the grid including the cell color info create in the on data changed&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event method call AND IN THE CORRECT ORDER.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;use this method to update say SAP data bases or other&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;data from the GRID entered data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if rows have been deleted then our new &amp;lt;dyn_table&amp;gt; will not show those either&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data entry validation can be done here as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enter your own code here.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   .&lt;/P&gt;&lt;P&gt;   endmethod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   method toolbar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data : ls_toolbar type stb_button.&lt;/P&gt;&lt;P&gt;    clear ls_toolbar.&lt;/P&gt;&lt;P&gt;    move 0 to ls_toolbar-butn_type.&lt;/P&gt;&lt;P&gt;    move 'EDIT' to ls_toolbar-function.&lt;/P&gt;&lt;P&gt;    move space to ls_toolbar-disabled.&lt;/P&gt;&lt;P&gt;    move 'Edit' to ls_toolbar-text.&lt;/P&gt;&lt;P&gt;    move icon_change_text to ls_toolbar-icon.&lt;/P&gt;&lt;P&gt;    move 'Click2Edit' to ls_toolbar-quickinfo.&lt;/P&gt;&lt;P&gt;    append ls_toolbar to e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear ls_toolbar.&lt;/P&gt;&lt;P&gt;    move 0 to ls_toolbar-butn_type.&lt;/P&gt;&lt;P&gt;    move 'UPDA' to ls_toolbar-function.&lt;/P&gt;&lt;P&gt;    move space to ls_toolbar-disabled.&lt;/P&gt;&lt;P&gt;    move 'Update' to ls_toolbar-text.&lt;/P&gt;&lt;P&gt;    move icon_system_save to ls_toolbar-icon.&lt;/P&gt;&lt;P&gt;    move 'Click2Update' to ls_toolbar-quickinfo.&lt;/P&gt;&lt;P&gt;    append ls_toolbar to e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear ls_toolbar.&lt;/P&gt;&lt;P&gt;    move 0 to ls_toolbar-butn_type.&lt;/P&gt;&lt;P&gt;    move 'EXIT' to ls_toolbar-function.&lt;/P&gt;&lt;P&gt;    move space to ls_toolbar-disabled.&lt;/P&gt;&lt;P&gt;    move 'Exit' to ls_toolbar-text.&lt;/P&gt;&lt;P&gt;    move icon_system_end to ls_toolbar-icon.&lt;/P&gt;&lt;P&gt;    move 'Click2Exit' to ls_toolbar-quickinfo.&lt;/P&gt;&lt;P&gt;    append ls_toolbar to e_object-&amp;gt;mt_toolbar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endmethod.                    "toolbar&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  method user_command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    case e_ucomm .&lt;/P&gt;&lt;P&gt;      when 'EDIT'. "From Tool bar&lt;/P&gt;&lt;P&gt;        perform set_input.&lt;/P&gt;&lt;P&gt;        perform refresh_disp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      when 'UPDA'. "From Tool bar&lt;/P&gt;&lt;P&gt;        perform refresh_disp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        when 'EXIT'. "From Tool bar&lt;/P&gt;&lt;P&gt;        leave program.&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;  endmethod.                    "user_command&lt;/P&gt;&lt;P&gt;endclass.                    "lcl_grid_event_receiver IMPLEMENTATION&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;program data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;include &amp;lt;icon&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;define any old internal structure NOT in DDIC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of s_elements,&lt;/P&gt;&lt;P&gt;anyfield1(20) type c,&lt;/P&gt;&lt;P&gt;anyfield2(20) type c,&lt;/P&gt;&lt;P&gt;anyfield3(20) type c,&lt;/P&gt;&lt;P&gt;anyfield4(20) type c,&lt;/P&gt;&lt;P&gt;anyfield5(11) type n,&lt;/P&gt;&lt;P&gt;end of s_elements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: wa_element type s_elements,&lt;/P&gt;&lt;P&gt;wa_cellcolors    TYPE LINE OF lvc_t_scol,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;wa_data type s_elements,&lt;/P&gt;&lt;P&gt; wa_dyn_table      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;Note new RTTI functionality allows field detail retrieval&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;at runtime for dynamic tables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data:&lt;/P&gt;&lt;P&gt;        grid1 type ref to zcltest,&lt;/P&gt;&lt;P&gt;        grid_handler type ref to lcl_grid_event_receiver,&lt;/P&gt;&lt;P&gt;        c_dec2 type s_elements-anyfield5,&lt;/P&gt;&lt;P&gt;        wa_it_fldcat type lvc_s_fcat,&lt;/P&gt;&lt;P&gt;        it_fldcat type lvc_t_fcat,&lt;/P&gt;&lt;P&gt;        it_fldcat1 type lvc_t_fcat,&lt;/P&gt;&lt;P&gt;        lr_rtti_struc TYPE REF TO cl_abap_structdescr, "RTTI&lt;/P&gt;&lt;P&gt;        lt_comp TYPE cl_abap_structdescr=&amp;gt;component_table,"RTTI&lt;/P&gt;&lt;P&gt;        ls_comp LIKE LINE OF lt_comp, "RTTI&lt;/P&gt;&lt;P&gt;        zog like line of lr_rtti_struc-&amp;gt;components,  "RTTI&lt;/P&gt;&lt;P&gt;        struct_grid_lset type lvc_s_layo,&lt;/P&gt;&lt;P&gt;        l_valid type c,&lt;/P&gt;&lt;P&gt;        new_table type ref to data.&lt;/P&gt;&lt;P&gt;        types: struc like zog,&lt;/P&gt;&lt;P&gt;        col_tab type lvc_t_scol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; data:  zogt type table of struc,&lt;/P&gt;&lt;P&gt;        grid_container1 type ref to cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;        g_event_receiver type ref to lcl_grid_event_receiver,&lt;/P&gt;&lt;P&gt;        ok_code like sy-ucomm,&lt;/P&gt;&lt;P&gt;        t_colours type table of col_tab,&lt;/P&gt;&lt;P&gt;        i4 type int4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;  call screen 100.&lt;/P&gt;&lt;P&gt;module status_0100 output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if grid_container1 is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    create object grid_container1&lt;/P&gt;&lt;P&gt;    exporting&lt;/P&gt;&lt;P&gt;    container_name = 'CCONTAINER1'.&lt;/P&gt;&lt;P&gt;    assign grid_container1 to &amp;lt;g1&amp;gt;.&lt;/P&gt;&lt;P&gt;    create object grid1&lt;/P&gt;&lt;P&gt;     exporting i_parent = grid_container1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;we need reference to this instance so we can use&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Methods etc of zcltest class and alv (superclass)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;in our event receiver class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     assign grid1 to &amp;lt;g2&amp;gt;.&lt;/P&gt;&lt;P&gt;    create object grid_handler.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set handler for events&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    set handler:&lt;/P&gt;&lt;P&gt;    grid_handler-&amp;gt;user_command for grid1,&lt;/P&gt;&lt;P&gt;    grid_handler-&amp;gt;toolbar for grid1,&lt;/P&gt;&lt;P&gt;    grid_handler-&amp;gt;handle_data_changed_finished for grid1.&lt;/P&gt;&lt;P&gt;    perform register_enter_event.   "For ENTER key press&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;Get the Internal table structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    lr_rtti_struc ?= cl_abap_structdescr=&amp;gt;describe_by_data( wa_data ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build field catalog just use basic data here&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;colour specific columns as well&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    zogt[] = lr_rtti_struc-&amp;gt;components.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      call method grid1-&amp;gt;create_dynamic_fcat&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        zogt      = zogt&lt;/P&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;P&gt;        it_fldcat = it_fldcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save field cat without cell info deep structure  for Grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        it_fldcat1[] = it_fldcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;now add deep structure for cell colour to field catalog&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for dynamic table creation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  assign t_colours to &amp;lt;t_colours&amp;gt;.&lt;/P&gt;&lt;P&gt;  wa_it_fldcat-fieldname = 'T_CELLCOLORS'.&lt;/P&gt;&lt;P&gt;  wa_it_fldcat-ref_field = 'COLTAB'.&lt;/P&gt;&lt;P&gt;  wa_it_fldcat-ref_table =  'CALENDAR_TYPE'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  use this table as it has a   DDIC built in ref structure for cell colour info&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND wa_it_fldcat TO it_fldcat1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Create dynamic internal table and assign to field symbol.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use dynamic field catalog just built.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call method cl_alv_table_create=&amp;gt;create_dynamic_table&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_fieldcatalog = it_fldcat1&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      ep_table        = new_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform populate_dynamic_itab.&lt;/P&gt;&lt;P&gt;    perform init_grid.&lt;/P&gt;&lt;P&gt;    i4 = 0.&lt;/P&gt;&lt;P&gt;    call method grid1-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = i4.&lt;/P&gt;&lt;P&gt;         endif.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;perform  refresh_disp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endmodule.                    "status_0100 OUTPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;module user_command_0100 input.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*PAI not needed in OO ALV anymore as User Commands are handled as events&lt;/P&gt;&lt;P&gt;*in method user_command.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*we can also get control if the Data entered and the ENTER is pressed by&lt;/P&gt;&lt;P&gt;*raising an event.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Control then returns to method handle_data_changed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endmodule.                    "user_command_0100 INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form populate_dynamic_itab.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;load up a line of the dynamic table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  c_dec2 = c_dec2 + 11.&lt;/P&gt;&lt;P&gt;    assign new_table-&amp;gt;* to &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; create data wa_dyn_table like line of &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt; assign wa_dyn_table-&amp;gt;* to  &amp;lt;wa_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  assign component 'ANYFIELD1' of structure &amp;lt;wa_dyn_table&amp;gt; to &amp;lt;w_field1&amp;gt;&lt;/P&gt;&lt;P&gt;  .&lt;/P&gt;&lt;P&gt;   &amp;lt;w_field1&amp;gt; = 'Tabbies'.&lt;/P&gt;&lt;P&gt;   assign component 'ANYFIELD2' of structure &amp;lt;wa_dyn_table&amp;gt; to&lt;/P&gt;&lt;P&gt;   &amp;lt;w_field2&amp;gt;.&lt;/P&gt;&lt;P&gt;  &amp;lt;w_field2&amp;gt; = 'Ger Shepards'.&lt;/P&gt;&lt;P&gt; assign component 'ANYFIELD3' of structure &amp;lt;wa_dyn_table&amp;gt; to &amp;lt;w_field3&amp;gt;.&lt;/P&gt;&lt;P&gt;  &amp;lt;w_field3&amp;gt; = 'White Mice'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;assign component 'ANYFIELD4' of structure &amp;lt;wa_dyn_table&amp;gt; to &amp;lt;w_field4&amp;gt;.&lt;/P&gt;&lt;P&gt;  &amp;lt;w_field4&amp;gt; = 'Any old Text'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;assign component 'ANYFIELD5' of structure &amp;lt;wa_dyn_table&amp;gt; to &amp;lt;w_field5&amp;gt;.&lt;/P&gt;&lt;P&gt;  &amp;lt;w_field5&amp;gt; = c_dec2..&lt;/P&gt;&lt;P&gt;  APPEND &amp;lt;wa_dyn_table&amp;gt; TO &amp;lt;dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at &amp;lt;dyn_table&amp;gt; into &amp;lt;wa_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;   clear wa_cellcolors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   ASSIGN COMPONENT 'T_CELLCOLORS'&lt;/P&gt;&lt;P&gt;      OF STRUCTURE &amp;lt;wa_dyn_table&amp;gt; TO &amp;lt;t_cellcolors&amp;gt;.&lt;/P&gt;&lt;P&gt;          wa_cellcolors-fname = 'ANYFIELD2'.&lt;/P&gt;&lt;P&gt;    wa_cellcolors-color-col = '1'.&lt;/P&gt;&lt;P&gt;    APPEND wa_cellcolors TO &amp;lt;t_cellcolors&amp;gt;.&lt;/P&gt;&lt;P&gt;    clear wa_cellcolors.&lt;/P&gt;&lt;P&gt;    wa_cellcolors-fname = 'ANYFIELD3'.&lt;/P&gt;&lt;P&gt;     wa_cellcolors-color-col = '2'.&lt;/P&gt;&lt;P&gt;    APPEND wa_cellcolors TO &amp;lt;t_cellcolors&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      clear wa_cellcolors.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   wa_cellcolors-fname = 'ANYFIELD4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     wa_cellcolors-color-col = '6'.&lt;/P&gt;&lt;P&gt;    APPEND wa_cellcolors TO &amp;lt;t_cellcolors&amp;gt;.&lt;/P&gt;&lt;P&gt;    MODIFY &amp;lt;dyn_table&amp;gt; FROM &amp;lt;wa_dyn_table&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;endform.                    "populate_dynamic_itab&lt;/P&gt;&lt;P&gt;form exit_program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call method grid_container1-&amp;gt;free.&lt;/P&gt;&lt;P&gt;  call method cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;  leave program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    "exit_program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form refresh_disp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call method grid1-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    "refresh_disp&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form set_input.&lt;/P&gt;&lt;P&gt;  i4 = 1.&lt;/P&gt;&lt;P&gt;  call method grid1-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_ready_for_input = i4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    "set_input&lt;/P&gt;&lt;P&gt;form switch_input.&lt;/P&gt;&lt;P&gt;  if i4 = 1.&lt;/P&gt;&lt;P&gt;    i4 = 0.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    i4 = 1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  call method grid1-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_ready_for_input = i4.&lt;/P&gt;&lt;P&gt;endform.                    "switch_input&lt;/P&gt;&lt;P&gt;form init_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Enabling the grid to edit mode,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Set ALV controls for cell coloring table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  struct_grid_lset-edit = 'X'. "To enable editing in ALV&lt;/P&gt;&lt;P&gt;  struct_grid_lset-grid_title = 'Jimbos Test'.&lt;/P&gt;&lt;P&gt;  struct_grid_lset-ctab_fname = 'T_CELLCOLORS'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; struct_grid_lset-sel_mode = 'D'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   call method grid1-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      is_layout       = struct_grid_lset&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      it_outtab       = &amp;lt;dyn_table&amp;gt;&lt;/P&gt;&lt;P&gt;      it_fieldcatalog = it_fldcat.&lt;/P&gt;&lt;P&gt;endform.                    "init_grid&lt;/P&gt;&lt;P&gt;form register_enter_event.&lt;/P&gt;&lt;P&gt;  call method grid1-&amp;gt;register_edit_event&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_event_id = cl_gui_alv_grid=&amp;gt;mc_evt_enter.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Instantiate the event or it won't work.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  create object g_event_receiver.&lt;/P&gt;&lt;P&gt;  set handler g_event_receiver-&amp;gt;handle_data_changed for grid1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    "register_enter_event&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers &lt;/P&gt;&lt;P&gt;Jimbo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2007 07:30:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv/m-p/2409311#M537285</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-28T07:30:45Z</dc:date>
    </item>
  </channel>
</rss>

