<?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 Grid in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229822#M479624</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Chris , &lt;/P&gt;&lt;P&gt;Please find the code below . &lt;/P&gt;&lt;P&gt;It involves interactive ALV with 2 level drill down . &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;GLOBAL DECLARATIONS--&lt;HR originaltext="------------------------------" /&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;THIS DEFINES GLOBAL TYPES FOR ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TYPE-POOLS: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TRANSPARENT TABLES USED FOR DATA FETCHING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES: ekko,ekpo,eket,lfa1,ekbe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : i_fieldcat TYPE slis_t_fieldcat_alv," FOR FIELDCATALOG&lt;/P&gt;&lt;P&gt;       i2_fieldcat TYPE slis_t_fieldcat_alv,"FOR FIELDCATALOG 2&lt;/P&gt;&lt;P&gt;       i3_fieldcat TYPE slis_t_fieldcat_alv, "FOR FIELDCATALOG 3&lt;/P&gt;&lt;P&gt;       i_eventcat TYPE slis_t_event,        "FOR EVENTCATALOG&lt;/P&gt;&lt;P&gt;       i_layout TYPE slis_layout_alv,       "FOR LAYOUT&lt;/P&gt;&lt;P&gt;       i_sortinfo TYPE slis_t_sortinfo_alv. "FOR SORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;VARIABLE FOR COUNT OF PO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: n TYPE i ,&lt;/P&gt;&lt;P&gt;      i TYPE i,&lt;/P&gt;&lt;P&gt;      po_item TYPE ebelp,&lt;/P&gt;&lt;P&gt;      v_count(1) VALUE 'N'.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;TYPES--&lt;HR originaltext="----------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------" /&gt;DATA DECLARATION FOR VENDOR MASTER--&lt;HR originaltext="-------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_lfa1,&lt;/P&gt;&lt;P&gt;       lifnr TYPE lifnr,    "VENDOR CODE&lt;/P&gt;&lt;P&gt;       name1 TYPE name1_gp, "VENDOR NAME&lt;/P&gt;&lt;P&gt;       END OF t_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;DATA DECLARATION FOR HEADER(EKKO)--&lt;HR originaltext="-------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_ekko,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,     "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,     "VENDOR CODE&lt;/P&gt;&lt;P&gt;       c     TYPE  i,        "PURCHASE ORDER COUNT&lt;/P&gt;&lt;P&gt;       END OF t_ekko.&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;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;DATA DECLARATION FOR DETAIL(EKPO)--&lt;HR originaltext="-------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES:     BEGIN OF t_ekpo,&lt;/P&gt;&lt;P&gt;     ebeln TYPE ebeln,       "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;     ebelp TYPE ebelp,       "PURCHASE ORDER ITEM&lt;/P&gt;&lt;P&gt;     menge TYPE bstmg,       "PURCHASE ORDER QTY&lt;/P&gt;&lt;P&gt;     END OF t_ekpo,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR EKET TABLE--&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     BEGIN OF t_eket,&lt;/P&gt;&lt;P&gt;     ebeln TYPE ebeln,       "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;     ebelp TYPE ebelp,       "PURCHASE ORDER ITEM&lt;/P&gt;&lt;P&gt;     etenr TYPE eeten,       "DELIVERY SCHEDULE LINE COUNTER&lt;/P&gt;&lt;P&gt;     wemng TYPE weemg,       "QUANTITY OF GOODS RECIEVED&lt;/P&gt;&lt;P&gt;     END OF t_eket ,&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------" /&gt;&lt;P&gt;DATA DECLARATION FOR FINAL TABLE(FIRST&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SCREEN)----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       BEGIN OF t_tab,&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       name1 TYPE name1_gp,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       menge TYPE bstmg,&lt;/P&gt;&lt;P&gt;       etenr TYPE eeten,&lt;/P&gt;&lt;P&gt;       wemng TYPE weemg,&lt;/P&gt;&lt;P&gt;       c   TYPE i,&lt;/P&gt;&lt;P&gt;       END OF t_tab.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR FINAL TABLE (SECOND SCREEN)---&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_vendor,&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       menge TYPE bstmg,&lt;/P&gt;&lt;P&gt;       wemng TYPE p,&lt;/P&gt;&lt;P&gt;       END OF t_vendor,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR EKBE--&lt;HR originaltext="------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       BEGIN OF t_ekbe,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       bwart TYPE bwart,&lt;/P&gt;&lt;P&gt;       menge TYPE menge_d,&lt;/P&gt;&lt;P&gt;       END OF t_ekbe.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;WORK AREA--&lt;HR originaltext="-------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA : wa_lfa1   TYPE  t_lfa1,&lt;/P&gt;&lt;P&gt;       wa_ekko   TYPE  t_ekko,&lt;/P&gt;&lt;P&gt;       wa_ekpo   TYPE  t_ekpo,&lt;/P&gt;&lt;P&gt;       wa_eket   TYPE  t_eket,&lt;/P&gt;&lt;P&gt;       wa_tab    TYPE  t_tab,&lt;/P&gt;&lt;P&gt;       wa_vendor TYPE   t_vendor,&lt;/P&gt;&lt;P&gt;       wa_ekbe   TYPE  t_ekbe,&lt;/P&gt;&lt;P&gt;       wa_grn    TYPE  t_ekbe,&lt;/P&gt;&lt;P&gt;       wa_full   TYPE  t_vendor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;INTERNAL TABLES--&lt;HR originaltext="-----------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA:  it_lfa1   TYPE STANDARD TABLE OF t_lfa1   WITH HEADER LINE ,&lt;/P&gt;&lt;P&gt;       it_ekko   TYPE STANDARD TABLE OF t_ekko    WITH HEADER LINE ,&lt;/P&gt;&lt;P&gt;       it_ekpo   TYPE STANDARD TABLE OF t_ekpo   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_eket   TYPE STANDARD TABLE OF t_eket   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_tab    TYPE STANDARD TABLE OF t_tab    WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_vendor TYPE STANDARD TABLE OF t_vendor WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_ekbe   TYPE STANDARD TABLE OF t_ekbe   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_grn   TYPE STANDARD TABLE OF t_ekbe     WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_full  TYPE STANDARD TABLE OF  t_vendor  WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: vendor TYPE elifn.&lt;/P&gt;&lt;P&gt;DATA: qty TYPE p,&lt;/P&gt;&lt;P&gt;      c TYPE i.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;SELECTION SCREEN--&lt;HR originaltext="-----------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS :  s_lifnr FOR lfa1-lifnr OBLIGATORY.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK main.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;AT SELECTION-SCREEN--&lt;HR originaltext="-----------------------" /&gt;&lt;P&gt;&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;  SELECT lifnr INTO (it_lfa1-lifnr) FROM lfa1 WHERE lifnr IN&lt;/P&gt;&lt;P&gt;s_lifnr.&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;    MESSAGE e001.&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;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;START-OF-SELECTION--&lt;HR originaltext="-------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&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; FETCH RECORDS FROM THE DATABASE INTO THE INTERNAL TABLE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_select_it_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PREPARE FIELDCATALOG FOR THE MAIN (1ST LIST) REPORT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_build_fieldcat USING  i_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINE EVENT TABLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM build_eventcat USING i_eventcat.&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;DETERMINE THE SORTING SEQUENCE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM build_sort USING i_sortinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DISPLAY ALV GRID.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_display_alv_list.&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;/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  ZF_SELECT_IT_TAB&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;*SELECTING DATA FROM IT_LFA1 TABLE&lt;/P&gt;&lt;P&gt;FORM zf_select_it_tab .&lt;/P&gt;&lt;P&gt;  SELECT lifnr&lt;/P&gt;&lt;P&gt;         name1&lt;/P&gt;&lt;P&gt;              INTO TABLE  it_lfa1&lt;/P&gt;&lt;P&gt;              FROM lfa1&lt;/P&gt;&lt;P&gt;              WHERE lifnr IN s_lifnr.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    SORT it_lfa1 BY lifnr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKKO TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_lfa1[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;           ebeln&lt;/P&gt;&lt;P&gt;           lifnr&lt;/P&gt;&lt;P&gt;                FROM ekko&lt;/P&gt;&lt;P&gt;                INTO  TABLE it_ekko&lt;/P&gt;&lt;P&gt;                FOR ALL ENTRIES IN it_lfa1&lt;/P&gt;&lt;P&gt;                WHERE lifnr = it_lfa1-lifnr.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT it_ekko BY ebeln.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKPO TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_ekko[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;           ebeln&lt;/P&gt;&lt;P&gt;           ebelp&lt;/P&gt;&lt;P&gt;           menge&lt;/P&gt;&lt;P&gt;                FROM ekpo&lt;/P&gt;&lt;P&gt;                INTO TABLE it_ekpo&lt;/P&gt;&lt;P&gt;                FOR ALL ENTRIES IN it_ekko&lt;/P&gt;&lt;P&gt;                WHERE ebeln = it_ekko-ebeln.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT it_ekpo BY ebeln ebelp.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKET TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_ekpo[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;          ebeln&lt;/P&gt;&lt;P&gt;          ebelp&lt;/P&gt;&lt;P&gt;          etenr&lt;/P&gt;&lt;P&gt;          wemng&lt;/P&gt;&lt;P&gt;               FROM eket&lt;/P&gt;&lt;P&gt;               INTO TABLE it_eket&lt;/P&gt;&lt;P&gt;               FOR ALL ENTRIES IN it_ekpo&lt;/P&gt;&lt;P&gt;               WHERE ebeln = it_ekpo-ebeln&lt;/P&gt;&lt;P&gt;               AND   ebelp = it_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;    SORT it_eket BY ebeln ebelp etenr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKBE TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_eket[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;          ebeln&lt;/P&gt;&lt;P&gt;          ebelp&lt;/P&gt;&lt;P&gt;          bwart&lt;/P&gt;&lt;P&gt;          menge&lt;/P&gt;&lt;P&gt;               FROM ekbe&lt;/P&gt;&lt;P&gt;               INTO TABLE it_ekbe&lt;/P&gt;&lt;P&gt;               FOR ALL ENTRIES IN it_eket&lt;/P&gt;&lt;P&gt;               WHERE ebelp = it_eket-ebelp&lt;/P&gt;&lt;P&gt;               AND   ebeln = it_eket-ebeln&lt;/P&gt;&lt;P&gt;               AND   bwart = '101'.&lt;/P&gt;&lt;P&gt;  ENDIF.&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;THIS BLOCK MOVES THE  FIELDS FROM DIFFERENT           *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TABLES(EKKO,LFA1,EKPO,EKET) INTO A FINAL TABLE IT_TAB *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************&lt;/P&gt;&lt;P&gt;  CLEAR wa_tab.&lt;/P&gt;&lt;P&gt;  CLEAR it_tab.&lt;/P&gt;&lt;P&gt;  LOOP AT it_lfa1 INTO wa_lfa1.&lt;/P&gt;&lt;P&gt;    READ TABLE it_ekko INTO wa_ekko WITH KEY lifnr = wa_lfa1-lifnr&lt;/P&gt;&lt;P&gt;                                                   BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE it_lfa1 INTO wa_lfa1&lt;/P&gt;&lt;P&gt;    WITH KEY lifnr = wa_lfa1-lifnr&lt;/P&gt;&lt;P&gt;    BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      MOVE: wa_lfa1-name1 TO wa_tab-name1.&lt;/P&gt;&lt;P&gt;      MOVE: wa_lfa1-lifnr TO wa_tab-lifnr.&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;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Amber &lt;/P&gt;&lt;P&gt;Reward Points if helpful&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 May 2007 11:23:27 GMT</pubDate>
    <dc:creator>former_member198270</dc:creator>
    <dc:date>2007-05-03T11:23:27Z</dc:date>
    <item>
      <title>ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229819#M479621</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;I'm looking to develop a simple report with an ALV grid at a summary level, with either a drill down or separate screen for the lower level items.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anyone direct me to a demo SAP program that has the functionality I'm looking for?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:20:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229819#M479621</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:20:26Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229820#M479622</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;check this program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZBHALV_LIST_GRID2.&lt;/P&gt;&lt;P&gt;TABLES:MARA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:BEGIN OF ITAB OCCURS 0,&lt;/P&gt;&lt;P&gt;     MATNR LIKE MARA-MATNR,&lt;/P&gt;&lt;P&gt;     ERSDA LIKE MARA-ERSDA,&lt;/P&gt;&lt;P&gt;     ERNAM LIKE MARA-ERNAM,&lt;/P&gt;&lt;P&gt;     MBRSH LIKE MARA-MBRSH,&lt;/P&gt;&lt;P&gt;END OF ITAB.&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;DATA:FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;DATA:EVE TYPE SLIS_T_EVENT WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA:HEAD TYPE SLIS_T_LISTHEADER WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;P&gt;   I_PROGRAM_NAME               = SY-REPID&lt;/P&gt;&lt;P&gt;   I_INTERNAL_TABNAME           = 'ITAB'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME             = 'ITAB'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CLIENT_NEVER_DISPLAY       = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   I_INCLNAME                   = SY-REPID&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BYPASSING_BUFFER           =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BUFFER_ACTIVE              =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CHANGING&lt;/P&gt;&lt;P&gt;    CT_FIELDCAT                  = FIELDCAT1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EVE-NAME = 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;EVE-FORM = 'HEADER'.&lt;/P&gt;&lt;P&gt;APPEND EVE.&lt;/P&gt;&lt;P&gt;CLEAR EVE.&lt;/P&gt;&lt;P&gt;EVE-NAME = 'END_OF_LIST'.&lt;/P&gt;&lt;P&gt;EVE-FORM = 'LISTEND'.&lt;/P&gt;&lt;P&gt;APPEND EVE.&lt;/P&gt;&lt;P&gt;CLEAR EVE.&lt;/P&gt;&lt;P&gt;EVE-NAME = 'TOP_OF_LIST'.&lt;/P&gt;&lt;P&gt;EVE-FORM = 'LISTTOP'.&lt;/P&gt;&lt;P&gt;APPEND EVE.&lt;/P&gt;&lt;P&gt;CLEAR EVE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB UP TO 20 ROWS&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;P&gt;   I_CALLBACK_PROGRAM                = SY-REPID&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME                  = 'ITAB'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   IT_FIELDCAT                       = FIELDCAT1&lt;/P&gt;&lt;P&gt;   I_DEFAULT                         = 'X'&lt;/P&gt;&lt;P&gt;   I_SAVE                            = 'A'&lt;/P&gt;&lt;P&gt;   IT_EVENTS                         = EVE[]&lt;/P&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    T_OUTTAB                          = ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM HEADER.&lt;/P&gt;&lt;P&gt;REFRESH HEAD.&lt;/P&gt;&lt;P&gt;  HEAD-TYP  = 'H'.&lt;/P&gt;&lt;P&gt;  HEAD-INFO = 'GENERAL MATERIAL DATA'.&lt;/P&gt;&lt;P&gt;  APPEND HEAD.&lt;/P&gt;&lt;P&gt;   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    IT_LIST_COMMENTARY       =  HEAD[].&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM LISTEND.&lt;/P&gt;&lt;P&gt;REFRESH HEAD.&lt;/P&gt;&lt;P&gt;  HEAD-TYP  = 'H'.&lt;/P&gt;&lt;P&gt;  HEAD-INFO = 'END OF THE LIST'.&lt;/P&gt;&lt;P&gt;  APPEND HEAD.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    IT_LIST_COMMENTARY       =  HEAD[].&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM LISTTOP.&lt;/P&gt;&lt;P&gt;REFRESH HEAD.&lt;/P&gt;&lt;P&gt;  HEAD-TYP  = 'H'.&lt;/P&gt;&lt;P&gt;  HEAD-INFO = 'TOP OF THE LIST'.&lt;/P&gt;&lt;P&gt;  APPEND HEAD.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    IT_LIST_COMMENTARY       =  HEAD[].&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rgds,&lt;/P&gt;&lt;P&gt;bharat.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:22:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229820#M479622</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:22:33Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229821#M479623</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;the following code will help you.&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;/P&gt;&lt;P&gt;DATA: save_ok LIKE sy-ucomm,&lt;/P&gt;&lt;P&gt;      g_container TYPE scrfname VALUE 'CC1',&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_grid  TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_custom_container TYPE REF TO cl_gui_custom_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      gt_fieldcat TYPE lvc_t_fcat,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      g_max TYPE i VALUE 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;declarations for top of page event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Data:  gv_c_split type ref to cl_gui_splitter_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_ptv type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       gv_alv_ptv type ref to cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_dd_doc TYPE REF TO cl_dd_document,&lt;/P&gt;&lt;P&gt;       text TYPE sdydo_text_element,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       o_split type ref to cl_gui_easy_splitter_container,&lt;/P&gt;&lt;P&gt;       o_top type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;       o_bot type ref to cl_gui_container,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       gv_c_vp type ref to cl_gui_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;end of declaration for top of page.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION DEFERRED.&lt;/P&gt;&lt;P&gt;*class lcl_application_dc definition deferred.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: o_event_receiver TYPE REF TO lcl_event_receiver.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     g_dc type ref to lcl_application_dc.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_outtab TYPE TABLE OF sbook.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;      CLASS lcl_event_receiver DEFINITION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;    METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_fieldname&lt;/P&gt;&lt;P&gt;                         es_row_no&lt;/P&gt;&lt;P&gt;                         er_event_data&lt;/P&gt;&lt;P&gt;                         et_bad_cells&lt;/P&gt;&lt;P&gt;                         e_display,&lt;/P&gt;&lt;P&gt;            handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;               IMPORTING e_dyndoc_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: reset.&lt;/P&gt;&lt;P&gt;    METHODS: show_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PRIVATE SECTION.&lt;/P&gt;&lt;P&gt;**&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;attributes for creating an own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(using a second ALV Grid Control&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    DATA: f4_grid TYPE REF TO cl_gui_alv_grid,&lt;/P&gt;&lt;P&gt;          f4_custom_container TYPE REF TO cl_gui_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF ty_f4.&lt;/P&gt;&lt;P&gt;    TYPES: value TYPE s_class.&lt;/P&gt;&lt;P&gt;    TYPES: descr(20) TYPE c.&lt;/P&gt;&lt;P&gt;    TYPES: END OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_itab TYPE TABLE OF ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_fieldcatalog TYPE lvc_t_fcat.&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;attributes to store event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(after the CALL SCREEN command, the event parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;are not accessible)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    TYPES: BEGIN OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;    TYPES: c_fieldname     TYPE lvc_fname.&lt;/P&gt;&lt;P&gt;    TYPES: cs_row_no       TYPE lvc_s_roid.&lt;/P&gt;&lt;P&gt;    TYPES: cr_event_data   TYPE REF TO cl_alv_event_data.&lt;/P&gt;&lt;P&gt;    TYPES: ct_bad_cells    TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    TYPES: c_display       TYPE char01.&lt;/P&gt;&lt;P&gt;    TYPES: END OF onf4_event_parameters_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    DATA: f4_params TYPE onf4_event_parameters_type.&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;Methods to create own F4-Help&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(This is done using a second ALV Grid Control)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;**&lt;/P&gt;&lt;P&gt;    METHODS: init_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    METHODS: fill_f4_itab .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    METHODS: on_double_click FOR EVENT double_click OF cl_gui_alv_grid&lt;/P&gt;&lt;P&gt;                    IMPORTING es_row_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 DEFINITION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;      CLASS lcl_event_receiver IMPLEMENTATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;CLASS lcl_event_receiver IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§2. Implement an event handler method for event ONF4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD handle_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save event parameter as global attributes of this class&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(maybe solved differently if you use a function module!)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    f4_params-c_fieldname = e_fieldname.&lt;/P&gt;&lt;P&gt;    f4_params-cs_row_no = es_row_no.&lt;/P&gt;&lt;P&gt;    f4_params-cr_event_data = er_event_data.&lt;/P&gt;&lt;P&gt;    f4_params-ct_bad_cells = et_bad_cells.&lt;/P&gt;&lt;P&gt;    f4_params-c_display = e_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§3. Call your own f4 help. To customize your popup check&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   first if the cell is ready for input (event parameter E_DISPLAY).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(parameter E_DISPLAY is checked later in method on_double_click)&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;(Probably, you would call a function module at this point,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass the needed event parameter and call the popup screen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;within that function module. This is not done in this example&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;to avoid scattering its code).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL SCREEN 101 STARTING AT 10 10.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§7. Inform the ALV Grid Control that an own f4 help has been processed&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   to suppress the standard f4 help.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    er_event_data-&amp;gt;m_event_handled = 'X'.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "on_f4&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD show_f4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   DATA: ls_outtab TYPE sbook.&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;initialize own f4 help if needed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;      CALL METHOD init_f4.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;refresh list of values in f4 help and show it&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;refresh_table_display.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CAUTION: Do not use method REFRESH_TABLE_DISPLAY for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;your editable ALV Grid instances while handling events&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA_CHANGED or ONf4. You would overwrite intermediate&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;values of your output table on frontend.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;'f4_grid' is a non-editable ALV Grid Control for the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;application specific F4-Help. Therefore, calling&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;REFRESH_TABLE_DISPLAY for this instance has no&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;negative effect.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "show_f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD init_f4.&lt;/P&gt;&lt;P&gt;    DATA: ls_f4_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;build fieldcatalog entries for f4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;create controls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CREATE OBJECT f4_custom_container&lt;/P&gt;&lt;P&gt;              EXPORTING container_name = 'CC_ONF4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CREATE OBJECT f4_grid&lt;/P&gt;&lt;P&gt;              EXPORTING i_parent = f4_custom_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;hide toolbar&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_f4_layout-no_toolbar = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL METHOD f4_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        is_layout       = ls_f4_layout&lt;/P&gt;&lt;P&gt;      CHANGING&lt;/P&gt;&lt;P&gt;        it_fieldcatalog = f4_fieldcatalog&lt;/P&gt;&lt;P&gt;        it_outtab       = f4_itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register event double click on backend&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SET HANDLER me-&amp;gt;on_double_click FOR f4_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;flush since 'ls_layout' is local!&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD cl_gui_cfw=&amp;gt;flush.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                                                "init_f4&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;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD fill_f4_itab.&lt;/P&gt;&lt;P&gt;    DATA ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete all entries in f4_itab to determine&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;offered values dynamically&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CLEAR f4_itab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'C'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t03. "Business Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'Y'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t04. "Economie Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-value = 'F'.&lt;/P&gt;&lt;P&gt;    ls_f4_itab-descr = text-t05. "First Class&lt;/P&gt;&lt;P&gt;    APPEND ls_f4_itab TO f4_itab.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "fill_f4_itab&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  METHOD build_fieldcatalog.&lt;/P&gt;&lt;P&gt;    DATA: ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'VALUE'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t02.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ls_fcat-inttype = 'S_CLASS'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;    CLEAR ls_fcat.&lt;/P&gt;&lt;P&gt;    ls_fcat-fieldname = 'DESCR'.&lt;/P&gt;&lt;P&gt;    ls_fcat-coltext = text-t01.&lt;/P&gt;&lt;P&gt;    ls_fcat-inttype = 'C'.&lt;/P&gt;&lt;P&gt;    ls_fcat-outputlen = 20.&lt;/P&gt;&lt;P&gt;    APPEND ls_fcat TO f4_fieldcatalog.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "build_fieldcatalog&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD on_double_click.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§5. If not already caught by your own f4 help, check whether&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   the triggered cell was ready for input by using E_DISPLAY&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   and if not, exit.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF f4_params-c_display EQ 'X'.&lt;/P&gt;&lt;P&gt;      LEAVE SCREEN.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§6. After the user selected a value, pass it to the ALV Grid Control:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6a. Define a field symbol of type: LVC_T_MODI and a structure of&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      type LVC_S_MODI to pass the value later on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FIELD-SYMBOLS  TYPE lvc_t_modi.&lt;/P&gt;&lt;P&gt;    DATA: ls_modi TYPE lvc_s_modi,&lt;/P&gt;&lt;P&gt;          ls_f4_itab TYPE ty_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*§  6b. Dereference attribute M_DATA into your field symbol and add&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      the selected value to the table to which this symbol points to.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ASSIGN f4_params-cr_event_data-&amp;gt;m_data-&amp;gt;* TO .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "on_double_click&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------" /&gt;&lt;P&gt;  METHOD reset.&lt;/P&gt;&lt;P&gt;    FIELD-SYMBOLS display_document&lt;/P&gt;&lt;P&gt;             EXPORTING parent = o_top.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDMETHOD.                    "handle_top_of_page&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.                    "lcl_application_f4 IMPLEMENTATION&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL SCREEN 100.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;      MODULE PBO OUTPUT                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pbo OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'MAIN100'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'MAIN100'.&lt;/P&gt;&lt;P&gt;  IF g_custom_container IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM create_and_init_alv CHANGING gt_outtab[]&lt;/P&gt;&lt;P&gt;                                         gt_fieldcat.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "pbo OUTPUT&lt;/P&gt;&lt;P&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;      MODULE PAI INPUT                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE pai INPUT.&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.&lt;/P&gt;&lt;P&gt;      PERFORM exit_program.&lt;/P&gt;&lt;P&gt;    WHEN 'SWITCH'.&lt;/P&gt;&lt;P&gt;      PERFORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    do nothing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDMODULE.                    "pai INPUT&lt;/P&gt;&lt;P&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;      FORM EXIT_PROGRAM                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exit_program.&lt;/P&gt;&lt;P&gt;  LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "exit_program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;*&amp;amp;----&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;/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;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_fcat TYPE lvc_s_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_structure_name = 'SBOOK'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      ct_fieldcat      = pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_fieldcat INTO ls_fcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exchange smoker field with invoice field - just to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;make the dependance between SMOKER and CLASS more transparent&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(Smoking is only allowed in the first class).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ls_fcat-fieldname EQ 'SMOKER'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 11.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 10.&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field 'checktable' is set to avoid shortdumps that are caused&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;by inconsistend data in check tables. You may comment this out&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;when the test data of the flight model is consistent in your system.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF ls_fcat-fieldname EQ 'INVOICE'.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = 7.&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF    ls_fcat-fieldname EQ 'CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = 'X'.&lt;/P&gt;&lt;P&gt;      ls_fcat-outputlen = 5.&lt;/P&gt;&lt;P&gt;      ls_fcat-checktable = '!'.        "do not check foreign keys&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MODIFY pt_fieldcat FROM ls_fcat.&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;ENDFORM.                    "build_fieldcat&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  create_and_init_alv&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_OUTTAB    text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;PT_FIELDCAT  text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM create_and_init_alv CHANGING pt_outtab TYPE STANDARD TABLE&lt;/P&gt;&lt;P&gt;                                  pt_fieldcat TYPE lvc_t_fcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_exclude TYPE ui_functions,&lt;/P&gt;&lt;P&gt;        ls_layout TYPE lvc_s_layo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT g_custom_container&lt;/P&gt;&lt;P&gt;          EXPORTING container_name = g_container.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CREATE OBJECT g_grid&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        EXPORTING i_parent = g_custom_container.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT gv_c_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_dynnr        = lv_dynnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      link_repid        = lv_repid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      parent            = g_custom_container&lt;/P&gt;&lt;P&gt;      rows              = 2&lt;/P&gt;&lt;P&gt;      columns           = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_border&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     border            = space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 1&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_ptv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 1&lt;/P&gt;&lt;P&gt;      height            = 20&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 6 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;get_container&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       row       = 2&lt;/P&gt;&lt;P&gt;       column    = 1&lt;/P&gt;&lt;P&gt;     RECEIVING&lt;/P&gt;&lt;P&gt;       container = gv_c_vp .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_c_split-&amp;gt;set_row_height&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      id                = 2&lt;/P&gt;&lt;P&gt;      height            = 10&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      cntl_error        = 1&lt;/P&gt;&lt;P&gt;      cntl_system_error = 2&lt;/P&gt;&lt;P&gt;      OTHERS            = 3 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   CREATE OBJECT o_split&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;      parent            = gv_c_ptv&lt;/P&gt;&lt;P&gt;      with_border       = 1&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       cntl_error        = 1&lt;/P&gt;&lt;P&gt;       cntl_system_error = 2&lt;/P&gt;&lt;P&gt;       others            = 3.&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; o_top = o_split-&amp;gt;top_left_container.&lt;/P&gt;&lt;P&gt; o_bot = o_split-&amp;gt;bottom_right_container.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CREATE OBJECT gv_alv_ptv&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;       i_parent          = o_bot&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;       error_cntl_create = 1&lt;/P&gt;&lt;P&gt;       error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;       error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;       error_dp_create   = 4&lt;/P&gt;&lt;P&gt;       others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CREATE OBJECT g_grid&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          i_parent          = gv_c_vp&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          error_cntl_create = 1&lt;/P&gt;&lt;P&gt;          error_cntl_init   = 2&lt;/P&gt;&lt;P&gt;          error_cntl_link   = 3&lt;/P&gt;&lt;P&gt;          error_dp_create   = 4&lt;/P&gt;&lt;P&gt;          others            = 5    .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_fieldcat CHANGING pt_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Optionally restrict generic functions to 'change only'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  (The user shall not be able to add new lines).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM exclude_tb_functions CHANGING lt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM build_data CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_layout-grid_title = 'F4 help implemented for field CLASS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_event_receiver.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR gv_alv_ptv.&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_top_of_page FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'&lt;/P&gt;&lt;P&gt;                                   no_margins = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     is_layout                    = ls_layout&lt;/P&gt;&lt;P&gt;  CHANGING&lt;/P&gt;&lt;P&gt;    it_outtab                     = pt_outtab[]&lt;/P&gt;&lt;P&gt;    it_fieldcatalog               = pt_fieldcat&lt;/P&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;P&gt;    invalid_parameter_combination = 1&lt;/P&gt;&lt;P&gt;    program_error                 = 2&lt;/P&gt;&lt;P&gt;    too_many_lines                = 3&lt;/P&gt;&lt;P&gt;    OTHERS                        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_table_for_first_display&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_toolbar_excluding = lt_exclude&lt;/P&gt;&lt;P&gt;      is_layout            = ls_layout&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      it_fieldcatalog      = pt_fieldcat&lt;/P&gt;&lt;P&gt;      it_outtab            = pt_outtab[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD gv_alv_ptv-&amp;gt;list_processing_events&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_event_name      = 'TOP_OF_PAGE'&lt;/P&gt;&lt;P&gt;       i_dyndoc_id       = o_dd_doc.&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;register f4 for field CLASS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM register_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set editable cells to ready for input initially&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               "CREATE_AND_INIT_ALV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  exclude_tb_functions&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_EXCLUDE text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Only allow to change data not to create new entries (exclude&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;generic functions).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA ls_exclude TYPE ui_func.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_copy_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_delete_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_append_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_insert_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;  ls_exclude = cl_gui_alv_grid=&amp;gt;mc_fc_loc_move_row.&lt;/P&gt;&lt;P&gt;  APPEND ls_exclude TO pt_exclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " EXCLUDE_TB_FUNCTIONS&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  build_data&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM build_data CHANGING pt_outtab TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_index TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT * FROM sbook INTO TABLE gt_outtab UP TO g_max ROWS.&lt;/P&gt;&lt;P&gt;  IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM generate_entries CHANGING pt_outtab.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT pt_outtab INTO ls_sbook.&lt;/P&gt;&lt;P&gt;    l_index = sy-tabix.&lt;/P&gt;&lt;P&gt;    CLEAR ls_sbook-class.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Alternate between smoker and non smoker to make&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;it more obvious what this example is about&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_index = l_index MOD 2.&lt;/P&gt;&lt;P&gt;    IF l_index EQ 1.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      ls_sbook-smoker = ' '.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MODIFY pt_outtab FROM ls_sbook.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " build_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  generate_entries&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/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;PT_SBOOK   text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM generate_entries CHANGING pt_sbook TYPE STANDARD TABLE.&lt;/P&gt;&lt;P&gt;  DATA: ls_sbook TYPE sbook,&lt;/P&gt;&lt;P&gt;        l_month(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_day(2) TYPE c,&lt;/P&gt;&lt;P&gt;        l_date(8) TYPE c,&lt;/P&gt;&lt;P&gt;	l_prebookid TYPE i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_sbook-carrid = 'LH'.&lt;/P&gt;&lt;P&gt;  ls_sbook-connid = '0400'.&lt;/P&gt;&lt;P&gt;  ls_sbook-forcurkey = 'DEM'.&lt;/P&gt;&lt;P&gt;  ls_sbook-loccurkey = 'USD'.&lt;/P&gt;&lt;P&gt;  ls_sbook-custtype = 'B'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 110 TIMES.&lt;/P&gt;&lt;P&gt;    l_prebookid = sy-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_sbook-forcuram = sy-index * 10.&lt;/P&gt;&lt;P&gt;    ls_sbook-loccuram = ls_sbook-loccuram * 2.&lt;/P&gt;&lt;P&gt;    ls_sbook-customid = sy-index.&lt;/P&gt;&lt;P&gt;    ls_sbook-counter = 18.&lt;/P&gt;&lt;P&gt;    ls_sbook-agencynum = 11.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_month = sy-index / 10 + 1.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      l_day = 3 + l_month + sy-index * 2.&lt;/P&gt;&lt;P&gt;      l_date+0(4) = '2000'.&lt;/P&gt;&lt;P&gt;      l_date+4(2) = l_month.&lt;/P&gt;&lt;P&gt;      l_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-fldate = l_date.&lt;/P&gt;&lt;P&gt;      SUBTRACT 3 FROM l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+0(6) = l_date+0(6).&lt;/P&gt;&lt;P&gt;      ls_sbook-order_date+6(2) = l_day.&lt;/P&gt;&lt;P&gt;      ls_sbook-bookid = l_prebookid * 2 + sy-index.&lt;/P&gt;&lt;P&gt;      IF sy-index EQ 1.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = 'X'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-smoker = space.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ls_sbook-luggweight = l_prebookid * 10.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-luggweight GE 1000.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'G'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'C'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        ls_sbook-wunit = 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'Y'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid &amp;gt; 40 AND ls_sbook-wunit EQ 'KG'.&lt;/P&gt;&lt;P&gt;        ls_sbook-invoice = 'X'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF ls_sbook-bookid EQ 2.&lt;/P&gt;&lt;P&gt;        ls_sbook-cancelled = 'X'.&lt;/P&gt;&lt;P&gt;        ls_sbook-class = 'F'.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND ls_sbook TO pt_sbook.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " generate_entries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  register_events&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM register_events.&lt;/P&gt;&lt;P&gt;*§1. Register event ONF4 at frontend using method&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   register_f4_for_fields. For this purpose, you pass a table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   with all fields, for which you want to implement your own&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   f4 help.&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;remark: If you want to use an own f4 help for fields where&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        no standard f4 help exists set field F4AVAILABL for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        this field in the fieldcatalog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR lt_f4.&lt;/P&gt;&lt;P&gt;  lt_f4-fieldname = 'CLASS'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If you would like to deregister the field again,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pass value SPACE with field 'register'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-register = 'X'.&lt;/P&gt;&lt;P&gt;*§  1b. If the value range in your f4 help depends on other&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      values of cells that are input enabled, set the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      GETBEFORE parameter.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The consequence is that the ALV Grid Control raises&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED before the f4 help is called to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check values that the f4 help depends on.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-getbefore = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The next parameter is used to change values after onf4 has&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;been processed. The ALV Grid Control will raise&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;event DATA_CHANGED afterwards, if you set it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lt_f4-chngeafter = space.&lt;/P&gt;&lt;P&gt;  INSERT TABLE lt_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL METHOD g_grid-&amp;gt;register_f4_for_fields&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_f4 = lt_f4[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;register events for abap objects (backend)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SET HANDLER o_event_receiver-&amp;gt;handle_f4 FOR g_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " register_events&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; MODULE status_0101 OUTPUT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE status_0101 OUTPUT.&lt;/P&gt;&lt;P&gt;  SET PF-STATUS 'POPUP'.&lt;/P&gt;&lt;P&gt;  SET TITLEBAR 'POPUP'.&lt;/P&gt;&lt;P&gt;  CALL METHOD o_event_receiver-&amp;gt;show_f4.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " STATUS_0101  OUTPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Module  USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;MODULE user_command_0101 INPUT.&lt;/P&gt;&lt;P&gt;  PERFORM user_command.&lt;/P&gt;&lt;P&gt;ENDMODULE.                 " USER_COMMAND_0101  INPUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM user_command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: save_ok TYPE sy-ucomm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  save_ok = sy-ucomm.&lt;/P&gt;&lt;P&gt;  CLEAR sy-ucomm.&lt;/P&gt;&lt;P&gt;  CASE save_ok.&lt;/P&gt;&lt;P&gt;    WHEN 'CANCEL'.&lt;/P&gt;&lt;P&gt;      CALL METHOD o_event_receiver-&amp;gt;reset.&lt;/P&gt;&lt;P&gt;      LEAVE TO SCREEN 0.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "user_command&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="---------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  switch_edit_mode&lt;/P&gt;&lt;P&gt;*&amp;amp;----&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;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM switch_edit_mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF g_grid-&amp;gt;is_ready_for_input( ) EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set edit enabled cells ready for input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lock edit enabled cells against input&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL METHOD g_grid-&amp;gt;set_ready_for_input&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        i_ready_for_input = 0.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "switch_edit_mode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:23:05 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229821#M479623</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:23:05Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229822#M479624</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Chris , &lt;/P&gt;&lt;P&gt;Please find the code below . &lt;/P&gt;&lt;P&gt;It involves interactive ALV with 2 level drill down . &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;GLOBAL DECLARATIONS--&lt;HR originaltext="------------------------------" /&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;THIS DEFINES GLOBAL TYPES FOR ALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TYPE-POOLS: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TRANSPARENT TABLES USED FOR DATA FETCHING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES: ekko,ekpo,eket,lfa1,ekbe.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : i_fieldcat TYPE slis_t_fieldcat_alv," FOR FIELDCATALOG&lt;/P&gt;&lt;P&gt;       i2_fieldcat TYPE slis_t_fieldcat_alv,"FOR FIELDCATALOG 2&lt;/P&gt;&lt;P&gt;       i3_fieldcat TYPE slis_t_fieldcat_alv, "FOR FIELDCATALOG 3&lt;/P&gt;&lt;P&gt;       i_eventcat TYPE slis_t_event,        "FOR EVENTCATALOG&lt;/P&gt;&lt;P&gt;       i_layout TYPE slis_layout_alv,       "FOR LAYOUT&lt;/P&gt;&lt;P&gt;       i_sortinfo TYPE slis_t_sortinfo_alv. "FOR SORTING&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;VARIABLE FOR COUNT OF PO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: n TYPE i ,&lt;/P&gt;&lt;P&gt;      i TYPE i,&lt;/P&gt;&lt;P&gt;      po_item TYPE ebelp,&lt;/P&gt;&lt;P&gt;      v_count(1) VALUE 'N'.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;TYPES--&lt;HR originaltext="----------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------" /&gt;DATA DECLARATION FOR VENDOR MASTER--&lt;HR originaltext="-------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_lfa1,&lt;/P&gt;&lt;P&gt;       lifnr TYPE lifnr,    "VENDOR CODE&lt;/P&gt;&lt;P&gt;       name1 TYPE name1_gp, "VENDOR NAME&lt;/P&gt;&lt;P&gt;       END OF t_lfa1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;DATA DECLARATION FOR HEADER(EKKO)--&lt;HR originaltext="-------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_ekko,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,     "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,     "VENDOR CODE&lt;/P&gt;&lt;P&gt;       c     TYPE  i,        "PURCHASE ORDER COUNT&lt;/P&gt;&lt;P&gt;       END OF t_ekko.&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;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="-----------" /&gt;DATA DECLARATION FOR DETAIL(EKPO)--&lt;HR originaltext="-------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES:     BEGIN OF t_ekpo,&lt;/P&gt;&lt;P&gt;     ebeln TYPE ebeln,       "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;     ebelp TYPE ebelp,       "PURCHASE ORDER ITEM&lt;/P&gt;&lt;P&gt;     menge TYPE bstmg,       "PURCHASE ORDER QTY&lt;/P&gt;&lt;P&gt;     END OF t_ekpo,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR EKET TABLE--&lt;HR originaltext="-----------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     BEGIN OF t_eket,&lt;/P&gt;&lt;P&gt;     ebeln TYPE ebeln,       "PURCHASE ORDER NUMBER&lt;/P&gt;&lt;P&gt;     ebelp TYPE ebelp,       "PURCHASE ORDER ITEM&lt;/P&gt;&lt;P&gt;     etenr TYPE eeten,       "DELIVERY SCHEDULE LINE COUNTER&lt;/P&gt;&lt;P&gt;     wemng TYPE weemg,       "QUANTITY OF GOODS RECIEVED&lt;/P&gt;&lt;P&gt;     END OF t_eket ,&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------" /&gt;&lt;P&gt;DATA DECLARATION FOR FINAL TABLE(FIRST&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SCREEN)----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       BEGIN OF t_tab,&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       name1 TYPE name1_gp,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       menge TYPE bstmg,&lt;/P&gt;&lt;P&gt;       etenr TYPE eeten,&lt;/P&gt;&lt;P&gt;       wemng TYPE weemg,&lt;/P&gt;&lt;P&gt;       c   TYPE i,&lt;/P&gt;&lt;P&gt;       END OF t_tab.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR FINAL TABLE (SECOND SCREEN)---&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_vendor,&lt;/P&gt;&lt;P&gt;       lifnr TYPE elifn,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       menge TYPE bstmg,&lt;/P&gt;&lt;P&gt;       wemng TYPE p,&lt;/P&gt;&lt;P&gt;       END OF t_vendor,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="----------" /&gt;DATA DECLARATION FOR EKBE--&lt;HR originaltext="------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       BEGIN OF t_ekbe,&lt;/P&gt;&lt;P&gt;       ebeln TYPE ebeln,&lt;/P&gt;&lt;P&gt;       ebelp TYPE ebelp,&lt;/P&gt;&lt;P&gt;       bwart TYPE bwart,&lt;/P&gt;&lt;P&gt;       menge TYPE menge_d,&lt;/P&gt;&lt;P&gt;       END OF t_ekbe.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;WORK AREA--&lt;HR originaltext="-------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA : wa_lfa1   TYPE  t_lfa1,&lt;/P&gt;&lt;P&gt;       wa_ekko   TYPE  t_ekko,&lt;/P&gt;&lt;P&gt;       wa_ekpo   TYPE  t_ekpo,&lt;/P&gt;&lt;P&gt;       wa_eket   TYPE  t_eket,&lt;/P&gt;&lt;P&gt;       wa_tab    TYPE  t_tab,&lt;/P&gt;&lt;P&gt;       wa_vendor TYPE   t_vendor,&lt;/P&gt;&lt;P&gt;       wa_ekbe   TYPE  t_ekbe,&lt;/P&gt;&lt;P&gt;       wa_grn    TYPE  t_ekbe,&lt;/P&gt;&lt;P&gt;       wa_full   TYPE  t_vendor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;INTERNAL TABLES--&lt;HR originaltext="-----------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;DATA:  it_lfa1   TYPE STANDARD TABLE OF t_lfa1   WITH HEADER LINE ,&lt;/P&gt;&lt;P&gt;       it_ekko   TYPE STANDARD TABLE OF t_ekko    WITH HEADER LINE ,&lt;/P&gt;&lt;P&gt;       it_ekpo   TYPE STANDARD TABLE OF t_ekpo   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_eket   TYPE STANDARD TABLE OF t_eket   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_tab    TYPE STANDARD TABLE OF t_tab    WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_vendor TYPE STANDARD TABLE OF t_vendor WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_ekbe   TYPE STANDARD TABLE OF t_ekbe   WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_grn   TYPE STANDARD TABLE OF t_ekbe     WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;       it_full  TYPE STANDARD TABLE OF  t_vendor  WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: vendor TYPE elifn.&lt;/P&gt;&lt;P&gt;DATA: qty TYPE p,&lt;/P&gt;&lt;P&gt;      c TYPE i.&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;SELECTION SCREEN--&lt;HR originaltext="-----------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK main WITH FRAME TITLE text-001.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS :  s_lifnr FOR lfa1-lifnr OBLIGATORY.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK main.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;AT SELECTION-SCREEN--&lt;HR originaltext="-----------------------" /&gt;&lt;P&gt;&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;  SELECT lifnr INTO (it_lfa1-lifnr) FROM lfa1 WHERE lifnr IN&lt;/P&gt;&lt;P&gt;s_lifnr.&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;    MESSAGE e001.&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;--&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DEL&gt;&lt;/P&gt;&lt;HR originaltext="--------------" /&gt;START-OF-SELECTION--&lt;HR originaltext="-------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&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; FETCH RECORDS FROM THE DATABASE INTO THE INTERNAL TABLE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_select_it_tab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PREPARE FIELDCATALOG FOR THE MAIN (1ST LIST) REPORT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_build_fieldcat USING  i_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DEFINE EVENT TABLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM build_eventcat USING i_eventcat.&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;DETERMINE THE SORTING SEQUENCE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM build_sort USING i_sortinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DISPLAY ALV GRID.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM zf_display_alv_list.&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;/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  ZF_SELECT_IT_TAB&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;*SELECTING DATA FROM IT_LFA1 TABLE&lt;/P&gt;&lt;P&gt;FORM zf_select_it_tab .&lt;/P&gt;&lt;P&gt;  SELECT lifnr&lt;/P&gt;&lt;P&gt;         name1&lt;/P&gt;&lt;P&gt;              INTO TABLE  it_lfa1&lt;/P&gt;&lt;P&gt;              FROM lfa1&lt;/P&gt;&lt;P&gt;              WHERE lifnr IN s_lifnr.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    SORT it_lfa1 BY lifnr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKKO TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_lfa1[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;           ebeln&lt;/P&gt;&lt;P&gt;           lifnr&lt;/P&gt;&lt;P&gt;                FROM ekko&lt;/P&gt;&lt;P&gt;                INTO  TABLE it_ekko&lt;/P&gt;&lt;P&gt;                FOR ALL ENTRIES IN it_lfa1&lt;/P&gt;&lt;P&gt;                WHERE lifnr = it_lfa1-lifnr.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT it_ekko BY ebeln.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKPO TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_ekko[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;           ebeln&lt;/P&gt;&lt;P&gt;           ebelp&lt;/P&gt;&lt;P&gt;           menge&lt;/P&gt;&lt;P&gt;                FROM ekpo&lt;/P&gt;&lt;P&gt;                INTO TABLE it_ekpo&lt;/P&gt;&lt;P&gt;                FOR ALL ENTRIES IN it_ekko&lt;/P&gt;&lt;P&gt;                WHERE ebeln = it_ekko-ebeln.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      SORT it_ekpo BY ebeln ebelp.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKET TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_ekpo[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;          ebeln&lt;/P&gt;&lt;P&gt;          ebelp&lt;/P&gt;&lt;P&gt;          etenr&lt;/P&gt;&lt;P&gt;          wemng&lt;/P&gt;&lt;P&gt;               FROM eket&lt;/P&gt;&lt;P&gt;               INTO TABLE it_eket&lt;/P&gt;&lt;P&gt;               FOR ALL ENTRIES IN it_ekpo&lt;/P&gt;&lt;P&gt;               WHERE ebeln = it_ekpo-ebeln&lt;/P&gt;&lt;P&gt;               AND   ebelp = it_ekpo-ebelp.&lt;/P&gt;&lt;P&gt;    SORT it_eket BY ebeln ebelp etenr.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*SELECTING DATA FROM EKBE TABLE&lt;/P&gt;&lt;P&gt;  IF NOT it_eket[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT&lt;/P&gt;&lt;P&gt;          ebeln&lt;/P&gt;&lt;P&gt;          ebelp&lt;/P&gt;&lt;P&gt;          bwart&lt;/P&gt;&lt;P&gt;          menge&lt;/P&gt;&lt;P&gt;               FROM ekbe&lt;/P&gt;&lt;P&gt;               INTO TABLE it_ekbe&lt;/P&gt;&lt;P&gt;               FOR ALL ENTRIES IN it_eket&lt;/P&gt;&lt;P&gt;               WHERE ebelp = it_eket-ebelp&lt;/P&gt;&lt;P&gt;               AND   ebeln = it_eket-ebeln&lt;/P&gt;&lt;P&gt;               AND   bwart = '101'.&lt;/P&gt;&lt;P&gt;  ENDIF.&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;THIS BLOCK MOVES THE  FIELDS FROM DIFFERENT           *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TABLES(EKKO,LFA1,EKPO,EKET) INTO A FINAL TABLE IT_TAB *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************&lt;/P&gt;&lt;P&gt;  CLEAR wa_tab.&lt;/P&gt;&lt;P&gt;  CLEAR it_tab.&lt;/P&gt;&lt;P&gt;  LOOP AT it_lfa1 INTO wa_lfa1.&lt;/P&gt;&lt;P&gt;    READ TABLE it_ekko INTO wa_ekko WITH KEY lifnr = wa_lfa1-lifnr&lt;/P&gt;&lt;P&gt;                                                   BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    READ TABLE it_lfa1 INTO wa_lfa1&lt;/P&gt;&lt;P&gt;    WITH KEY lifnr = wa_lfa1-lifnr&lt;/P&gt;&lt;P&gt;    BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      MOVE: wa_lfa1-name1 TO wa_tab-name1.&lt;/P&gt;&lt;P&gt;      MOVE: wa_lfa1-lifnr TO wa_tab-lifnr.&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;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Amber &lt;/P&gt;&lt;P&gt;Reward Points if helpful&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:23:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229822#M479624</guid>
      <dc:creator>former_member198270</dc:creator>
      <dc:date>2007-05-03T11:23:27Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229823#M479625</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Chris,&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;DATA:  BEGIN OF d_structure,                         "TO DEFINE WA CUM STRUCTURE,FOR THIS METHOD WE USE DATA&lt;/P&gt;&lt;P&gt;       v_lights(2) TYPE c,&lt;/P&gt;&lt;P&gt;       v_chkbox(1) TYPE c,&lt;/P&gt;&lt;P&gt;       v_box(1) TYPE c,&lt;/P&gt;&lt;P&gt;       matnr LIKE mara-matnr,                        "MATERIAL NO&lt;/P&gt;&lt;P&gt;       werks LIKE marc-werks,                        "PLANT&lt;/P&gt;&lt;P&gt;       lgort LIKE mard-lgort,                        "STORAGE LOCATION&lt;/P&gt;&lt;P&gt;       labst LIKE mard-labst,                        "QUANTITY&lt;/P&gt;&lt;P&gt;       maktx LIKE makt-maktx,                        "MATERIAL DESCRIPTION&lt;/P&gt;&lt;P&gt;       meins LIKE mara-meins,                        "UNIT OF MEASUREMENT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       END OF d_structure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA : IT_MATSTOCK TYPE STANDARD TABLE OF  D_STRUCTURE   WITH HEADER LINE.  " TO DEFINE INTERNAL TABLE OF STRUCTURE SAME AS  D_STRUCTURE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA : D_FIELD TYPE D_STRUCTURE.                                            " TO DEFINE WA OF TYPE D_STRUCTURE(IN THIS METHD WE DECLARE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                                                           " STRUCTURE BY TYPES )&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;P&gt;DATA: it_matstock LIKE  d_structure OCCURS 0 WITH HEADER LINE.             " INTERNAL TABLE SAME AS WA CUM STRUCTURE&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;DATA DEC FOR VARIANT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: it_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA DEC FOR SORTING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: it_sortinfo TYPE slis_t_sortinfo_alv.&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;DATA DEC FOR FIELDCATLOG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: it_fieldcat TYPE slis_t_fieldcat_alv.&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;DATA DEC FOR EVENT CATALOG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: I_EVENTCAT TYPE SLIS_T_EVENT.&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;DATA DEC  FOR LAYOUT DEFINITION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: it_layout TYPE slis_layout_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA DEC FOR PROGRAMNAME&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: v_progname LIKE sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DATA DEC FOR GRID TITLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: v_gridtitle TYPE lvc_title.&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;DATA DEC FOR LIST HEADER&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: it_listheader TYPE slis_t_listheader.&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*####################################SELECTION SCREEN#########################################&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF SCREEN 123 AS WINDOW   TITLE text-001.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-002.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS : s_matnr FOR it_matstock-matnr.&lt;/P&gt;&lt;P&gt;PARAMETERS : p_var LIKE disvariant-variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK bl1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF SCREEN 123.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL SCREEN 123.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*###########################INITIALIZATION EVENT ###################################################&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DISPALY DEFAULT VARIANT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM default_variant.&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;PROVIDING F4 HELP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;PERFORM variant_f4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*##############################VALIDATION##############################&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;  SELECT matnr INTO it_matstock-matnr FROM mara 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;    MESSAGE e001.&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;*###########################LOGIC#############################&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*PREPARAING FIELDCATALOG FOR THE MAIN(BASIC LIST) REPORT&lt;/P&gt;&lt;P&gt;  PERFORM build_fieldcatlog USING it_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FETCH RECORDS FROM DATABASE TABLE TO INTERNAL TABLE&lt;/P&gt;&lt;P&gt;  PERFORM select_mat_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*MODIFY THE RECORDS IN INTERNAL TABLE FOR ICONS , SYMBOL &amp;amp; TRAFFIC LIGHTS&lt;/P&gt;&lt;P&gt;  PERFORM modify_it_matstock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DETERMINE LAYOUT OF THE ALV DISPLAY&lt;/P&gt;&lt;P&gt;  PERFORM build_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*SORTING SEQUENCE&lt;/P&gt;&lt;P&gt;  PERFORM build_sort USING it_sortinfo.&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;DEFINE THE EVENT TABLE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; PERFORM BUILD_EVENTCAT USING I_EVENTCAT.&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;BUILD THE LISTHEADER FOR THE TOP OF PAGE EVENT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM build_listheader USING it_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TOP OF PAGE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*INITIALIZE THE GRID TITLE&lt;/P&gt;&lt;P&gt;  PERFORM build_grid_title.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DISPLAY ALV GRID&lt;/P&gt;&lt;P&gt;  PERFORM alv_display_grid.&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********&lt;STRONG&gt;READING DATA FROM INTERNAL TABLE&lt;/STRONG&gt;****************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT it_matstock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE:/10 it_matstock-matnr , 30 it_matstock-werks , 40 it_matstock-lgort , 60 it_matstock-labst  ,90 it_matstock-meins, 110 it_matstock-maktx&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;*#############################START###################################################&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_FIELDCATLOG&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_FIELDCAT  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_fieldcatlog  USING    p_it_fieldcat TYPE slis_t_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: itab_fieldcat TYPE slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR LIGHTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos     = '1'.                            " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname   = 'V_LIGHTS'.                     " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname     = 'It_matstock'.                  " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize   = 'C410'.                         " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l   = 'Category'.                     " LONG TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m   = 'Category'.                     " MEDIUM TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s   = 'Category'.                     " SHORT TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen   = 7.                              " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR CHECK BOX&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos     = '2'.                            " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname   = 'V_CHKBOX'.                     " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname     = 'It_matstock'.                  " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; itab_fieldcat-emphasize   = 'C410'.                         " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  itab_fieldcat-seltext_l   = 'CHECKBOX'.                     " LONG TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m   = 'CHKBOX'.                     " MEDIUM TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s   = 'CHKBOX'.                     " SHORT TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-checkbox = 'X'.                             " CHECK BOX&lt;/P&gt;&lt;P&gt;  itab_fieldcat-edit = 'X'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen   = 2.                              " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*FOR MATERIAL NO (IT_MATSTOCK-MATNR)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '3'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'MATNR'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize = 'C410'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'MATERIAL NO'.            " LONG TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m = 'MATNO'.                  " MEDIUM TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s = 'MATNO'.                  " SHORT TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-hotspot = 'X'.                        " HOT SPOT&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 20.                       " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&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;FOR PLANT (IT_MATSTOCK-WERKS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '4'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'WERKS'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize = 'C510'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'PLANT'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m = 'PLANT'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s = 'PLANT'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 10.                        " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&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;FOR STORAGE LOCATION (IT_MATSTOCK-LGORT)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '5'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'LGORT'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize = 'C610'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'STORAGE LOCATION'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m = 'STORAGE LOC'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s = 'SLOC'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 10.                        " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&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;FOR QUANTITY (IT_MATSTOCK-LABST)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '6'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'LABST'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize = 'C710'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'QUANTITY'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m = 'QUANTITY'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s = 'QUAN'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 10.                        " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&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;FOR UNIT OF MEASUREMENT (IT_MATSTOCK-MEINS)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '7'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'MEINS'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-emphasize = 'C110'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'UNIT OF MEASURE'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m = 'UNIT OF MSURE'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s = 'UOM'.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 10.                        " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FOR MATERIAL DESCRIPTION (IT_MATSTOCK-MAKTX)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR itab_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  itab_fieldcat-col_pos = '8'.                        " POSITION OF THE COLUMN.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-fieldname = 'MAKTX'.                  " FIELD FOR WHICH CATALOG ID FILLED.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-tabname = 'IT_MATSTOCK'.              " INTERNAL TABLE TO WHICH THE FIELD BELONGS TO.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; itab_fieldcat-emphasize = 'C410'.                   " COLOR OF THIS COLUMN.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  itab_fieldcat-seltext_l = 'MATERIAL DESCRIPTION'.   " LONG TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_m   = 'MAT DESCRIP'.          " MEDIUM TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-seltext_s   = 'MDESCRIP'.             " SHORT TEXT FOR HEADER.&lt;/P&gt;&lt;P&gt;  itab_fieldcat-edit = 'X'.                           " TO MAKING FIELD EDITABLE&lt;/P&gt;&lt;P&gt;  itab_fieldcat-outputlen = 40.                        " TO DEFINE OUTPUT LENGTH OF THE COLUMN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND itab_fieldcat TO p_it_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_FIELDCATLOG&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*################################END######################################################&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*###############################START######################################################&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  SELECT_MAT_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 select_mat_data .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH it_matstock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT a&lt;SUB&gt;matnr a&lt;/SUB&gt;meins b&lt;SUB&gt;werks c&lt;/SUB&gt;lgort c&lt;SUB&gt;labst d&lt;/SUB&gt;maktx INTO CORRESPONDING FIELDS OF d_structure FROM mara AS a&lt;/P&gt;&lt;P&gt;                                                                           INNER JOIN makt AS d ON&lt;/P&gt;&lt;P&gt;                                                                           a&lt;SUB&gt;matnr = d&lt;/SUB&gt;matnr&lt;/P&gt;&lt;P&gt;                                                                           INNER JOIN marc AS b ON&lt;/P&gt;&lt;P&gt;                                                                           a&lt;SUB&gt;matnr = b&lt;/SUB&gt;matnr&lt;/P&gt;&lt;P&gt;                                                                           INNER JOIN mard AS c ON&lt;/P&gt;&lt;P&gt;                                                                           b&lt;SUB&gt;matnr = c&lt;/SUB&gt;matnr AND&lt;/P&gt;&lt;P&gt;                                                                           b&lt;SUB&gt;werks = c&lt;/SUB&gt;werks&lt;/P&gt;&lt;P&gt;                                                                           WHERE a~matnr IN s_matnr.   "POPULATING DATA IN TO WA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND d_structure TO it_matstock .  "APPENDING DATA INTO INTERNAL TABLE FROM WA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECT_MAT_DATA&lt;/P&gt;&lt;P&gt;*#################################END###################################################&lt;/P&gt;&lt;P&gt;*###############################START###########################################&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  MODIFY_IT_MATSTOCK&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 modify_it_matstock .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT  it_matstock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF it_matstock-labst &amp;lt; 100 OR it_matstock-labst &amp;gt; 50 .&lt;/P&gt;&lt;P&gt;      it_matstock-v_lights = '3'.&lt;/P&gt;&lt;P&gt;      MODIFY it_matstock TRANSPORTING v_lights.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF  it_matstock-labst &amp;lt; 50  OR it_matstock-labst &amp;gt; 20.&lt;/P&gt;&lt;P&gt;      it_matstock-v_lights = '2'.&lt;/P&gt;&lt;P&gt;      MODIFY it_matstock TRANSPORTING v_lights.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSEIF it_matstock-labst &amp;lt; 10 .&lt;/P&gt;&lt;P&gt;      it_matstock-labst = '1'.&lt;/P&gt;&lt;P&gt;      MODIFY it_matstock TRANSPORTING v_lights.&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;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " MODIFY_IT_MATSTOCK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*################################END#####################################################&lt;/P&gt;&lt;P&gt;*#############################START##########################################################&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_GRID_TITLE&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_grid_title .&lt;/P&gt;&lt;P&gt;  v_gridtitle = 'MATERIAL STOCK DETAILS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_GRID_TITLE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*###############################END#########################################################&lt;/P&gt;&lt;P&gt;*#################################START#########################################################&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_LISTHEADER&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_LISTHEADER  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_listheader  USING    p_it_listheader TYPE slis_t_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: itab_listheader TYPE slis_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH p_it_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR itab_listheader.&lt;/P&gt;&lt;P&gt;  itab_listheader-typ = 'H'.&lt;/P&gt;&lt;P&gt;  itab_listheader-info = text-003.&lt;/P&gt;&lt;P&gt;  APPEND itab_listheader TO p_it_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR itab_listheader.&lt;/P&gt;&lt;P&gt;  itab_listheader-typ = 'H'.&lt;/P&gt;&lt;P&gt;  itab_listheader-info = text-004.&lt;/P&gt;&lt;P&gt;  APPEND itab_listheader TO p_it_listheader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_LISTHEADER&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*############################END############################################&lt;/P&gt;&lt;P&gt;*##############################START##########################################&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  ALV_DISPLAY_GRID&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 alv_display_grid .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_INTERFACE_CHECK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BYPASSING_BUFFER                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BUFFER_ACTIVE                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     i_callback_program                = 'Z8HG_ALV1'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_PF_STATUS_SET          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_USER_COMMAND           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_TOP_OF_PAGE            = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_HTML_TOP_OF_PAGE       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_HTML_END_OF_LIST       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     i_structure_name                  = 'D_STRUCTURE'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BACKGROUND_ID                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    i_grid_title                      = v_gridtitle&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_GRID_SETTINGS                   =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   is_layout                         = it_layout&lt;/P&gt;&lt;P&gt;     it_fieldcat                       = it_fieldcat&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EXCLUDING                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_SPECIAL_GROUPS                 =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   it_sort                           = it_sortinfo&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_FILTER                         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_SEL_HIDE                       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   i_default                         = 'X'&lt;/P&gt;&lt;P&gt;   i_save                            = 'A'&lt;/P&gt;&lt;P&gt;   is_variant                        = it_variant&lt;/P&gt;&lt;P&gt;   IT_EVENTS                         = I_EVENTCAT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EVENT_EXIT                     =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_PRINT                          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_REPREP_ID                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_START_COLUMN             = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_START_LINE               = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_END_COLUMN               = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_END_LINE                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_ALV_GRAPHICS                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_HYPERLINK                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_ADD_FIELDCAT                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EXCEPT_QINFO                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_HTML_HEIGHT_TOP                 =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_HTML_HEIGHT_END                 =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  E_EXIT_CAUSED_BY_CALLER           =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ES_EXIT_CAUSED_BY_USER            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab                          = it_matstock&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;    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.                    " ALV_DISPLAY_GRID&lt;/P&gt;&lt;P&gt;*##############################END#############################################################&lt;/P&gt;&lt;P&gt;*#################################START##########################################################&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_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 build_layout .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_layout-zebra = 'X'.&lt;/P&gt;&lt;P&gt;  it_layout-lights_fieldname = 'V_LIGHTS'.&lt;/P&gt;&lt;P&gt;  it_layout-lights_tabname = 'IT_MATSTOCK'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_layout-box_fieldname = 'V_BOX'.&lt;/P&gt;&lt;P&gt;  it_layout-box_tabname = 'IT_MATSTOCK'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*IT_LAYOUT-EDIT = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*IT_LAYOUT-EDIT_MODE = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_LAYOUT&lt;/P&gt;&lt;P&gt;*################################END#################################################&lt;/P&gt;&lt;P&gt;*################################START#################################################&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  DEFAULT_VARIANT&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 default_variant .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_variant-report = 'Z8HG_ALV1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_save        = 'X'                   " 'A' , 'X' , 'U' , ' '&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      cs_variant    = it_variant&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      wrong_input   = 1&lt;/P&gt;&lt;P&gt;      not_found     = 2&lt;/P&gt;&lt;P&gt;      program_error = 3&lt;/P&gt;&lt;P&gt;      OTHERS        = 4.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    p_var = it_variant-variant.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DEFAULT_VARIANT&lt;/P&gt;&lt;P&gt;*##############################END############################################&lt;/P&gt;&lt;P&gt;*#############################START#############################################&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  VARIANT_F4&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 variant_f4 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: i_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      is_variant                = it_variant&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_TABNAME_HEADER          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_TABNAME_ITEM            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_DEFAULT_FIELDCAT       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     i_save                    = 'A'&lt;/P&gt;&lt;P&gt;     i_display_via_grid        = 'X'&lt;/P&gt;&lt;P&gt;   IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  E_EXIT                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     es_variant                = i_variant&lt;/P&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;P&gt;   not_found                 = 1&lt;/P&gt;&lt;P&gt;   program_error             = 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;P&gt;    p_var = i_variant-variant.&lt;/P&gt;&lt;P&gt;    CLEAR it_variant.&lt;/P&gt;&lt;P&gt;    MOVE p_var TO it_variant-variant.&lt;/P&gt;&lt;P&gt;    MOVE v_progname TO it_variant-report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;&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;ENDFORM.                    " VARIANT_F4&lt;/P&gt;&lt;P&gt;*#############################END#############################################&lt;/P&gt;&lt;P&gt;*###############################START###########################################&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  TOP_OF_PAGE&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 top_of_page .&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      it_list_commentary       = it_listheader&lt;/P&gt;&lt;P&gt;     i_logo                   = 'ENJOYSAP_LOGO'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_END_OF_LIST_GRID       =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;ENDFORM.                    " TOP_OF_PAGE&lt;/P&gt;&lt;P&gt;*###########################END###############################################&lt;/P&gt;&lt;P&gt;*############################START##############################################&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_SORT&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_I_SORTINFO  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_sort  USING    p_i_sortinfo TYPE slis_t_sortinfo_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: i_sortinfo TYPE slis_sortinfo_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR i_sortinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_sortinfo-spos = '1'.&lt;/P&gt;&lt;P&gt;  i_sortinfo-fieldname = 'MATNR'.&lt;/P&gt;&lt;P&gt;  i_sortinfo-tabname = 'IT_MATSTOCK'.&lt;/P&gt;&lt;P&gt;  i_sortinfo-DOWN = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND i_sortinfo TO p_i_sortinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " BUILD_SORT&lt;/P&gt;&lt;P&gt;*#############################END#############################################&lt;/P&gt;&lt;P&gt;*#########################START#################################################&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_EVENTCAT&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_I_EVENTCAT  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_EVENTCAT  using    p_i_eventcat TYPE SLIS_T_EVENT.&lt;/P&gt;&lt;P&gt;DATA: I_EVENT TYPE SLIS_ALV_EVENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;/P&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;P&gt;   I_LIST_TYPE           = 0&lt;/P&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   ET_EVENTS             = P_I_EVENTCAT&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  LIST_TYPE_WRONG       = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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 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;CLEAR I_EVENT.&lt;/P&gt;&lt;P&gt;read table p_i_eventcat with key name = slis_ev_top_of_page into I_event.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    move 'TOP_OF_PAGE' to I_event-form.&lt;/P&gt;&lt;P&gt;    append I_event to p_i_eventcat.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear I_event.&lt;/P&gt;&lt;P&gt;  read table p_i_eventcat with key name = slis_ev_user_command into I_event.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    move 'USER_COMMAND' to I_event-form.&lt;/P&gt;&lt;P&gt;    append I_event to p_i_eventcat.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                    " BUILD_EVENTCAT&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if helpful.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Hemant&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:27:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229823#M479625</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:27:46Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229824#M479626</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Chris,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a simple SAP ALV Demo program....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You will also get it thru  &lt;STRONG&gt;demo&lt;/STRONG&gt;alv* and then press f4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/SAPQUERY/DEMO_ALV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jayant &lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;&lt;/P&gt;&lt;P&gt;Please Award if Helpful&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:28:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229824#M479626</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:28:17Z</dc:date>
    </item>
    <item>
      <title>Re: ALV Grid</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229825#M479627</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Chris &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check this program it will be more usefull for u &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  ZALVGRID.

TABLES :mara .

TYPE-POOLS : slis.
DATA: gs_layout TYPE slis_layout_alv,
ct_fieldcat TYPE slis_t_fieldcat_alv,
g_repid LIKE sy-repid,
temp_cat TYPE slis_fieldcat_alv,
header_alv TYPE slis_t_listheader,
header_alv_wa TYPE slis_listheader.


DATA : BEGIN OF it OCCURS 0,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
maktx LIKE makt-maktx,
mbrsh LIKE mara-mbrsh,
matkl LIKE mara-matkl,
END OF it.

SELECT-OPTIONS: p_matnr FOR mara-matnr.

INITIALIZATION.
g_repid = sy-repid.


START-OF-SELECTION.

SELECT
a~matnr a~mtart a~mbrsh a~matkl b~maktx
FROM mara AS a
JOIN makt AS b ON a~matnr = b~matnr
INTO CORRESPONDING FIELDS OF TABLE it
WHERE a~matnr IN p_matnr.


END-OF-SELECTION.

PERFORM field_catalog.
PERFORM change_catalog.
PERFORM alv_display.

*&amp;amp;---------------------------------------------------------------------
*&amp;amp; Form field_catalog
*&amp;amp;---------------------------------------------------------------------

FORM field_catalog .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING
i_program_name = g_repid
i_internal_tabname = 'IT'
i_inclname = g_repid
CHANGING
ct_fieldcat = ct_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

ENDFORM. " field_catalog

*&amp;amp;---------------------------------------------------------------------
*&amp;amp; Form change_catalog
*&amp;amp;---------------------------------------------------------------------

FORM change_catalog .

LOOP AT ct_fieldcat INTO temp_cat.
temp_cat-key = ' '.
CASE temp_cat-fieldname.
WHEN 'MATNR'.
temp_cat-seltext_m = 'Material #'.
temp_cat-ddictxt = 'M'.
temp_cat-outputlen = 10.
WHEN 'MAKTX'.
temp_cat-seltext_m = 'Material Desc'.
temp_cat-ddictxt = 'M'.
temp_cat-outputlen = 40.
WHEN OTHERS.
CONTINUE.
ENDCASE.
MODIFY ct_fieldcat FROM temp_cat.
ENDLOOP.
gs_layout-zebra = 'X'.

ENDFORM. " change_catalog

*&amp;amp;---------------------------------------------------------------------
*&amp;amp; Form alv_display
*&amp;amp;---------------------------------------------------------------------

FORM alv_display .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = ct_fieldcat
i_save = 'A'
TABLES
t_outtab = it
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM. " alv_display&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rewards if helpfull&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Pavan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 May 2007 11:31:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-grid/m-p/2229825#M479627</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-05-03T11:31:02Z</dc:date>
    </item>
  </channel>
</rss>

