<?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 SAMPLE CODE. in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468301#M554527</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  data g_keyinfo type SLIS_KEYINFO_ALV.&lt;/P&gt;&lt;P&gt;  g_keyinfo-HEADER01 = 'VBELV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-ITEM01 = 'VBELV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-HEADER02 = 'POSNV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-ITEM02 = 'POSNV'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_interface_check              = 'I'&lt;/P&gt;&lt;P&gt;      i_callback_program             = g_repid&lt;/P&gt;&lt;P&gt;      i_callback_pf_status_set       = 'SET_STATUS'&lt;/P&gt;&lt;P&gt;      i_callback_user_command        = 'USER_COMMAND'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     is_layout                      = gs_layout&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      it_fieldcat                    = t_fieldcat[]&lt;/P&gt;&lt;P&gt;     i_default                      = ' '&lt;/P&gt;&lt;P&gt;      i_save                         = 'A'&lt;/P&gt;&lt;P&gt;      i_tabname_header               = 'T_HEAD'&lt;/P&gt;&lt;P&gt;      i_tabname_item                 = 'T_OUTPUT'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_structure_name_header        = v_headers_table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_structure_name_item          = v_items_table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      is_keyinfo                     = g_keyinfo&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_bypassing_buffer             = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab_header                = t_head[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     t_outtab_item                  = i_result&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      t_outtab_item                  = t_output[]&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;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 02 Jul 2007 06:29:22 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-07-02T06:29:22Z</dc:date>
    <item>
      <title>ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468298#M554524</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI FRIENDS,&lt;/P&gt;&lt;P&gt;                 I am new to alv  reports.can anyone give me some basic sample codes of alv hierarchial reports.please mail to my personal mail id simhadrimahesh@gmail.com.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                          points will be awarded.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:21:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468298#M554524</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468299#M554525</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;Just refer to the below link&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap-function.htm" target="test_blank"&gt;http://www.sap-img.com/abap-function.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward points if useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Atish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:26:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468299#M554525</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:26:58Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468300#M554526</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;      go through the following example----&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  GLOBAL TYPE DECLERATION&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;TYPE-POOLS : SLIS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                D A T A   D E C L E R A T I O N                      &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES : BEGIN OF STRUCT,&lt;/P&gt;&lt;P&gt;        LV_SYMB(4) TYPE C,&lt;/P&gt;&lt;P&gt;        LV_ICON(4) TYPE C,&lt;/P&gt;&lt;P&gt;        LV_BOX(1)  TYPE C,&lt;/P&gt;&lt;P&gt;        LV_LIGHTS(2) TYPE c,&lt;/P&gt;&lt;P&gt;        MATNR LIKE MARA-MATNR, "  MATERIAL NUMBER&lt;/P&gt;&lt;P&gt;        MAKTX LIKE MAKT-MAKTX, "  MATERIAL DESCRIPTION&lt;/P&gt;&lt;P&gt;        LONG  LIKE TLINE,&lt;/P&gt;&lt;P&gt;        L_TEXT(132),&lt;/P&gt;&lt;P&gt;        END OF STRUCT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-store report name&lt;/DEL&gt;--&lt;/P&gt;&lt;P&gt;DATA: LV_PROGNAME LIKE SY-REPID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-header title in grid&lt;/DEL&gt;---&lt;/P&gt;&lt;P&gt;DATA: LV_GRIDTITLE TYPE LVC_TITLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;declare variable&lt;/DEL&gt;--&lt;/P&gt;&lt;P&gt;DATA: LV_MATNR TYPE MARA-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;variable for tdname&lt;/DEL&gt;--&lt;/P&gt;&lt;P&gt;DATA: LV_NAME1 LIKE THEAD-TDNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          I N T E R N A L    T A B L E                               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-declare tline internal table for read text&lt;/DEL&gt;---&lt;/P&gt;&lt;P&gt;DATA: T_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA : WA LIKE TLINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-for layout&lt;/DEL&gt;--&lt;/P&gt;&lt;P&gt;DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-for struct&lt;/DEL&gt;--&lt;/P&gt;&lt;P&gt;DATA : I_TAB TYPE STANDARD TABLE OF STRUCT WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;DEL&gt;-for fieldcat&lt;/DEL&gt;-&lt;/P&gt;&lt;P&gt;DATA : I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.&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;/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;        S E L E C T I O N      S C R E E N          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS : S_MATNR FOR I_TAB-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     INITIALIZATION                                  &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;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LV_PROGNAME = SY-REPID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   V A L I D A T I O N&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;PERFORM SELECTION_SCREEN_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               S T A R T - O F - S E L E C T I O N&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;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; PREPARE FIELDCATALOG FOR THE MAIN (BASIC LIST) REPORT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM Z8_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;PERFORM THE DATA FETCHING FROM MARA,MARC,MARD,MAKT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM FETCHING_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DETERMINE THE LAYOUT OF THE ALV DISPLAY.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM Z8VIJAY_BUILD_LAYOUT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; INITIALIZE THE GRID TITLE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM Z8VIJAY_BUILD_GRID_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; DISPLAY ALV GRID.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   PERFORM Z8VIJAY_DISPLAY_ALV_GRID.&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  SELECTION_SCREEN_ALV&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 SELECTION_SCREEN_ALV .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; SELECT MATNR INTO LV_MATNR FROM MARA WHERE MATNR IN S_MATNR.&lt;/P&gt;&lt;P&gt; EXIT.&lt;/P&gt;&lt;P&gt; ENDSELECT.&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 E000.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SELECTION_SCREEN_ALV&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  Z8_BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     --&amp;gt;P_I_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 Z8_BUILD_FIELDCAT  USING    P_I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR WA_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-COL_POS     = '1'.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-FIELDNAME   = 'V_BOX'.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-TABNAME     = 'I_TAB'.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-OUTPUTLEN   =  7.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-SELTEXT_S   = 'CHK'.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-CHECKBOX    = 'X'.&lt;/P&gt;&lt;P&gt;  WA_FIELDCAT-EDIT        = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND WA_FIELDCAT TO P_I_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR WA_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-COL_POS     = '2' .&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-FIELDNAME   = 'MATNR'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-TABNAME     = 'I_TAB'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-REF_TABNAME = 'MARA'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-OUTPUTLEN   =  20.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_S   = 'MATERIAL NO'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND WA_FIELDCAT TO P_I_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-COL_POS     = '3'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-FIELDNAME   = 'MAKTX'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-TABNAME     = 'I_TAB'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-REF_TABNAME = 'MAKT'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-EMPHASIZE   = 'C310'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-OUTPUTLEN   =  20.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_L   = 'MATERIAL DESCRIPTION'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_M   = 'MATERIAL DESCRIPTION'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_S   = 'MATERIAL DESCRIPTION'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND WA_FIELDCAT TO P_I_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-COL_POS     = '4'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-FIELDNAME   = 'LONG'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-TABNAME     = 'I_TAB'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-EMPHASIZE   = 'C310'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-OUTPUTLEN   =  20.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_L   = 'LONGTEXT'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_M   = 'LONGTEXT'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-SELTEXT_S   = 'LONGTEXT'.&lt;/P&gt;&lt;P&gt;   WA_FIELDCAT-EDIT        = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND WA_FIELDCAT TO P_I_FIELDCAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Z8_BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  Z8VIJAY_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 Z8VIJAY_BUILD_LAYOUT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_layout-zebra = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_layout-totals_text = 'Total'(a00).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_layout-subtotals_text = 'SubTotal'(a01).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_layout-lights_fieldname = 'V_LIGHTS'.&lt;/P&gt;&lt;P&gt;  i_layout-lights_tabname   = 'I_TAB'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  i_layout-box_fieldname = 'V_BOX'.&lt;/P&gt;&lt;P&gt;  i_layout-box_tabname = 'I_TAB'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Z8VIJAY_BUILD_LAYOUT&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  FETCHING_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 FETCHING_DATA .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT&lt;/P&gt;&lt;P&gt;      A~MATNR&lt;/P&gt;&lt;P&gt;      B~MAKTX&lt;/P&gt;&lt;P&gt;             INTO CORRESPONDING FIELDS OF TABLE I_TAB&lt;/P&gt;&lt;P&gt;             FROM MARA&lt;/P&gt;&lt;P&gt;             AS A INNER JOIN MAKT AS B&lt;/P&gt;&lt;P&gt;             ON A&lt;SUB&gt;MATNR = B&lt;/SUB&gt;MATNR&lt;/P&gt;&lt;P&gt;             WHERE A~MATNR IN S_MATNR.&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;          WRITE:/5 'MATERIAL NUMBER DOES NOT EXIST'.&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;ENDFORM.                    " FETCHING_DATA&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  Z8VIJAY_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 Z8VIJAY_BUILD_GRID_TITLE .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LV_GRIDTITLE = 'ALV REPORT FOR MATERIAL NUMBER AND LONGTEXT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Z8VIJAY_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;&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  Z8VIJAY_DISPLAY_ALV_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 Z8VIJAY_DISPLAY_ALV_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                = LV_PROGNAME&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                  = 'STRUCT'&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                      = LV_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                         = I_LAYOUT&lt;/P&gt;&lt;P&gt;    IT_FIELDCAT                       = I_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;LI level="1" type="ul"&gt;&lt;P&gt;  IT_SORT                           =&lt;/P&gt;&lt;/LI&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;LI level="1" type="ul"&gt;&lt;P&gt;  I_DEFAULT                         = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    I_SAVE                            = 'A'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_VARIANT                        =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EVENTS                         =&lt;/P&gt;&lt;/LI&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                          = I_TAB&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;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;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Z8VIJAY_DISPLAY_ALV_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;****do rewards if usefull&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:28:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468300#M554526</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:28:36Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468301#M554527</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  data g_keyinfo type SLIS_KEYINFO_ALV.&lt;/P&gt;&lt;P&gt;  g_keyinfo-HEADER01 = 'VBELV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-ITEM01 = 'VBELV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-HEADER02 = 'POSNV'.&lt;/P&gt;&lt;P&gt;  g_keyinfo-ITEM02 = 'POSNV'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_interface_check              = 'I'&lt;/P&gt;&lt;P&gt;      i_callback_program             = g_repid&lt;/P&gt;&lt;P&gt;      i_callback_pf_status_set       = 'SET_STATUS'&lt;/P&gt;&lt;P&gt;      i_callback_user_command        = 'USER_COMMAND'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     is_layout                      = gs_layout&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      it_fieldcat                    = t_fieldcat[]&lt;/P&gt;&lt;P&gt;     i_default                      = ' '&lt;/P&gt;&lt;P&gt;      i_save                         = 'A'&lt;/P&gt;&lt;P&gt;      i_tabname_header               = 'T_HEAD'&lt;/P&gt;&lt;P&gt;      i_tabname_item                 = 'T_OUTPUT'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_structure_name_header        = v_headers_table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_structure_name_item          = v_items_table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      is_keyinfo                     = g_keyinfo&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_bypassing_buffer             = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab_header                = t_head[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     t_outtab_item                  = i_result&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      t_outtab_item                  = t_output[]&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;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:29:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468301#M554527</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:29:22Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468302#M554528</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mahesh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had forwarded you some documents on alv pzl check it outand here are some sample reports on alv&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;Simple alv report&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt; TABLES:     ekko.

type-pools: slis.                                 "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
 ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  statu TYPE ekpo-statu,
  aedat TYPE ekpo-aedat,
  matnr TYPE ekpo-matnr,
  menge TYPE ekpo-menge,
  meins TYPE ekpo-meins,
  netpr TYPE ekpo-netpr,
  peinh TYPE ekpo-peinh,
 END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
      wa_ekko TYPE t_ekko.

*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
      gd_tab_group type slis_t_sp_group_alv,
      gd_layout    type slis_layout_alv,
      gd_repid     like sy-repid,
      gt_events     type slis_t_event,
      gd_prntparams type slis_print_alv.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
perform display_alv_report.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
form build_fieldcatalog.

* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you  more control of the final product.

* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
*               I.e. Field type may be required in-order for
*                    the 'TOTAL' function to work.

  fieldcatalog-fieldname   = 'EBELN'.
  fieldcatalog-seltext_m   = 'Purchase Order'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  fieldcatalog-emphasize   = 'X'.
  fieldcatalog-key         = 'X'.
*  fieldcatalog-do_sum      = 'X'.
*  fieldcatalog-no_zero     = 'X'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'EBELP'.
  fieldcatalog-seltext_m   = 'PO Item'.
  fieldcatalog-col_pos     = 1.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'STATU'.
  fieldcatalog-seltext_m   = 'Status'.
  fieldcatalog-col_pos     = 2.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'AEDAT'.
  fieldcatalog-seltext_m   = 'Item change date'.
  fieldcatalog-col_pos     = 3.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MATNR'.
  fieldcatalog-seltext_m   = 'Material Number'.
  fieldcatalog-col_pos     = 4.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MENGE'.
  fieldcatalog-seltext_m   = 'PO quantity'.
  fieldcatalog-col_pos     = 5.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MEINS'.
  fieldcatalog-seltext_m   = 'Order Unit'.
  fieldcatalog-col_pos     = 6.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'NETPR'.
  fieldcatalog-seltext_m   = 'Net Price'.
  fieldcatalog-col_pos     = 7.
  fieldcatalog-outputlen   = 15.
  fieldcatalog-datatype     = 'CURR'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'PEINH'.
  fieldcatalog-seltext_m   = 'Price Unit'.
  fieldcatalog-col_pos     = 8.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.
endform.                    " BUILD_FIELDCATALOG


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
form build_layout.
  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text       = 'Totals'(201).
*  gd_layout-totals_only        = 'X'.
*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
*                                         "click(press f2)
*  gd_layout-zebra             = 'X'.
*  gd_layout-group_change_edit = 'X'.
*  gd_layout-header_text       = 'helllllo'.
endform.                    " BUILD_LAYOUT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_ALV_REPORT
*&amp;amp;---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
form display_alv_report.
  gd_repid = sy-repid.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program      = gd_repid
            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
            i_callback_user_command = 'USER_COMMAND'
*            i_grid_title           = outtext
            is_layout               = gd_layout
            it_fieldcat             = fieldcatalog[]
*            it_special_groups       = gd_tabgroup
            it_events               = gt_events
            is_print                = gd_prntparams
            i_save                  = 'X'
*            is_variant              = z_template
       tables
            t_outtab                = it_ekko
       exceptions
            program_error           = 1
            others                  = 2.
  if sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
endform.                    " DISPLAY_ALV_REPORT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DATA_RETRIEVAL
*&amp;amp;---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
 up to 10 rows
  from ekpo
  into table it_ekko.




endform.                    " DATA_RETRIEVAL


*-------------------------------------------------------------------*
* Form  TOP-OF-PAGE                                                 *
*-------------------------------------------------------------------*
* ALV Report Header                                                 *
*-------------------------------------------------------------------*
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
      wa_header type slis_listheader,
      t_line like wa_header-info,
      ld_lines type i,
      ld_linesc(10) type c.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'EKKO Table Report'.
  append wa_header to t_header.
  clear wa_header.

* Date
  wa_header-typ  = 'S'.
  wa_header-key = 'Date: '.
  CONCATENATE  sy-datum+6(2) '.'
               sy-datum+4(2) '.'
               sy-datum(4) INTO wa_header-info.   "todays date
  append wa_header to t_header.
  clear: wa_header.

* Total No. of Records Selected
  describe table it_ekko lines ld_lines.
  ld_linesc = ld_lines.
  concatenate 'Total No. of Records Selected: ' ld_linesc
                    into t_line separated by space.
  wa_header-typ  = 'A'.
  wa_header-info = t_line.
  append wa_header to t_header.
  clear: wa_header, t_line.

  call function 'REUSE_ALV_COMMENTARY_WRITE'
       exporting
            it_list_commentary = t_header.
*            i_logo             = 'Z_LOGO'.
endform.


*------------------------------------------------------------------*
*       FORM USER_COMMAND                                          *
*------------------------------------------------------------------*
*       --&amp;gt; R_UCOMM                                                *
*       --&amp;gt; RS_SELFIELD                                            *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                  rs_selfield TYPE slis_selfield.

* Check function code
  CASE r_ucomm.
    WHEN '&amp;amp;IC1'.
*   Check field clicked on within ALVgrid report
    IF rs_selfield-fieldname = 'EBELN'.
*     Read data table, using index of row user clicked on
      READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
*     Set parameter ID for transaction screen field
      SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
*     Sxecute transaction ME23N, and skip initial data entry screen
      CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDCASE.
ENDFORM.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_EVENTS
*&amp;amp;---------------------------------------------------------------------*
*       Build events table
*----------------------------------------------------------------------*
form build_events.
  data: ls_event type slis_alv_event.

  call function 'REUSE_ALV_EVENTS_GET'
       exporting
            i_list_type = 0
       importing
            et_events   = gt_events[].
  read table gt_events with key name =  slis_ev_end_of_page
                           into ls_event.
  if sy-subrc = 0.
    move 'END_OF_PAGE' to ls_event-form.
    append ls_event to gt_events.
  endif.

    read table gt_events with key name =  slis_ev_end_of_list
                           into ls_event.
  if sy-subrc = 0.
    move 'END_OF_LIST' to ls_event-form.
    append ls_event to gt_events.
  endif.
endform.                    " BUILD_EVENTS


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_PRINT_PARAMS
*&amp;amp;---------------------------------------------------------------------*
*       Setup print parameters
*----------------------------------------------------------------------*
form build_print_params.
  gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
  gd_prntparams-no_coverpage = 'X'.
endform.                    " BUILD_PRINT_PARAMS


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  END_OF_PAGE
*&amp;amp;---------------------------------------------------------------------*
form END_OF_PAGE.
  data: listwidth type i,
        ld_pagepos(10) type c,
        ld_page(10)    type c.

  write: sy-uline(50).
  skip.
  write:/40 'Page:', sy-pagno .
endform.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  END_OF_LIST
*&amp;amp;---------------------------------------------------------------------*
form END_OF_LIST.
  data: listwidth type i,
        ld_pagepos(10) type c,
        ld_page(10)    type c.

  skip.
  write:/40 'Page:', sy-pagno .
endform.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;coloring in alv&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZALVCOLOR                                                   *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZALVCOLOR                               .

DATA : mara TYPE mara.                 " General Material Data

TYPE-POOLS: slis.                      " ALV Global types

FIELD-SYMBOLS :
  &amp;lt;data&amp;gt; TYPE table.                   " Data to display

SELECT-OPTIONS :
  s_matnr FOR mara-matnr.              " Material number

SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.    "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '50' OBLIGATORY.
SELECTION-SCREEN END OF LINE.

*---------------------------------------------------------------------*
INITIALIZATION.

  v_1 = 'Maximum of lines to display'.

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM f_read_data.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*      Form  f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.

  FIELD-SYMBOLS :
    &amp;lt;field&amp;gt;    TYPE ANY,
    &amp;lt;field2&amp;gt;   TYPE ANY,
    &amp;lt;header&amp;gt;   TYPE ANY,
    &amp;lt;header2&amp;gt;  TYPE ANY,
    &amp;lt;lt_data&amp;gt;  TYPE table.             " Data read from DB

  DATA:
    lp_struct  TYPE REF TO data,
    lp_struct2 TYPE REF TO data,
    lp_table   TYPE REF TO data,       " Pointer to dynamic table
    lp_table2  TYPE REF TO data,       " Pointer to dynamic table
    ls_lvc_cat TYPE lvc_s_fcat,
    lt_lvc_cat TYPE lvc_t_fcat.        " Field catalog

* First column
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'MATNR'.
  ls_lvc_cat-ref_table = 'MARA'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* 2nd column
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'MAKTX'.
  ls_lvc_cat-ref_table = 'MAKT'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* 3rd column
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'MATKL'.
  ls_lvc_cat-ref_table = 'MARA'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* Create 1st internal table
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING it_fieldcatalog = lt_lvc_cat
    IMPORTING ep_table = lp_table.

  ASSIGN lp_table-&amp;gt;* TO &amp;lt;lt_data&amp;gt;.

* Read data into 1st internal table
  SELECT matnr maktx matkl
    INTO TABLE &amp;lt;lt_data&amp;gt;
    FROM v_matnr
      UP TO p_max ROWS
   WHERE matnr IN s_matnr.

* Create 2nd internal table
* Checkbox
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'CHECKBOX'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* Table color
  CLEAR ls_lvc_cat.
  ls_lvc_cat-fieldname = 'TABCOLOR'.
  ls_lvc_cat-ref_table = 'CALENDAR_TYPE'.
  ls_lvc_cat-ref_field = 'COLTAB'.
  APPEND ls_lvc_cat TO lt_lvc_cat.

* Create 2nd internal table
  CALL METHOD cl_alv_table_create=&amp;gt;create_dynamic_table
    EXPORTING it_fieldcatalog = lt_lvc_cat
    IMPORTING ep_table = lp_table2.

  ASSIGN lp_table2-&amp;gt;* TO &amp;lt;data&amp;gt;.

* Create structure = structure of the 1st internal table
  CREATE DATA lp_struct LIKE LINE OF &amp;lt;lt_data&amp;gt;.
  ASSIGN lp_struct-&amp;gt;* TO &amp;lt;header&amp;gt;.

* Create structure = structure of the 2nd internal table
  CREATE DATA lp_struct2 LIKE LINE OF &amp;lt;data&amp;gt;.
  ASSIGN lp_struct2-&amp;gt;* TO &amp;lt;header2&amp;gt;.

* Move data from 1st internal table --&amp;gt; 2nd internal table
  LOOP AT &amp;lt;lt_data&amp;gt; ASSIGNING &amp;lt;header&amp;gt;.

    DESCRIBE TABLE lt_lvc_cat.
    CLEAR &amp;lt;header2&amp;gt;.

*   Fill the internal to display &amp;lt;data&amp;gt;
    DO sy-tfill TIMES.
      READ TABLE lt_lvc_cat INTO ls_lvc_cat INDEX sy-index.
*     For each field of lt_lvc_cat.
      ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE &amp;lt;header&amp;gt;
                    TO &amp;lt;field&amp;gt;.
      IF sy-subrc NE 0. EXIT .ENDIF.
      ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE &amp;lt;header2&amp;gt;
                    TO &amp;lt;field2&amp;gt;.
      IF sy-subrc NE 0. EXIT .ENDIF.
      &amp;lt;field2&amp;gt; = &amp;lt;field&amp;gt;.
    ENDDO.

*   Modify color
    ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE &amp;lt;header2&amp;gt;
                  TO &amp;lt;field2&amp;gt;.
    IF sy-subrc EQ 0.
      PERFORM f_modify_color USING 'MAKTX' &amp;lt;field2&amp;gt;.
      PERFORM f_modify_color USING 'MATKL' &amp;lt;field2&amp;gt;.
    ENDIF.

    APPEND &amp;lt;header2&amp;gt; TO &amp;lt;data&amp;gt; .
  ENDLOOP.

ENDFORM.                    " f_read_data
*---------------------------------------------------------------------*
*      Form  F_DISPLAY_DATA
*---------------------------------------------------------------------*
FORM f_display_data.

* Macro definition
  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &amp;amp;1.
    ls_sort-down      = 'X'.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA:
    ls_layout   TYPE slis_layout_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv.  " Field catalog

* Build Fieldcatalog - First column
  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'MATNR'.
  ls_fieldcat-ref_tabname = 'MARA'.
  ls_fieldcat-key  = 'X'.
  APPEND ls_fieldcat TO lt_fieldcat.

* Build Fieldcatalog - 2nd column
  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'MAKTX'.
  ls_fieldcat-ref_tabname = 'MAKT'.
  APPEND ls_fieldcat TO lt_fieldcat.

* Build Fieldcatalog - 3rd column
  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'MATKL'.
  ls_fieldcat-ref_tabname = 'MARA'.
  APPEND ls_fieldcat TO lt_fieldcat.

* Layout
  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.
  ls_layout-box_fieldname = 'CHECKBOX'.
  ls_layout-coltab_fieldname = 'TABCOLOR'.

  m_sort 'MATNR'.                      " Sort by creation date

* Display data
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout   = ls_layout
            it_fieldcat = lt_fieldcat
            it_sort     = lt_sort
       TABLES
            t_outtab    = &amp;lt;data&amp;gt;.

ENDFORM.                               " F_DISPLAY_DATA
*---------------------------------------------------------------------*
*      Form  F_modify_color
*---------------------------------------------------------------------*
FORM f_modify_color USING u_fieldname TYPE lvc_fname
                          ut_tabcolor TYPE table.

  DATA:
    l_rnd_value TYPE datatype-integer2,
    ls_tabcolor TYPE lvc_s_scol.

* Random value
  CALL FUNCTION 'RANDOM_I2'
       EXPORTING
            rnd_min   = 0
            rnd_max   = 3
       IMPORTING
            rnd_value = l_rnd_value.

  CLEAR ls_tabcolor.
  ls_tabcolor-fname = u_fieldname.

  CASE l_rnd_value.
    WHEN 0.
      ls_tabcolor-color-col = 1.       " Blue.
      ls_tabcolor-color-int = 0.
      ls_tabcolor-color-inv = 0.
    WHEN 1.
      ls_tabcolor-color-col = 3.       " Yellow.
      ls_tabcolor-color-int = 0.
      ls_tabcolor-color-inv = 0.
    WHEN 2.
      ls_tabcolor-color-col = 5.       " Green.
      ls_tabcolor-color-int = 0.
      ls_tabcolor-color-inv = 0.
    WHEN 3.
      ls_tabcolor-color-col = 6.       " Red.
      ls_tabcolor-color-int = 0.
      ls_tabcolor-color-inv = 0.
  ENDCASE.

  INSERT ls_tabcolor INTO TABLE ut_tabcolor.

ENDFORM.                               " F_MODIFY_COLOR&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;&amp;lt;u&amp;gt;alv tree structure&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZALV1                                                       *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZALV1                                   .


type-pools: slis.

data: begin of head occurs 0,
       matnr type ekpo-matnr,
       maktx type makt-maktx,
       EXPAND type c,
      end of head.

data: begin of detail occurs 0,
       aufnr type afpo-aufnr,
       matnr type afpo-matnr,
       werks type aufk-werks,
       pwerk type afpo-pwerk,
       psmng type afpo-psmng,
      end of detail.

start-of-selection.

  select * into corresponding fields of table detail
               from afpo
                  inner join aufk
                    on afpo~aufnr = aufk~aufnr
                  inner join afko
                    on afpo~aufnr = afko~aufnr
                              up to 500 rows
                                    where aufk~auart = 'G2P1'.

  if not detail[] is initial.
    sort detail ascending by matnr.
    select distinct * into corresponding fields of table head
              from makt
                 for all entries in detail
                    where matnr = detail-matnr
                      and spras = sy-langu.
  endif.

  perform call_alv.

*---------------------------------------------------------------------*
*       FORM call_alv                                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
form call_alv.


  data: gt_fieldcat type slis_t_fieldcat_alv,
        gs_keyinfo  type slis_keyinfo_alv,
        gs_layout   type slis_layout_alv.
  .
  data: ls_fieldcat type slis_fieldcat_alv.

  clear gs_keyinfo.
  gs_keyinfo-header01 = 'MATNR'.
  gs_keyinfo-item01   = 'MATNR'.


  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'MATNR'.
  ls_fieldcat-reptext_ddic = 'Material'.
  ls_fieldcat-tabname      = 'HEAD'.
  ls_fieldcat-outputlen    = 18.
  append ls_fieldcat to gt_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'MAKTX'.
  ls_fieldcat-reptext_ddic = 'Description'.
  ls_fieldcat-tabname      = 'HEAD'.
  ls_fieldcat-outputlen    = 40.
  append ls_fieldcat to gt_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'AUFNR'.
  ls_fieldcat-reptext_ddic = 'Production Order'.
  ls_fieldcat-tabname      = 'DETAIL'.
  ls_fieldcat-outputlen    = 12.
  append ls_fieldcat to gt_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'WERKS'.
  ls_fieldcat-reptext_ddic = 'Production Plant'.
  ls_fieldcat-tabname      = 'DETAIL'.
  ls_fieldcat-outputlen    = 4.
  append ls_fieldcat to gt_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'PWERK'.
  ls_fieldcat-reptext_ddic = 'Planning Plant'.
  ls_fieldcat-tabname      = 'DETAIL'.
  ls_fieldcat-outputlen    = 4.
  append ls_fieldcat to gt_fieldcat.

  clear ls_fieldcat.
  ls_fieldcat-fieldname    = 'PSMNG'.
  ls_fieldcat-reptext_ddic = 'Quantity'.
  ls_fieldcat-tabname      = 'DETAIL'.
  ls_fieldcat-outputlen    = 20.
  append ls_fieldcat to gt_fieldcat.


  gs_layout-expand_fieldname = 'EXPAND'.


  call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
       exporting
            it_fieldcat      = gt_fieldcat[]
            is_layout        = gs_layout
            i_tabname_header = 'HEAD'
            i_tabname_item   = 'DETAIL'
            is_keyinfo       = gs_keyinfo
       tables
            t_outtab_header  = head
            t_outtab_item    = detail.

endform.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Reward all helpfull answers&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>Mon, 02 Jul 2007 06:38:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468302#M554528</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468303#M554529</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;refer this code.&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;  Include           Z_TABLE_DISPLAY&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;VERSION 2&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;Code from François Henrotte (EPONA Solutions)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                            &lt;A href="http://www.eponasolutions.com" target="test_blank"&gt;http://www.eponasolutions.com&lt;/A&gt;&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                            Belgium&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Please keep reference !&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;HOW TO&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;Display an ALV grid :&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;display_grid( 'tabname' ).&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;Display a hierarchical list with header and detail :&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;display_hier( in_header = 'table1'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                             in_detail = 'table2' ).&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;Display a block list with two tables :&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;set_block_mode( 'X' ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;display_grid( 'table1' ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;display_grid( 'table2' ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;end_block_list( ).&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;You never have to deal with field catalog of tables !!&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;What if field catalog has to be changed anyway ?&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;ob_table = lcl_table_display=&amp;gt;create_table( 'tabname' ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD ob_table-&amp;gt;set_alv_fieldtext( in_field = field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                         in_ftext = 'text' ).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CALL METHOD lcl_table_display=&amp;gt;display_grid( 'tabname' ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;type-pools: abap, slis.&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;  LCL_TABLE_DISPLAY 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;class lcl_table_display definition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  public section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    class-methods: display_list importing in_tabname  type any,&lt;/P&gt;&lt;P&gt;                   display_grid importing in_tabname  type any,&lt;/P&gt;&lt;P&gt;                   display_hier importing in_header   type any&lt;/P&gt;&lt;P&gt;                                          in_detail   type any&lt;/P&gt;&lt;P&gt;                                          in_level    type i optional,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   set_block_mode importing in_mode type c,&lt;/P&gt;&lt;P&gt;                   set_block_text importing in_text type any,&lt;/P&gt;&lt;P&gt;                   end_block_list importing in_print&lt;/P&gt;&lt;P&gt;                                       type slis_print_alv optional&lt;/P&gt;&lt;P&gt;                                 exceptions display_error,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   create_table&lt;/P&gt;&lt;P&gt;                     importing&lt;/P&gt;&lt;P&gt;                       in_tabname type tabname&lt;/P&gt;&lt;P&gt;                     returning&lt;/P&gt;&lt;P&gt;                       value(out_table) type ref to lcl_table_display&lt;/P&gt;&lt;P&gt;                     exceptions&lt;/P&gt;&lt;P&gt;                       create_error,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   get_existing_table&lt;/P&gt;&lt;P&gt;                     importing&lt;/P&gt;&lt;P&gt;                       in_tabname type any optional&lt;/P&gt;&lt;P&gt;                       in_repid   type any optional&lt;/P&gt;&lt;P&gt;                       in_struc   type any optional&lt;/P&gt;&lt;P&gt;                     returning&lt;/P&gt;&lt;P&gt;                       value(out_table) type ref to lcl_table_display&lt;/P&gt;&lt;P&gt;                     exceptions&lt;/P&gt;&lt;P&gt;                       no_parameter&lt;/P&gt;&lt;P&gt;                       not_found,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   refresh_objects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods: constructor importing in_data type standard table&lt;/P&gt;&lt;P&gt;                         exceptions casting_error&lt;/P&gt;&lt;P&gt;                                    empty_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods: get_alv_fieldcat  returning value(out_fieldcat)&lt;/P&gt;&lt;P&gt;                                    type slis_t_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods: set_table_name     importing in_tabname  type any,&lt;/P&gt;&lt;P&gt;             set_alv_title      importing in_title    type any,&lt;/P&gt;&lt;P&gt;             set_alv_fieldcat   importing in_fieldcat&lt;/P&gt;&lt;P&gt;                                     type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;             set_alv_fieldnoout importing in_field    type any&lt;/P&gt;&lt;P&gt;                                          in_noout    type c optional&lt;/P&gt;&lt;P&gt;                                          in_tech     type c optional,&lt;/P&gt;&lt;P&gt;             set_alv_fieldedit  importing in_field    type any&lt;/P&gt;&lt;P&gt;                                          in_edit     type c optional,&lt;/P&gt;&lt;P&gt;             set_alv_fieldtext  importing in_field    type any&lt;/P&gt;&lt;P&gt;                                          in_ftext    type any,&lt;/P&gt;&lt;P&gt;             set_alv_fieldsum   importing in_field    type any&lt;/P&gt;&lt;P&gt;                                          in_dosum    type c optional,&lt;/P&gt;&lt;P&gt;             set_alv_linebreak  importing in_field    type any,&lt;/P&gt;&lt;P&gt;             set_alv_settings   importing in_settings type any,&lt;/P&gt;&lt;P&gt;             set_alv_layout     importing in_layout   type any,&lt;/P&gt;&lt;P&gt;             set_alv_print      importing in_print    type any,&lt;/P&gt;&lt;P&gt;             set_alv_sorting    importing in_field    type any&lt;/P&gt;&lt;P&gt;                                          in_desc     type c optional&lt;/P&gt;&lt;P&gt;                                          in_group    type any optional&lt;/P&gt;&lt;P&gt;                                          in_subtot   type c optional,&lt;/P&gt;&lt;P&gt;             set_alv_keys       importing in_level    type i&lt;/P&gt;&lt;P&gt;                                          in_key      type c optional,&lt;/P&gt;&lt;P&gt;             set_alv_event      importing in_name     type any&lt;/P&gt;&lt;P&gt;                                          in_form     type any,&lt;/P&gt;&lt;P&gt;             set_all_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  protected section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: g_table_type type slis_list_type.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: g_title      type lvc_title,&lt;/P&gt;&lt;P&gt;          gt_fcat      type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          gs_sett      type lvc_s_glay,&lt;/P&gt;&lt;P&gt;          gs_layo      type slis_layout_alv,&lt;/P&gt;&lt;P&gt;          gt_sort      type slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;          gt_evnt      type slis_t_event,&lt;/P&gt;&lt;P&gt;          gs_prin      type slis_print_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    class-methods: output_hierarchy exceptions display_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods: output_table importing mode type c&lt;/P&gt;&lt;P&gt;                         exceptions display_error,&lt;/P&gt;&lt;P&gt;             output_list,&lt;/P&gt;&lt;P&gt;             output_grid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  private section.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    class-data: gt_table_obj   type table of ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;                g_header_table type ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;                g_detail_table type ref to lcl_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    class-data: g_variant_level type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    class-data: g_block_mode    type c,&lt;/P&gt;&lt;P&gt;                g_block_text    type slis_text40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    types: begin of ty_defin,&lt;/P&gt;&lt;P&gt;             fieldname     type fieldname,&lt;/P&gt;&lt;P&gt;             ref_tabname   type tabname,&lt;/P&gt;&lt;P&gt;             ref_fieldname type fieldname,&lt;/P&gt;&lt;P&gt;           end of ty_defin.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: g_repid  type repid,&lt;/P&gt;&lt;P&gt;          g_struc  type tabname,&lt;/P&gt;&lt;P&gt;          g_table  type tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: gt_data  type ref to data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: gt_defin type table of ty_defin,&lt;/P&gt;&lt;P&gt;          g_level  type tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    methods: init_block_list,&lt;/P&gt;&lt;P&gt;             fill_fieldcat importing repid type repid&lt;/P&gt;&lt;P&gt;                                     struc type tabname&lt;/P&gt;&lt;P&gt;                            changing fcat  type slis_t_fieldcat_alv&lt;/P&gt;&lt;P&gt;                          exceptions no_definition,&lt;/P&gt;&lt;P&gt;             get_definition importing repid type repid&lt;/P&gt;&lt;P&gt;                                      struc type tabname&lt;/P&gt;&lt;P&gt;                             changing abap  type rsfb_source,&lt;/P&gt;&lt;P&gt;             recursive_definition importing repid type repid&lt;/P&gt;&lt;P&gt;                                   changing abap  type rsfb_source,&lt;/P&gt;&lt;P&gt;             map_structure importing source type any&lt;/P&gt;&lt;P&gt;                            changing destin type any,&lt;/P&gt;&lt;P&gt;             get_default_variant changing out_variant type disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endclass.                    "lcl_table_display 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;  LCL_TABLE_DISPLAY 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;class lcl_table_display implementation.&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Display table in ALV list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method display_list.&lt;/P&gt;&lt;P&gt;    data: l_object  type ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;          l_tabname type tabname,&lt;/P&gt;&lt;P&gt;          l_found   type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_tabname = in_tabname.&lt;/P&gt;&lt;P&gt;    loop at gt_table_obj into l_object.&lt;/P&gt;&lt;P&gt;      if l_object-&amp;gt;g_table = l_tabname.&lt;/P&gt;&lt;P&gt;        l_found = 'X'.&lt;/P&gt;&lt;P&gt;        exit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    if l_found is initial.&lt;/P&gt;&lt;P&gt;      l_object = lcl_table_display=&amp;gt;create_table( l_tabname ).&lt;/P&gt;&lt;P&gt;      if g_block_mode is initial.&lt;/P&gt;&lt;P&gt;        l_object-&amp;gt;g_table_type = 4.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        l_object-&amp;gt;g_table_type = 2.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      call method l_object-&amp;gt;set_all_events.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    call method l_object-&amp;gt;output_list.&lt;/P&gt;&lt;P&gt;  endmethod.                    "display_list&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Display table in ALV grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method display_grid.&lt;/P&gt;&lt;P&gt;    data: l_object  type ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;          l_tabname type tabname,&lt;/P&gt;&lt;P&gt;          l_found   type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_tabname = in_tabname.&lt;/P&gt;&lt;P&gt;    loop at gt_table_obj into l_object.&lt;/P&gt;&lt;P&gt;      if l_object-&amp;gt;g_table = l_tabname.&lt;/P&gt;&lt;P&gt;        l_found = 'X'.&lt;/P&gt;&lt;P&gt;        exit.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    if l_found is initial.&lt;/P&gt;&lt;P&gt;      l_object = lcl_table_display=&amp;gt;create_table( l_tabname ).&lt;/P&gt;&lt;P&gt;      if g_block_mode is initial.&lt;/P&gt;&lt;P&gt;        l_object-&amp;gt;g_table_type = 4.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        l_object-&amp;gt;g_table_type = 2.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      call method l_object-&amp;gt;set_all_events.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if g_block_mode is initial.&lt;/P&gt;&lt;P&gt;      call method l_object-&amp;gt;output_grid.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      call method l_object-&amp;gt;output_list.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "display_grid&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Display tables in ALV hierarchy&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method display_hier.&lt;/P&gt;&lt;P&gt;    data: l_tabnam1 type tabname,&lt;/P&gt;&lt;P&gt;          l_tabnam2 type tabname,&lt;/P&gt;&lt;P&gt;          lt_fcat1  type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          lt_fcat2  type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          ls_fcat1  type slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          ls_fcat2  type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_tabnam1 = in_header.&lt;/P&gt;&lt;P&gt;    l_tabnam2 = in_detail.&lt;/P&gt;&lt;P&gt;    call method lcl_table_display=&amp;gt;get_existing_table&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        in_tabname = l_tabnam1&lt;/P&gt;&lt;P&gt;      receiving&lt;/P&gt;&lt;P&gt;        out_table  = g_header_table&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        not_found  = 1.&lt;/P&gt;&lt;P&gt;    if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;      g_header_table = lcl_table_display=&amp;gt;create_table( l_tabnam1 ).&lt;/P&gt;&lt;P&gt;      if g_block_mode is initial.&lt;/P&gt;&lt;P&gt;        g_header_table-&amp;gt;g_table_type = 1.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        g_header_table-&amp;gt;g_table_type = 3.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      call method g_header_table-&amp;gt;set_all_events.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    call method lcl_table_display=&amp;gt;get_existing_table&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        in_tabname = l_tabnam2&lt;/P&gt;&lt;P&gt;      receiving&lt;/P&gt;&lt;P&gt;        out_table  = g_detail_table&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        not_found  = 1.&lt;/P&gt;&lt;P&gt;    if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;      g_detail_table = lcl_table_display=&amp;gt;create_table( l_tabnam2 ).&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set key fields&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if in_level is initial.&lt;/P&gt;&lt;P&gt;      lt_fcat1 = g_header_table-&amp;gt;get_alv_fieldcat( ).&lt;/P&gt;&lt;P&gt;      lt_fcat2 = g_detail_table-&amp;gt;get_alv_fieldcat( ).&lt;/P&gt;&lt;P&gt;      loop at lt_fcat1 into ls_fcat1.&lt;/P&gt;&lt;P&gt;        ls_fcat1-key = space.&lt;/P&gt;&lt;P&gt;        loop at lt_fcat2 into ls_fcat2&lt;/P&gt;&lt;P&gt;                        where fieldname = ls_fcat1-fieldname.&lt;/P&gt;&lt;P&gt;          ls_fcat2-key = space.&lt;/P&gt;&lt;P&gt;          ls_fcat2-key_sel = 'X'.&lt;/P&gt;&lt;P&gt;          ls_fcat2-tech = 'X'.&lt;/P&gt;&lt;P&gt;          modify lt_fcat2 from ls_fcat2 transporting key.&lt;/P&gt;&lt;P&gt;        endloop.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          ls_fcat1-key = 'X'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        modify lt_fcat1 from ls_fcat1 transporting key.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;      call method g_header_table-&amp;gt;set_alv_fieldcat&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          in_fieldcat = lt_fcat1.&lt;/P&gt;&lt;P&gt;      call method g_detail_table-&amp;gt;set_alv_fieldcat&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          in_fieldcat = lt_fcat2.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      call method g_header_table-&amp;gt;set_alv_keys&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          in_level = in_level.&lt;/P&gt;&lt;P&gt;      call method g_detail_table-&amp;gt;set_alv_keys&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          in_level = in_level&lt;/P&gt;&lt;P&gt;          in_key   = space.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call method output_hierarchy.&lt;/P&gt;&lt;P&gt;  endmethod.                    "display_hier&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set block mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_block_mode.&lt;/P&gt;&lt;P&gt;    g_block_mode = in_mode.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_block_mode&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set block text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_block_text.&lt;/P&gt;&lt;P&gt;    g_block_text = in_text.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_block_text&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Create new table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method create_table.&lt;/P&gt;&lt;P&gt;    data: l_object type ref to lcl_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    field-symbols: set_table_name&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        in_tabname = in_tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Default print options&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_object-&amp;gt;gs_prin-no_print_selinfos  = 'X'.&lt;/P&gt;&lt;P&gt;    l_object-&amp;gt;gs_prin-no_coverpage       = 'X'.&lt;/P&gt;&lt;P&gt;    l_object-&amp;gt;gs_prin-no_print_listinfos = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    out_table = l_object.&lt;/P&gt;&lt;P&gt;  endmethod.                    "create_table&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get existing table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method get_existing_table.&lt;/P&gt;&lt;P&gt;    data: l_object  type ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;          l_tabname type tabname,&lt;/P&gt;&lt;P&gt;          l_repid   type repid,&lt;/P&gt;&lt;P&gt;          l_struc   type tabname,&lt;/P&gt;&lt;P&gt;          l_found   type c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_tabname = in_tabname.&lt;/P&gt;&lt;P&gt;    l_repid   = in_repid.&lt;/P&gt;&lt;P&gt;    l_struc   = in_struc.&lt;/P&gt;&lt;P&gt;    if l_tabname is initial.&lt;/P&gt;&lt;P&gt;      if l_repid is initial and&lt;/P&gt;&lt;P&gt;         l_struc is initial.&lt;/P&gt;&lt;P&gt;        raise no_parameter.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Get last existing table with same definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        loop at gt_table_obj into l_object.&lt;/P&gt;&lt;P&gt;          if l_object-&amp;gt;g_repid = l_repid and&lt;/P&gt;&lt;P&gt;             l_object-&amp;gt;g_struc = l_struc.&lt;/P&gt;&lt;P&gt;            l_found = 'X'.&lt;/P&gt;&lt;P&gt;            exit.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endloop.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Get last existing table with same name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at gt_table_obj into l_object.&lt;/P&gt;&lt;P&gt;        if l_object-&amp;gt;g_table = l_tabname.&lt;/P&gt;&lt;P&gt;          l_found = 'X'.&lt;/P&gt;&lt;P&gt;          exit.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if l_found is initial.&lt;/P&gt;&lt;P&gt;      raise not_found.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      out_table = l_object.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "get_existing_table&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Create table display&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method constructor.&lt;/P&gt;&lt;P&gt;    data: l_object type ref to lcl_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ls_data  type ref to data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ob_desc  type ref to cl_abap_structdescr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: l_found  type c,&lt;/P&gt;&lt;P&gt;          l_absol  type char200,&lt;/P&gt;&lt;P&gt;          l_repid  type repid,&lt;/P&gt;&lt;P&gt;          l_struc  type tabname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    field-symbols:  type any.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get data and store it into attribute&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    create data me-&amp;gt;gt_data like in_data.&lt;/P&gt;&lt;P&gt;    assign me-&amp;gt;gt_data-&amp;gt;* to .&lt;BR /&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt; = in_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get global data definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    create data ls_data like line of  ).&lt;/P&gt;&lt;P&gt;    endcatch.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 1.&lt;/P&gt;&lt;P&gt;      raise casting_error.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get program name and main type used to define table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    l_absol = ob_desc-&amp;gt;absolute_name.&lt;/P&gt;&lt;P&gt;    split l_absol at 'TYPE=' into l_repid l_struc.&lt;/P&gt;&lt;P&gt;    shift l_repid up to '='.&lt;/P&gt;&lt;P&gt;    shift l_repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    check l_struc np '%_*'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    me-&amp;gt;g_repid = l_repid.&lt;/P&gt;&lt;P&gt;    me-&amp;gt;g_struc = l_struc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    me-&amp;gt;g_table = l_struc.&lt;/P&gt;&lt;P&gt;    replace 'TY' with 'WT' into me-&amp;gt;g_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Field catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method lcl_table_display=&amp;gt;get_existing_table&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        in_repid  = l_repid&lt;/P&gt;&lt;P&gt;        in_struc  = l_struc&lt;/P&gt;&lt;P&gt;      receiving&lt;/P&gt;&lt;P&gt;        out_table = l_object&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        not_found = 1.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      me-&amp;gt;gt_fcat = l_object-&amp;gt;get_alv_fieldcat( ).&lt;/P&gt;&lt;P&gt;      call method set_table_name&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          in_tabname = me-&amp;gt;g_table.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      call method fill_fieldcat&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          repid = l_repid&lt;/P&gt;&lt;P&gt;          struc = l_struc&lt;/P&gt;&lt;P&gt;        changing&lt;/P&gt;&lt;P&gt;          fcat  = me-&amp;gt;gt_fcat.&lt;/P&gt;&lt;P&gt;      if me-&amp;gt;gt_fcat is initial.&lt;/P&gt;&lt;P&gt;        raise empty_fieldcat.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Keep list of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append me to gt_table_obj.&lt;/P&gt;&lt;P&gt;  endmethod.                    "constructor&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Output list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method output_list.&lt;/P&gt;&lt;P&gt;    call method output_table&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        mode = 'L'.&lt;/P&gt;&lt;P&gt;  endmethod.                    "output_list&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Output grid&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method output_grid.&lt;/P&gt;&lt;P&gt;    call method output_table&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        mode = 'G'.&lt;/P&gt;&lt;P&gt;  endmethod.                    "output_grid&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method output_table.&lt;/P&gt;&lt;P&gt;    data: l_object type ref to lcl_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ls_vari  type disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    field-symbols: type standard table.&lt;BR /&gt;&lt;BR /&gt;assign me-&amp;gt;gt_data-&amp;gt;* to .&lt;BR /&gt;&lt;BR /&gt;if not g_block_mode is initial.&lt;BR /&gt;read table gt_table_obj into l_object index 1.&lt;BR /&gt;if sy-subrc = 0.&lt;BR /&gt;if l_object-&amp;gt;g_table = me-&amp;gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;g_table.&lt;/P&gt;&lt;P&gt;          call method init_block_list.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get default user variant&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method get_default_variant&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        out_variant = ls_vari.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Display table contents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if mode = 'G'.&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 = me-&amp;gt;g_repid&lt;/P&gt;&lt;P&gt;          i_grid_title       = me-&amp;gt;g_title&lt;/P&gt;&lt;P&gt;          i_grid_settings    = me-&amp;gt;gs_sett&lt;/P&gt;&lt;P&gt;          is_layout          = me-&amp;gt;gs_layo&lt;/P&gt;&lt;P&gt;          it_fieldcat        = me-&amp;gt;gt_fcat&lt;/P&gt;&lt;P&gt;          it_sort            = me-&amp;gt;gt_sort&lt;/P&gt;&lt;P&gt;          i_save             = 'U'&lt;/P&gt;&lt;P&gt;          is_variant         = ls_vari&lt;/P&gt;&lt;P&gt;          it_events          = me-&amp;gt;gt_evnt&lt;/P&gt;&lt;P&gt;          is_print           = me-&amp;gt;gs_prin&lt;/P&gt;&lt;P&gt;        tables&lt;/P&gt;&lt;P&gt;          t_outtab           = &lt;BR /&gt;exceptions&lt;BR /&gt;program_error = 1&lt;BR /&gt;others = 2.&lt;BR /&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;raise display_error.&lt;BR /&gt;endif.&lt;BR /&gt;call method refresh_objects.&lt;BR /&gt;else.&lt;BR /&gt;if g_block_mode is initial.&lt;BR /&gt;call function 'REUSE_ALV_LIST_DISPLAY'&lt;BR /&gt;exporting&lt;BR /&gt;i_callback_program = me-&amp;gt;g_repid&lt;BR /&gt;is_layout = me-&amp;gt;gs_layo&lt;BR /&gt;it_fieldcat = me-&amp;gt;gt_fcat&lt;BR /&gt;it_sort = me-&amp;gt;gt_sort&lt;BR /&gt;i_save = 'U'&lt;BR /&gt;is_variant = ls_vari&lt;BR /&gt;it_events = me-&amp;gt;gt_evnt&lt;BR /&gt;is_print = me-&amp;gt;gs_prin&lt;BR /&gt;tables&lt;BR /&gt;t_outtab = &lt;BR /&gt;exceptions&lt;BR /&gt;others = 0.&lt;BR /&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;BR /&gt;raise display_error.&lt;BR /&gt;endif.&lt;BR /&gt;call method refresh_objects.&lt;BR /&gt;else.&lt;BR /&gt;call function 'REUSE_ALV_BLOCK_LIST_APPEND'&lt;BR /&gt;exporting&lt;BR /&gt;is_layout = me-&amp;gt;gs_layo&lt;BR /&gt;it_fieldcat = me-&amp;gt;gt_fcat&lt;BR /&gt;i_tabname = me-&amp;gt;g_table&lt;BR /&gt;it_events = me-&amp;gt;gt_evnt&lt;BR /&gt;it_sort = me-&amp;gt;gt_sort&lt;BR /&gt;i_text = g_block_text&lt;BR /&gt;tables&lt;BR /&gt;t_outtab = &lt;BR /&gt;exceptions&lt;BR /&gt;program_error = 1&lt;BR /&gt;maximum_of_appends_reached = 2&lt;BR /&gt;others = 3.&lt;BR /&gt;if sy-subrc &amp;lt;&amp;gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt; 0.&lt;/P&gt;&lt;P&gt;          raise display_error.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "output_table&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Output hierarchy&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method output_hierarchy.&lt;/P&gt;&lt;P&gt;    data: l_object type ref to lcl_table_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: lt_fcat  type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          lt_sort  type slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;          ls_fcat  type slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          ls_vari  type disvariant,&lt;/P&gt;&lt;P&gt;          ls_keyi  type slis_keyinfo_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: l_index  type numc2,&lt;/P&gt;&lt;P&gt;          l_field  type fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    field-symbols: .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set key fields as common fields between header and detail&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at g_header_table-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                                   where key = 'X'.&lt;/P&gt;&lt;P&gt;      l_index = l_index + 1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Create link&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate 'HEADER' l_index into l_field.&lt;/P&gt;&lt;P&gt;      assign component l_field of structure ls_keyi to init_block_list.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get default user variant&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method g_header_table-&amp;gt;get_default_variant&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        out_variant = ls_vari.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if g_block_mode is initial.&lt;/P&gt;&lt;P&gt;      call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          i_callback_program = g_header_table-&amp;gt;g_repid&lt;/P&gt;&lt;P&gt;          is_layout          = g_header_table-&amp;gt;gs_layo&lt;/P&gt;&lt;P&gt;          it_fieldcat        = lt_fcat&lt;/P&gt;&lt;P&gt;          it_sort            = lt_sort&lt;/P&gt;&lt;P&gt;          i_save             = 'U'&lt;/P&gt;&lt;P&gt;          is_variant         = ls_vari&lt;/P&gt;&lt;P&gt;          it_events          = g_header_table-&amp;gt;gt_evnt&lt;/P&gt;&lt;P&gt;          i_tabname_header   = g_header_table-&amp;gt;g_table&lt;/P&gt;&lt;P&gt;          i_tabname_item     = g_detail_table-&amp;gt;g_table&lt;/P&gt;&lt;P&gt;          is_keyinfo         = ls_keyi&lt;/P&gt;&lt;P&gt;          is_print           = g_header_table-&amp;gt;gs_prin&lt;/P&gt;&lt;P&gt;        tables&lt;/P&gt;&lt;P&gt;          t_outtab_header    =  0.&lt;/P&gt;&lt;P&gt;        raise display_error.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "output_hierarchy&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Init block list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method init_block_list.&lt;/P&gt;&lt;P&gt;    data:  ls_evnt1 type slis_alv_event,&lt;/P&gt;&lt;P&gt;           ls_evnt2 type slis_alv_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Events for whole list display&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    concatenate 'F_' slis_ev_pf_status_set '_BLOCK'&lt;/P&gt;&lt;P&gt;           into ls_evnt1-form.&lt;/P&gt;&lt;P&gt;    concatenate 'F_' slis_ev_user_command '_BLOCK'&lt;/P&gt;&lt;P&gt;           into ls_evnt2-form.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Initialization of block list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call function 'REUSE_ALV_BLOCK_LIST_INIT'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        i_callback_program       = me-&amp;gt;g_repid&lt;/P&gt;&lt;P&gt;        i_callback_pf_status_set = ls_evnt1-form&lt;/P&gt;&lt;P&gt;        i_callback_user_command  = ls_evnt2-form.&lt;/P&gt;&lt;P&gt;  endmethod.                    "init_block_list&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  End of block list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method end_block_list.&lt;/P&gt;&lt;P&gt;    data: l_object type ref to lcl_table_display,&lt;/P&gt;&lt;P&gt;          ls_print type slis_print_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    check not g_block_mode is initial.&lt;/P&gt;&lt;P&gt;    if in_print is supplied.&lt;/P&gt;&lt;P&gt;      ls_print = in_print.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      read table gt_table_obj into l_object index 1.&lt;/P&gt;&lt;P&gt;      ls_print = l_object-&amp;gt;gs_prin.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    call function 'REUSE_ALV_BLOCK_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        is_print      = ls_print&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        program_error = 1&lt;/P&gt;&lt;P&gt;        others        = 2.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      raise display_error.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    call method refresh_objects.&lt;/P&gt;&lt;P&gt;  endmethod.                    "end_block_list&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Refresh table of objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method refresh_objects.&lt;/P&gt;&lt;P&gt;    free: gt_table_obj.&lt;/P&gt;&lt;P&gt;  endmethod.&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Fill field catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method fill_fieldcat.&lt;/P&gt;&lt;P&gt;    data: lt_abap   type rsfb_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ls_defin  type ty_defin.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: lt_dfies  type table of dfies,&lt;/P&gt;&lt;P&gt;          ls_dfies  type dfies,&lt;/P&gt;&lt;P&gt;          ls_dd04v  type dd04v,&lt;/P&gt;&lt;P&gt;          ls_dd01v  type dd01v,&lt;/P&gt;&lt;P&gt;          l_flong   type dfies-lfieldname,&lt;/P&gt;&lt;P&gt;          l_dname   type dfies-domname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ls_fcat   type slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          ls_fcat2  type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: l_index   type i,&lt;/P&gt;&lt;P&gt;          l_nbfld   type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    free: me-&amp;gt;gt_defin.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Process data definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method get_definition&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        repid = repid&lt;/P&gt;&lt;P&gt;        struc = struc&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        abap  = lt_abap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Process sub levels if required&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    call method recursive_definition&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        repid = repid&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        abap  = lt_abap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if me-&amp;gt;gt_defin is initial.&lt;/P&gt;&lt;P&gt;      raise no_definition.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_defin into ls_defin.&lt;/P&gt;&lt;P&gt;      clear: ls_fcat.&lt;/P&gt;&lt;P&gt;      move-corresponding ls_defin to ls_fcat.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Retrieve info about this field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      free: ls_dfies, ls_dd04v, ls_dd01v, l_dname.&lt;/P&gt;&lt;P&gt;      l_flong = ls_fcat-ref_fieldname.&lt;/P&gt;&lt;P&gt;      set locale language 'E'.&lt;/P&gt;&lt;P&gt;      translate: ls_fcat-ref_tabname   to upper case,&lt;/P&gt;&lt;P&gt;                 ls_fcat-ref_fieldname to upper case,&lt;/P&gt;&lt;P&gt;                 l_flong               to upper case.&lt;/P&gt;&lt;P&gt;      if not ls_fcat-ref_tabname is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Try to get info about field in table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        call function 'DDIF_FIELDINFO_GET'&lt;/P&gt;&lt;P&gt;          exporting&lt;/P&gt;&lt;P&gt;            tabname        = ls_fcat-ref_tabname&lt;/P&gt;&lt;P&gt;            fieldname      = ls_fcat-ref_fieldname&lt;/P&gt;&lt;P&gt;            lfieldname     = l_flong&lt;/P&gt;&lt;P&gt;          importing&lt;/P&gt;&lt;P&gt;            dfies_wa       = ls_dfies&lt;/P&gt;&lt;P&gt;          exceptions&lt;/P&gt;&lt;P&gt;            not_found      = 1&lt;/P&gt;&lt;P&gt;            internal_error = 2&lt;/P&gt;&lt;P&gt;            others         = 3.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          move-corresponding ls_dfies to ls_fcat.&lt;/P&gt;&lt;P&gt;          ls_fcat-fieldname = ls_defin-fieldname.&lt;/P&gt;&lt;P&gt;          move: ls_dfies-keyflag   to ls_fcat-key,&lt;/P&gt;&lt;P&gt;                ls_dfies-scrtext_m to ls_fcat-seltext_l,&lt;/P&gt;&lt;P&gt;                ls_dfies-domname   to l_dname.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Try to get info about structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        ls_defin-ref_tabname = ls_defin-ref_fieldname.&lt;/P&gt;&lt;P&gt;        call function 'DDIF_FIELDINFO_GET'&lt;/P&gt;&lt;P&gt;          exporting&lt;/P&gt;&lt;P&gt;            tabname   = ls_defin-ref_tabname&lt;/P&gt;&lt;P&gt;          tables&lt;/P&gt;&lt;P&gt;            dfies_tab = lt_dfies&lt;/P&gt;&lt;P&gt;          exceptions&lt;/P&gt;&lt;P&gt;            others    = 0.&lt;/P&gt;&lt;P&gt;        if not lt_dfies is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Process fields of this structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at lt_dfies into ls_dfies.&lt;/P&gt;&lt;P&gt;            clear: ls_fcat.&lt;/P&gt;&lt;P&gt;            move-corresponding ls_dfies to ls_fcat.&lt;/P&gt;&lt;P&gt;            if ls_defin-fieldname ne 'INCLUDE'.&lt;/P&gt;&lt;P&gt;              concatenate ls_defin-fieldname ls_fcat-fieldname&lt;/P&gt;&lt;P&gt;                     into ls_fcat-fieldname&lt;/P&gt;&lt;P&gt;                separated by '-'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;            move ls_dfies-keyflag to ls_fcat-key.&lt;/P&gt;&lt;P&gt;            move ls_dfies-scrtext_m to ls_fcat-seltext_l.&lt;/P&gt;&lt;P&gt;            ls_fcat-tabname = me-&amp;gt;g_table.&lt;/P&gt;&lt;P&gt;            clear: ls_fcat-col_pos,&lt;/P&gt;&lt;P&gt;                   ls_fcat-offset.&lt;/P&gt;&lt;P&gt;            if ls_fcat-ref_tabname is initial.&lt;/P&gt;&lt;P&gt;              ls_fcat-ddictxt = 'L'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Display Yes/No fields as checkboxes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if ls_dfies-domname = 'XFELD'.&lt;/P&gt;&lt;P&gt;              ls_fcat-checkbox = 'X'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Add field to field catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            append ls_fcat to fcat.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Try to get info about data element&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          call function 'DDIF_DTEL_GET'&lt;/P&gt;&lt;P&gt;            exporting&lt;/P&gt;&lt;P&gt;              name          = ls_fcat-ref_fieldname&lt;/P&gt;&lt;P&gt;              langu         = sy-langu&lt;/P&gt;&lt;P&gt;            importing&lt;/P&gt;&lt;P&gt;              dd04v_wa      = ls_dd04v&lt;/P&gt;&lt;P&gt;            exceptions&lt;/P&gt;&lt;P&gt;              illegal_input = 1&lt;/P&gt;&lt;P&gt;              others        = 2.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;            move-corresponding ls_dd04v to ls_fcat.&lt;/P&gt;&lt;P&gt;            move: ls_dd04v-scrtext_m to ls_fcat-seltext_l,&lt;/P&gt;&lt;P&gt;                  ls_dd04v-domname   to l_dname.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Finally try to get info about domain&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            call function 'DDIF_DOMA_GET'&lt;/P&gt;&lt;P&gt;              exporting&lt;/P&gt;&lt;P&gt;                name          = ls_fcat-ref_fieldname&lt;/P&gt;&lt;P&gt;                langu         = sy-langu&lt;/P&gt;&lt;P&gt;              importing&lt;/P&gt;&lt;P&gt;                dd01v_wa      = ls_dd01v&lt;/P&gt;&lt;P&gt;              exceptions&lt;/P&gt;&lt;P&gt;                illegal_input = 1&lt;/P&gt;&lt;P&gt;                others        = 2.&lt;/P&gt;&lt;P&gt;            if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;              move-corresponding ls_dd01v to ls_fcat.&lt;/P&gt;&lt;P&gt;              move: ls_dd01v-ddtext  to ls_fcat-seltext_l,&lt;/P&gt;&lt;P&gt;                    ls_dd01v-domname to l_dname.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Table name must be internal table containing data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ls_fcat-tabname = g_table.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    No offset&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      clear: ls_fcat-offset.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Default text is stored in long text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if ls_fcat-ref_tabname is initial.&lt;/P&gt;&lt;P&gt;        ls_fcat-ddictxt = 'L'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Display Yes/No fields as checkboxes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if l_dname = 'XFELD'.&lt;/P&gt;&lt;P&gt;        ls_fcat-checkbox = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Add field to field catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      append ls_fcat to fcat.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Positions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at fcat into ls_fcat.&lt;/P&gt;&lt;P&gt;      ls_fcat-row_pos = 1.&lt;/P&gt;&lt;P&gt;      ls_fcat-col_pos = sy-tabix.&lt;/P&gt;&lt;P&gt;      modify fcat from ls_fcat transporting row_pos col_pos.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Link between fields&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    describe table fcat lines l_nbfld.&lt;/P&gt;&lt;P&gt;    loop at fcat into ls_fcat.&lt;/P&gt;&lt;P&gt;      if sy-tabix ne l_nbfld.&lt;/P&gt;&lt;P&gt;        l_index = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;        read table fcat into ls_fcat2 index l_index.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          if ls_fcat-datatype = 'CURR'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Currency unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if ls_fcat2-datatype = 'CUKY'.&lt;/P&gt;&lt;P&gt;              ls_fcat-cfieldname = ls_fcat2-fieldname.&lt;/P&gt;&lt;P&gt;              ls_fcat-ctabname   = ls_fcat2-tabname.&lt;/P&gt;&lt;P&gt;              modify fcat from ls_fcat.&lt;/P&gt;&lt;P&gt;            else.&lt;/P&gt;&lt;P&gt;              loop at fcat into ls_fcat2&lt;/P&gt;&lt;P&gt;                           from l_index&lt;/P&gt;&lt;P&gt;                          where datatype = 'CUKY'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              First currency unit after field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                ls_fcat-cfieldname = ls_fcat2-fieldname.&lt;/P&gt;&lt;P&gt;                ls_fcat-ctabname   = ls_fcat2-tabname.&lt;/P&gt;&lt;P&gt;                modify fcat from ls_fcat.&lt;/P&gt;&lt;P&gt;                exit.&lt;/P&gt;&lt;P&gt;              endloop.&lt;/P&gt;&lt;P&gt;              if sy-subrc ne 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              No currency unit after field, try before&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                read table fcat into ls_fcat2&lt;/P&gt;&lt;P&gt;                            with key datatype = 'CUKY'.&lt;/P&gt;&lt;P&gt;                if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;                  ls_fcat-cfieldname = ls_fcat2-fieldname.&lt;/P&gt;&lt;P&gt;                  ls_fcat-ctabname   = ls_fcat2-tabname.&lt;/P&gt;&lt;P&gt;                  modify fcat from ls_fcat.&lt;/P&gt;&lt;P&gt;                else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                Default is EURO&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  ls_fcat-currency = 'EUR'.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          if ls_fcat-datatype = 'QUAN'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Quantity unit&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if ls_fcat2-datatype = 'UNIT'.&lt;/P&gt;&lt;P&gt;              ls_fcat-cfieldname = ls_fcat2-fieldname.&lt;/P&gt;&lt;P&gt;              ls_fcat-ctabname   = ls_fcat2-tabname.&lt;/P&gt;&lt;P&gt;              modify fcat from ls_fcat.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "fill_fieldcat&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get definition of type from code source&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method get_definition.&lt;/P&gt;&lt;P&gt;    data: l_strng type rssource,&lt;/P&gt;&lt;P&gt;          ls_abap type rssource,&lt;/P&gt;&lt;P&gt;          l_fdpos type i,&lt;/P&gt;&lt;P&gt;          l_first type i,&lt;/P&gt;&lt;P&gt;          l_lastr type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: lt_incl type table of repid,&lt;/P&gt;&lt;P&gt;          ls_incl type repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get program code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    read report repid into abap.&lt;/P&gt;&lt;P&gt;    check sy-subrc eq 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get first line of definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    concatenate 'BEGIN OF' struc into l_strng&lt;/P&gt;&lt;P&gt;                            separated by space.&lt;/P&gt;&lt;P&gt;    loop at abap into ls_abap.&lt;/P&gt;&lt;P&gt;      if ls_abap cs l_strng.&lt;/P&gt;&lt;P&gt;        l_fdpos = strlen( l_strng ) + sy-fdpos.&lt;/P&gt;&lt;P&gt;        if ls_abap(1) = '*' or ls_abap(sy-fdpos) cs '"'.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        if ls_abap+l_fdpos(1) ca ',. "'.&lt;/P&gt;&lt;P&gt;          l_first = sy-tabix.&lt;/P&gt;&lt;P&gt;          exit.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    if l_first is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Table is defined in an include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      call function 'RS_GET_ALL_INCLUDES'&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          program    = repid&lt;/P&gt;&lt;P&gt;        tables&lt;/P&gt;&lt;P&gt;          includetab = lt_incl&lt;/P&gt;&lt;P&gt;        exceptions&lt;/P&gt;&lt;P&gt;          others     = 1.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        loop at lt_incl into ls_incl.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Try to find definition in this include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          read report ls_incl into abap.&lt;/P&gt;&lt;P&gt;          loop at abap into ls_abap.&lt;/P&gt;&lt;P&gt;            if ls_abap cs l_strng.&lt;/P&gt;&lt;P&gt;              l_fdpos = strlen( l_strng ) + sy-fdpos.&lt;/P&gt;&lt;P&gt;              if ls_abap(1) = '*' or ls_abap(sy-fdpos) cs '"'.&lt;/P&gt;&lt;P&gt;                continue.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;              if ls_abap+l_fdpos(1) ca ',. "'.&lt;/P&gt;&lt;P&gt;                l_first = sy-tabix.&lt;/P&gt;&lt;P&gt;                exit.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;          if not l_first is initial.&lt;/P&gt;&lt;P&gt;            exit.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endloop.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get last line of definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    concatenate 'END OF' struc into l_strng&lt;/P&gt;&lt;P&gt;                          separated by space.&lt;/P&gt;&lt;P&gt;    loop at abap into ls_abap.&lt;/P&gt;&lt;P&gt;      if ls_abap cs l_strng.&lt;/P&gt;&lt;P&gt;        l_fdpos = strlen( l_strng ) + sy-fdpos.&lt;/P&gt;&lt;P&gt;        if ls_abap(1) = '*' or ls_abap(sy-fdpos) cs '"'.&lt;/P&gt;&lt;P&gt;          continue.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        if ls_abap+l_fdpos(1) ca ',. "'.&lt;/P&gt;&lt;P&gt;          l_lastr = sy-tabix - l_first.&lt;/P&gt;&lt;P&gt;          exit.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Keep only relevant code lines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if l_first le 0&lt;/P&gt;&lt;P&gt;    or l_lastr le 0.&lt;/P&gt;&lt;P&gt;      refresh abap.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      delete abap to l_first.&lt;/P&gt;&lt;P&gt;      delete abap from l_lastr.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "get_definition&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get definition of type recursively&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method recursive_definition.&lt;/P&gt;&lt;P&gt;    data: lt_token type table of stokex,&lt;/P&gt;&lt;P&gt;          ls_token type stokex,&lt;/P&gt;&lt;P&gt;          lt_state type table of sstmnt,&lt;/P&gt;&lt;P&gt;          ls_state type sstmnt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: ls_defin type ty_defin,&lt;/P&gt;&lt;P&gt;          l_reffld type fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    data: lt_recu  type rsfb_source.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Retrieve tokens&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    scan abap-source abap&lt;/P&gt;&lt;P&gt;              tokens into lt_token&lt;/P&gt;&lt;P&gt;          statements into lt_state.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at lt_state into ls_state.&lt;/P&gt;&lt;P&gt;      clear: ls_defin.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Field name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      read table lt_token into ls_token&lt;/P&gt;&lt;P&gt;                         index ls_state-from.&lt;/P&gt;&lt;P&gt;      ls_defin-fieldname = ls_token-str.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Reference type&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      read table lt_token into ls_token&lt;/P&gt;&lt;P&gt;                         index ls_state-to.&lt;/P&gt;&lt;P&gt;      l_reffld = ls_token-str.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Check if this type is defined in program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      free: lt_recu.&lt;/P&gt;&lt;P&gt;      call method get_definition&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          repid = repid&lt;/P&gt;&lt;P&gt;          struc = l_reffld&lt;/P&gt;&lt;P&gt;        changing&lt;/P&gt;&lt;P&gt;          abap  = lt_recu.&lt;/P&gt;&lt;P&gt;      if lt_recu is initial.&lt;/P&gt;&lt;P&gt;        if not g_level is initial.&lt;/P&gt;&lt;P&gt;          concatenate g_level ls_defin-fieldname&lt;/P&gt;&lt;P&gt;                 into ls_defin-fieldname separated by '-'.&lt;/P&gt;&lt;P&gt;          condense ls_defin-fieldname.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        if l_reffld cs '-'.&lt;/P&gt;&lt;P&gt;          split l_reffld at '-'&lt;/P&gt;&lt;P&gt;                       into ls_defin-ref_tabname&lt;/P&gt;&lt;P&gt;                            ls_defin-ref_fieldname.&lt;/P&gt;&lt;P&gt;          if ls_defin-ref_tabname = 'SY'.&lt;/P&gt;&lt;P&gt;            ls_defin-ref_tabname = 'SYST'.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          ls_defin-ref_fieldname = ls_token-str.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        append ls_defin to me-&amp;gt;gt_defin.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Process sub levels&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if me-&amp;gt;g_level is initial.&lt;/P&gt;&lt;P&gt;          me-&amp;gt;g_level = ls_defin-fieldname.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          concatenate me-&amp;gt;g_level ls_defin-fieldname into me-&amp;gt;g_level&lt;/P&gt;&lt;P&gt;                                             separated by '-'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        call method recursive_definition&lt;/P&gt;&lt;P&gt;          exporting&lt;/P&gt;&lt;P&gt;            repid = repid&lt;/P&gt;&lt;P&gt;          changing&lt;/P&gt;&lt;P&gt;            abap  = lt_recu.&lt;/P&gt;&lt;P&gt;        if me-&amp;gt;g_level cs '-'.&lt;/P&gt;&lt;P&gt;          shift me-&amp;gt;g_level right up to '-'.&lt;/P&gt;&lt;P&gt;          shift me-&amp;gt;g_level right.&lt;/P&gt;&lt;P&gt;          shift me-&amp;gt;g_level left deleting leading space.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          clear: me-&amp;gt;g_level.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "recursive_definition&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get fieldcat&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method get_alv_fieldcat.&lt;/P&gt;&lt;P&gt;    out_fieldcat = me-&amp;gt;gt_fcat.&lt;/P&gt;&lt;P&gt;  endmethod.                    "get_alv_fieldcat&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set table name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_table_name.&lt;/P&gt;&lt;P&gt;    data: l_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into l_fcat.&lt;/P&gt;&lt;P&gt;      l_fcat-tabname = in_tabname.&lt;/P&gt;&lt;P&gt;      modify me-&amp;gt;gt_fcat from l_fcat.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    me-&amp;gt;g_table = in_tabname.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_table_name&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set title&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_title.&lt;/P&gt;&lt;P&gt;    me-&amp;gt;g_title = in_title.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_title&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set fieldcat&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_fieldcat.&lt;/P&gt;&lt;P&gt;    me-&amp;gt;gt_fcat = in_fieldcat.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_fieldcat&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set field invisible&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_fieldnoout.&lt;/P&gt;&lt;P&gt;    data: l_field type fieldname,&lt;/P&gt;&lt;P&gt;          l_noout type c,&lt;/P&gt;&lt;P&gt;          l_tech  type c,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_field = in_field.&lt;/P&gt;&lt;P&gt;    if in_noout is supplied.&lt;/P&gt;&lt;P&gt;      l_noout = in_noout.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_noout = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if in_tech is supplied.&lt;/P&gt;&lt;P&gt;      l_tech = in_tech.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                       where fieldname = l_field.&lt;/P&gt;&lt;P&gt;      ls_fcat-no_out = l_noout.&lt;/P&gt;&lt;P&gt;      ls_fcat-tech   = l_tech.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting no_out tech.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_fieldnoout&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set field editable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_fieldedit.&lt;/P&gt;&lt;P&gt;    data: l_field type fieldname,&lt;/P&gt;&lt;P&gt;          l_edit  type c,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_field = in_field.&lt;/P&gt;&lt;P&gt;    if in_edit is supplied.&lt;/P&gt;&lt;P&gt;      l_edit = in_edit.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_edit = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                       where fieldname = l_field.&lt;/P&gt;&lt;P&gt;      ls_fcat-edit = l_edit.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting edit.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_fieldedit&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set field text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_fieldtext.&lt;/P&gt;&lt;P&gt;    data: l_field type fieldname,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_field = in_field.&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                       where fieldname = l_field.&lt;/P&gt;&lt;P&gt;      ls_fcat-seltext_m = in_ftext.&lt;/P&gt;&lt;P&gt;      ls_fcat-ddictxt = 'M'.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting seltext_m ddictxt.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_fieldtext&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set field sum&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_fieldsum.&lt;/P&gt;&lt;P&gt;    data: l_field type fieldname,&lt;/P&gt;&lt;P&gt;          l_dosum type c,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_field = in_field.&lt;/P&gt;&lt;P&gt;    if in_dosum is supplied.&lt;/P&gt;&lt;P&gt;      l_dosum = in_dosum.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_dosum = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                       where fieldname = l_field.&lt;/P&gt;&lt;P&gt;      ls_fcat-do_sum = l_dosum.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting do_sum.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_fieldsum&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set line break in field catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_linebreak.&lt;/P&gt;&lt;P&gt;    data: l_field type fieldname,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv,&lt;/P&gt;&lt;P&gt;          l_tabix type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    l_field = in_field.&lt;/P&gt;&lt;P&gt;    read table me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                       with key fieldname = l_field.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      l_tabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      exit.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat&lt;/P&gt;&lt;P&gt;                        from l_tabix.&lt;/P&gt;&lt;P&gt;      ls_fcat-row_pos = ls_fcat-row_pos + 1.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting row_pos.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_linebreak&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set settings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_settings.&lt;/P&gt;&lt;P&gt;    call method map_structure&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        source = in_settings&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        destin = me-&amp;gt;gs_sett.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_settings&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set layout&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_layout.&lt;/P&gt;&lt;P&gt;    call method map_structure&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        source = in_layout&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        destin = me-&amp;gt;gs_layo.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_layout&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set printing options&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_print.&lt;/P&gt;&lt;P&gt;    call method map_structure&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;        source = in_print&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        destin = me-&amp;gt;gs_prin.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_print&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set sortings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_sorting.&lt;/P&gt;&lt;P&gt;    data: l_desc   type alvdynp-sortdown,&lt;/P&gt;&lt;P&gt;          l_group  type alvdynp-grouplevel,&lt;/P&gt;&lt;P&gt;          l_subtot type alvdynp-subtotals.&lt;/P&gt;&lt;P&gt;    data: ls_sort  type slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;          l_index  type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if in_desc is supplied.&lt;/P&gt;&lt;P&gt;      l_desc = in_desc.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if in_group is supplied.&lt;/P&gt;&lt;P&gt;      l_group = in_group.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_group = '*'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    if in_subtot is supplied.&lt;/P&gt;&lt;P&gt;      l_subtot = in_subtot.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_subtot = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    describe table me-&amp;gt;gt_sort lines l_index.&lt;/P&gt;&lt;P&gt;    l_index = l_index + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ls_sort-spos = l_index.&lt;/P&gt;&lt;P&gt;    ls_sort-fieldname = in_field.&lt;/P&gt;&lt;P&gt;    ls_sort-tabname = me-&amp;gt;g_table.&lt;/P&gt;&lt;P&gt;    if l_desc is initial.&lt;/P&gt;&lt;P&gt;      ls_sort-up = 'X'.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      ls_sort-down = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    ls_sort-group = l_group.&lt;/P&gt;&lt;P&gt;    ls_sort-subtot = l_subtot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append ls_sort to me-&amp;gt;gt_sort.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_sorting&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set key fields&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_keys.&lt;/P&gt;&lt;P&gt;    data: l_key   type c,&lt;/P&gt;&lt;P&gt;          ls_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if in_key is supplied.&lt;/P&gt;&lt;P&gt;      l_key = in_key.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      l_key = 'X'.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    loop at me-&amp;gt;gt_fcat into ls_fcat from 1 to in_level.&lt;/P&gt;&lt;P&gt;      ls_fcat-key = l_key.&lt;/P&gt;&lt;P&gt;      modify gt_fcat from ls_fcat transporting key.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_keys&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Add event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_alv_event.&lt;/P&gt;&lt;P&gt;    data: ls_evnt type slis_alv_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at gt_evnt into ls_evnt&lt;/P&gt;&lt;P&gt;                   where name = in_name.&lt;/P&gt;&lt;P&gt;      ls_evnt-form = in_form.&lt;/P&gt;&lt;P&gt;      modify gt_evnt from ls_evnt transporting form.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;    if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;      ls_evnt-name = in_name.&lt;/P&gt;&lt;P&gt;      ls_evnt-form = in_form.&lt;/P&gt;&lt;P&gt;      append ls_evnt to gt_evnt.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_alv_event&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Add event&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method set_all_events.&lt;/P&gt;&lt;P&gt;    data: lt_trig type table of rtrig,&lt;/P&gt;&lt;P&gt;          ls_evnt 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     = g_table_type&lt;/P&gt;&lt;P&gt;      importing&lt;/P&gt;&lt;P&gt;        et_events       = gt_evnt&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        list_type_wrong = 1&lt;/P&gt;&lt;P&gt;        others          = 2.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Get program form routines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      load report g_repid part 'TRIG' into lt_trig.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    List of valid form routines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at gt_evnt into ls_evnt.&lt;/P&gt;&lt;P&gt;        concatenate 'F_' ls_evnt-name into ls_evnt-form.&lt;/P&gt;&lt;P&gt;        if not g_block_mode is initial.&lt;/P&gt;&lt;P&gt;          concatenate ls_evnt-form me-&amp;gt;g_table into ls_evnt-form&lt;/P&gt;&lt;P&gt;                                       separated by '_'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        read table lt_trig with key exto  = ls_evnt-form&lt;/P&gt;&lt;P&gt;                                    fform = 'X'&lt;/P&gt;&lt;P&gt;                       transporting no fields.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          modify gt_evnt from ls_evnt transporting form.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          delete gt_evnt.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endmethod.                    "set_all_events&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Map fields from incoming structure into attribute&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method map_structure.&lt;/P&gt;&lt;P&gt;    data: ob_desc  type ref to cl_abap_structdescr,&lt;/P&gt;&lt;P&gt;          ls_compo type abap_compdescr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    field-symbols: .&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endmethod.                    "map_structure&lt;/P&gt;&lt;P&gt;***&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Get default variant&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***&lt;/P&gt;&lt;P&gt;  method get_default_variant.&lt;/P&gt;&lt;P&gt;    g_variant_level = g_variant_level + 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    out_variant-report   = me-&amp;gt;g_repid.&lt;/P&gt;&lt;P&gt;    out_variant-handle   = me-&amp;gt;g_variant_level.&lt;/P&gt;&lt;P&gt;    out_variant-username = sy-uname.&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     = 'U'&lt;/P&gt;&lt;P&gt;      changing&lt;/P&gt;&lt;P&gt;        cs_variant = out_variant&lt;/P&gt;&lt;P&gt;      exceptions&lt;/P&gt;&lt;P&gt;        others     = 0.&lt;/P&gt;&lt;P&gt;  endmethod.                    "get_default_variant&lt;/P&gt;&lt;P&gt;endclass.                    "lcl_table_display IMPLEMENTATION&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 all helpfull answers.&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;Jay&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:38:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468303#M554529</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468304#M554530</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;Check this sample code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZALV_HIERSEQ_LIST.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.                    " ALV Global types&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS :&lt;/P&gt;&lt;P&gt;  C_X VALUE 'X',&lt;/P&gt;&lt;P&gt;  C_GT_VBAP TYPE SLIS_TABNAME VALUE 'GT_VBAP',&lt;/P&gt;&lt;P&gt;  C_GT_VBAK TYPE SLIS_TABNAME VALUE 'GT_VBAK'.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;  SKIP,&lt;/P&gt;&lt;P&gt;  BEGIN OF LINE,COMMENT 5(27) V_1 FOR FIELD P_MAX.          "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS P_MAX(02) TYPE N DEFAULT '10' OBLIGATORY.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN :&lt;/P&gt;&lt;P&gt;  SKIP, BEGIN OF LINE,COMMENT 5(27) V_2 FOR FIELD P_EXPAND. "#EC NEEDED&lt;/P&gt;&lt;P&gt;PARAMETERS P_EXPAND AS CHECKBOX DEFAULT C_X.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES :&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  BEGIN OF TY_VBAK,&lt;/P&gt;&lt;P&gt;    VBELN TYPE VBAK-VBELN,             " Sales document&lt;/P&gt;&lt;P&gt;    KUNNR TYPE VBAK-KUNNR,             " Sold-to party&lt;/P&gt;&lt;P&gt;    NETWR TYPE VBAK-NETWR,             " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;    ERDAT TYPE VBAK-ERDAT,             " Creation date&lt;/P&gt;&lt;P&gt;    WAERK TYPE VBAK-WAERK,             " SD document currency&lt;/P&gt;&lt;P&gt;    EXPAND TYPE XFELD,&lt;/P&gt;&lt;P&gt;  END OF TY_VBAK,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  BEGIN OF TY_VBAP,&lt;/P&gt;&lt;P&gt;    VBELN TYPE VBAP-VBELN,             " Sales document&lt;/P&gt;&lt;P&gt;    POSNR TYPE VBAP-POSNR,             " Sales document&lt;/P&gt;&lt;P&gt;    MATNR TYPE VBAP-MATNR,             " Material number&lt;/P&gt;&lt;P&gt;    NETWR TYPE VBAP-NETWR,             " Net Value of the Sales Order&lt;/P&gt;&lt;P&gt;    WAERK TYPE VBAP-WAERK,             " SD document currency&lt;/P&gt;&lt;P&gt;  END OF TY_VBAP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA :&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1st Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  GT_VBAK TYPE TABLE OF TY_VBAK,&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2nd Table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  GT_VBAP TYPE TABLE OF TY_VBAP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  V_1 = 'Maximum of records to read'.&lt;/P&gt;&lt;P&gt;  V_2 = 'With ''EXPAND'' field'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;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;Read Sales Document: Header Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT VBELN KUNNR NETWR WAERK ERDAT&lt;/P&gt;&lt;P&gt;    FROM VBAK&lt;/P&gt;&lt;P&gt;      UP TO P_MAX ROWS&lt;/P&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF TABLE GT_VBAK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT GT_VBAK[] IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Read Sales Document: Item Data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    SELECT VBELN POSNR MATNR NETWR WAERK&lt;/P&gt;&lt;P&gt;      FROM VBAP&lt;/P&gt;&lt;P&gt;      INTO CORRESPONDING FIELDS OF TABLE GT_VBAP&lt;/P&gt;&lt;P&gt;       FOR ALL ENTRIES IN GT_VBAK&lt;/P&gt;&lt;P&gt;     WHERE VBELN = GT_VBAK-VBELN.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM F_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Form  F_DISPLAY&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM F_DISPLAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Macro definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DEFINE M_FIELDCAT.&lt;/P&gt;&lt;P&gt;    LS_FIELDCAT-TABNAME = &amp;amp;1.&lt;/P&gt;&lt;P&gt;    LS_FIELDCAT-FIELDNAME = &amp;amp;2.&lt;/P&gt;&lt;P&gt;    LS_FIELDCAT-REF_TABNAME = &amp;amp;3.&lt;/P&gt;&lt;P&gt;    LS_FIELDCAT-CFIELDNAME = &amp;amp;4.       " Field with currency unit&lt;/P&gt;&lt;P&gt;    APPEND LS_FIELDCAT TO LT_FIELDCAT.&lt;/P&gt;&lt;P&gt;  END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DEFINE M_SORT.&lt;/P&gt;&lt;P&gt;    LS_SORT-TABNAME = &amp;amp;1.&lt;/P&gt;&lt;P&gt;    LS_SORT-FIELDNAME = &amp;amp;2.&lt;/P&gt;&lt;P&gt;    LS_SORT-UP        = C_X.&lt;/P&gt;&lt;P&gt;    APPEND LS_SORT TO LT_SORT.&lt;/P&gt;&lt;P&gt;  END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    LS_LAYOUT   TYPE SLIS_LAYOUT_ALV,&lt;/P&gt;&lt;P&gt;    LS_KEYINFO  TYPE SLIS_KEYINFO_ALV,&lt;/P&gt;&lt;P&gt;    LS_SORT     TYPE SLIS_SORTINFO_ALV,&lt;/P&gt;&lt;P&gt;    LT_SORT     TYPE SLIS_T_SORTINFO_ALV," Sort table&lt;/P&gt;&lt;P&gt;    LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,&lt;/P&gt;&lt;P&gt;    LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV." Field catalog&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LS_LAYOUT-GROUP_CHANGE_EDIT = C_X.&lt;/P&gt;&lt;P&gt;  LS_LAYOUT-COLWIDTH_OPTIMIZE = C_X.&lt;/P&gt;&lt;P&gt;  LS_LAYOUT-ZEBRA             = C_X.&lt;/P&gt;&lt;P&gt;  LS_LAYOUT-DETAIL_POPUP      = C_X.&lt;/P&gt;&lt;P&gt;  LS_LAYOUT-GET_SELINFOS      = C_X.&lt;/P&gt;&lt;P&gt;  IF P_EXPAND = C_X.&lt;/P&gt;&lt;P&gt;    LS_LAYOUT-EXPAND_FIELDNAME  = 'EXPAND'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build field catalog and sort table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAK 'VBELN' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAK 'KUNNR' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAK 'NETWR' 'VBAK' 'WAERK'.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAK 'WAERK' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAK 'ERDAT' 'VBAK' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAP 'POSNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAP 'MATNR' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAP 'NETWR' 'VBAP' 'WAERK'.&lt;/P&gt;&lt;P&gt;  M_FIELDCAT C_GT_VBAP 'WAERK' 'VBAP' ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  M_SORT C_GT_VBAK 'KUNNR'.&lt;/P&gt;&lt;P&gt;  M_SORT C_GT_VBAP 'NETWR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LS_KEYINFO-HEADER01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;  LS_KEYINFO-ITEM01 = 'VBELN'.&lt;/P&gt;&lt;P&gt;  LS_KEYINFO-ITEM02 = 'POSNR'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dipslay Hierarchical list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      I_CALLBACK_PROGRAM      = SY-CPROG&lt;/P&gt;&lt;P&gt;      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'&lt;/P&gt;&lt;P&gt;      IS_LAYOUT               = LS_LAYOUT&lt;/P&gt;&lt;P&gt;      IT_FIELDCAT             = LT_FIELDCAT&lt;/P&gt;&lt;P&gt;      IT_SORT                 = LT_SORT&lt;/P&gt;&lt;P&gt;      I_TABNAME_HEADER        = C_GT_VBAK&lt;/P&gt;&lt;P&gt;      I_TABNAME_ITEM          = C_GT_VBAP&lt;/P&gt;&lt;P&gt;      IS_KEYINFO              = LS_KEYINFO&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      T_OUTTAB_HEADER         = GT_VBAK&lt;/P&gt;&lt;P&gt;      T_OUTTAB_ITEM           = GT_VBAP&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      PROGRAM_ERROR           = 1&lt;/P&gt;&lt;P&gt;      OTHERS                  = 2.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;P&gt;          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " F_LIST_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Form USER_COMMAND                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM USER_COMMAND USING I_UCOMM     TYPE SY-UCOMM&lt;/P&gt;&lt;P&gt;                        IS_SELFIELD TYPE SLIS_SELFIELD.     "#EC CALLED&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA LS_VBAK TYPE TY_VBAK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE I_UCOMM.&lt;/P&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.                       " Pick&lt;/P&gt;&lt;P&gt;      CASE IS_SELFIELD-TABNAME.&lt;/P&gt;&lt;P&gt;        WHEN C_GT_VBAP.&lt;/P&gt;&lt;P&gt;        WHEN C_GT_VBAK.&lt;/P&gt;&lt;P&gt;          READ TABLE GT_VBAK INDEX IS_SELFIELD-TABINDEX INTO LS_VBAK.&lt;/P&gt;&lt;P&gt;          IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Sales order number&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            SET PARAMETER ID 'AUN' FIELD LS_VBAK-VBELN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Display Sales Order&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " USER_COMMAND&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:39:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468304#M554530</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:39:21Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468305#M554531</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi mahesh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try this code it will help u &lt;/P&gt;&lt;P&gt;REPORT  ZTESTASH_ALV01 LINE-COUNT 20.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: SLIS.&lt;/P&gt;&lt;P&gt;TABLES MSEG.&lt;/P&gt;&lt;P&gt;*DATA: I_MSEG LIKE MSEG OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_MCHB LIKE MCHB OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_FTAB TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .&lt;/P&gt;&lt;P&gt;DATA: I_FTAB1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_MSEG OCCURS 0,&lt;/P&gt;&lt;P&gt;      ZEILE LIKE MSEG-ZEILE,&lt;/P&gt;&lt;P&gt;      MENGE LIKE MSEG-MENGE,&lt;/P&gt;&lt;P&gt;      MEINS LIKE MSEG-MEINS,&lt;/P&gt;&lt;P&gt;      MATNR LIKE MSEG-MATNR,&lt;/P&gt;&lt;P&gt;      WERKS LIKE MSEG-WERKS,&lt;/P&gt;&lt;P&gt;      CHARG LIKE MSEG-CHARG,&lt;/P&gt;&lt;P&gt;      BWART LIKE MSEG-BWART,&lt;/P&gt;&lt;P&gt;      END OF I_MSEG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: MATNR_NO(10),&lt;/P&gt;&lt;P&gt;      X TYPE I.&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 BEGIN OF BLOCK B1 WITH FRAME TITLE TIT1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS DOC_NO FOR MSEG-MBLNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETER: DOC_YEAR TYPE MSEG-MJAHR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;******************&lt;STRONG&gt;START OF SELECTION BLOCK&lt;/STRONG&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;P&gt;  SELECT * FROM MSEG&lt;/P&gt;&lt;P&gt;           INTO  CORRESPONDING FIELDS OF TABLE I_MSEG&lt;/P&gt;&lt;P&gt;           WHERE MBLNR IN DOC_NO&lt;/P&gt;&lt;P&gt;           AND MJAHR = DOC_YEAR.&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;*====================CALLING OF FUNCTION =================&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 1.&lt;/P&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'ZEILE'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'ITEM'.&lt;/P&gt;&lt;P&gt;I_FTAB-HOTSPOT = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-HOTSPOT = ' '.&lt;/P&gt;&lt;P&gt;*i_ftab-EMPHASIZE  = 'X'.&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 2.&lt;/P&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'MENGE'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'QUANTITY'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'MEINS'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'U-M-O'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 4.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'MATNR'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'MATERIAL NO'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 5.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'WERKS'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'PLANT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 6.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'CHARG'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'BATCH'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I_FTAB-COL_POS = 7.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I_FTAB-TABNAME = I_MSEG.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I_FTAB-FIELDNAME = 'BWART'.&lt;/P&gt;&lt;P&gt;I_FTAB-SELTEXT_M = 'MOVEMENT TYPE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND I_FTAB.&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;     IT_FIELDCAT                       = I_FTAB[]&lt;/P&gt;&lt;P&gt;        I_CALLBACK_PROGRAM                = SY-REPID&lt;/P&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      T_OUTTAB                          = I_MSEG&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;remember to reward the points if helpfull..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:43:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468305#M554531</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: ALV SAMPLE CODE.</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468306#M554532</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;look at this DEMO/TEST-Reports in SAP:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_COLUMN      &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_EVENTS      &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_FORM_EVENTS &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_FUNCTIONS   &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_LAYOUT      &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_POPUP       &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_RECURSION   &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_REFRESH     &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_SELECTIONS  &lt;/P&gt;&lt;P&gt;SALV_DEMO_HIERSEQ_SIMPLE      &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_COLUMNS     &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_EVENTS      &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_FORM_EVENTS &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_FUNCTIONS   &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_LAYOUT      &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_POPUP       &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_RECURSION   &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_REFRESH     &lt;/P&gt;&lt;P&gt;SALV_TEST_HIERSEQ_SELECTIONS  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BCALV_TEST_HIERSEQ_LIST       &lt;/P&gt;&lt;P&gt;BCALV_TEST_HIERSEQ_LIST_EVENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards, Dieter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jul 2007 06:48:30 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-sample-code/m-p/2468306#M554532</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-02T06:48:30Z</dc:date>
    </item>
  </channel>
</rss>

