BLOCK LIST DISPLAY IN ALV

Moderator message: Please do not use ALL CAPITALS in your message subjects
I am facing a peculiar situation with respect to a report with 2 block lists.
STEP 1:
I first use REUSE_ALV_BLOCK_LIST_INIT with EXPORTING parameter as
i_callback_program = SY-REPID.
This works fine with return code of sy-subrc = 0.
STEP 2:
I build the field catalog and internal table - in debug I also check the sequence of fields of both the internal tables and field calatogs - perfect - no issues.
Then I call REUSE_ALV_BLOCK_LIST_APPEND with exporting parameters as layout, field catalog, table name & event and tables parameter as internal table and exception handling, I repeat this call for the two internal tables.
This works fine with return code of sy-subrc = 0
STEP 3:
I use REUSE_ALV_BLOCK_LIST_DISPLAY to display the two lists one after the other, and I have coded for error message if sy-subrc is non zero.
This works fine with return code of sy-subrc = 0
ISSUE :
Internal table 1 and internal table 2 both have say 4 records, then I see the two lists with heading(s) perfec and col width also optimized and zebra (alternate steipes also in place), and 4 rows for each internal table on output, however the rows are BLANK - NO DATA, whereas I have checked both internal tables before the call and they seem to have the data perfectly and in the same sequence as the field catalog - however the rows are BLANK.
I checked in debugging but was just not able to find out why if the internal tables and field catalog is perfect, no data is passed to output.
Please help !!
Edited by: M N on Nov 14, 2008 5:22 AM
Edited by: Matt on Nov 14, 2008 10:23 AM

*& Report  Y_ALV_BLOCKLIST_
REPORT  Y_ALV_BLOCKLIST_16131.
TYPE-POOLS : SLIS.
DATA: X_LAYOUT TYPE SLIS_LAYOUT_ALV.
Events
DATA: GT_XEVENTS TYPE SLIS_T_EVENT.
DATA: GT_YEVENTS TYPE SLIS_T_EVENT.
data : XS_EVENT  TYPE SLIS_ALV_EVENT.
DATA: XFIELD TYPE SLIS_T_FIELDCAT_ALV.
DATA: YFIELD TYPE SLIS_T_FIELDCAT_ALV.
DATA: AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA: GT_PRINT TYPE SLIS_PRINT_ALV.
TYPES : BEGIN OF TY_MARA ,
          MATNR TYPE MATNR,
          MTART TYPE MTART,
         END OF TY_MARA.
TYPES: BEGIN OF TY_MAKT ,
       MATNR TYPE MATNR,
       MAKTX TYPE MAKTX,
      END OF TY_MAKT.
DATA : ITAB TYPE TABLE OF TY_MARA,
       PTAB TYPE TABLE OF TY_MAKT.
START-OF-SELECTION.
SELECT DATA
  SELECT MATNR MAKTX FROM MAKT INTO TABLE PTAB UP TO 10 ROWS.
  SELECT  MATNR MTART FROM MARA INTO TABLE ITAB UP TO 10 ROWS.
*eVENT FOR Heading
  PERFORM F_EVENTS.
FIELD CATALOG
  PERFORM F_FIELDCAT.
INIT BLOCK ALV
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID.
ADD INTERNAL TABLE ITAB
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                  = X_LAYOUT
      IT_FIELDCAT                = XFIELD "ALVFC
      I_TABNAME                  = 'ITAB'
      IT_EVENTS                  = GT_XEVENTS
    TABLES
      T_OUTTAB                   = ITAB
    EXCEPTIONS
      PROGRAM_ERROR              = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS                     = 3.
ADD INTERNAL TABLE PTAB
REFRESH ALVFC[].
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      IS_LAYOUT                  = X_LAYOUT
      IT_FIELDCAT                = YFIELD "ALVFC
      I_TABNAME                  = 'PTAB'
      IT_EVENTS                  = GT_YEVENTS
    TABLES
      T_OUTTAB                   = PTAB
    EXCEPTIONS
      PROGRAM_ERROR              = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS                     = 3.
DISPLAY
  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
    EXCEPTIONS
      PROGRAM_ERROR = 1
      OTHERS        = 2.
*GT_PRINT-RESERVE_LINES = 2.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
      EXPORTING
           IS_PRINT = GT_PRINT.
*&      Form  F_FIELDCAT
      text
-->  p1        text
<--  p2        text
FORM F_FIELDCAT .
  DATA: L_COUNT TYPE I.
  CLEAR AFIELD.
  L_COUNT = L_COUNT + 1.
  AFIELD-COL_POS = L_COUNT.
  AFIELD-FIELDNAME = 'MATNR'.
  AFIELD-REF_TABNAME = 'MARA'.
  AFIELD-KEY = 'X'.                    "define field as key
AFIELD-DO_SUM = 'X'.
  APPEND AFIELD TO XFIELD.
  CLEAR AFIELD.
  L_COUNT = L_COUNT + 1.
  AFIELD-COL_POS = L_COUNT.
  AFIELD-FIELDNAME = 'MTART'.
  AFIELD-REF_TABNAME = 'MARA'.
  AFIELD-KEY = 'X'.                    "define field as key
  APPEND AFIELD TO XFIELD.
  L_COUNT = 0.
  CLEAR AFIELD.
  L_COUNT = L_COUNT + 1.
  AFIELD-COL_POS = L_COUNT.
  AFIELD-FIELDNAME = 'MATNR'.
  AFIELD-REF_TABNAME = 'MAKT'.
  AFIELD-KEY = 'X'.                    "define field as key
  APPEND AFIELD TO YFIELD.
  CLEAR AFIELD.
  L_COUNT = L_COUNT + 1.
  AFIELD-COL_POS = L_COUNT.
  AFIELD-FIELDNAME = 'MAKTX'.
  AFIELD-REF_TABNAME = 'MAKT'.
  AFIELD-KEY = 'X'.                    "define field as key
  APPEND AFIELD TO YFIELD.
ENDFORM.                    " F_FIELDCAT
*&      Form  F_EVENTS
      text
-->  p1        text
<--  p2        text
FORM F_EVENTS .
CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
  XS_EVENT-FORM = 'TOP1'.
  APPEND XS_EVENT TO GT_XEVENTS.
CLEAR XS_EVENT.
  XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
  XS_EVENT-FORM = 'TOP2'.
  APPEND XS_EVENT TO GT_YEVENTS.
ENDFORM.                    " F_EVENTS
FORM TOP1.
WRITE : 'MARA TABLE'.
ENDFORM.
FORM TOP2.
WRITE : 'MAKT TABLE'.
ENDFORM.

Similar Messages

  • Displaying Average of Columns in ALV Blocked List Display

    Hi,
    I am using ALV Blocked List Display. For the 1st block, I need to display the average of certain columns.
    I am using the following code in the field catalog of the RATE column to display the average , but it is not displayed.
    wa_disptab_field-col_pos = 8.
      wa_disptab_field-fieldname = 'RATE''.
      wa_disptab_field-ref_tabname = 'IT_DISPTAB'.
      wa_disptab_field-seltext_m = 'RS PER KL'.
      wa_disptab_field-do_sum  =  'C'.
      wa_disptab_field-datatype  = 'QUAN'.
      append wa_disptab_field to it_disptab_field.
      clear wa_disptab_field.
    For the same column, the sum is displayed with the same code if I change this part:
    wa_disptab_field-do_sum  =  'C'.   To   wa_disptab_field-do_sum  =  'X'.
    Please Help..

    Hi Debarati,
    go For function/pattern [reuse_alv_grid_display_lvc]
    do the following as mentioned in the previous reply's.
    And  To find the Average of your requirement, pass the field names as per the requirement. 
    gs_sort-fieldname = 'RATE'.
    gs_sort-tabname = 'T_DISPTAB' "Final Internal table
    gs_sort-subtot = 'X'.
    APPEND gs_sort TO gt_sort.
    gs_sort-fieldname = 'RATE1'.
    gs_sort-tabname = 'T_DISPTAB' "Final Internal table
    gs_sort-subtot = 'X'.
    APPEND gs_sort TO gt_sort.
    gs_sort-fieldname = 'RATE2'.
    gs_sort-tabname = 'T_DISPTAB' "Final Internal table
    gs_sort-subtot = 'X'.
    APPEND gs_sort TO gt_sort.
    gs_sort-fieldname = 'RATE3'.
    gs_sort-tabname = 'T_DISPTAB' "Final Internal table
    gs_sort-subtot = 'X'.
    APPEND gs_sort TO gt_sort.
    CALL FUNCTION ' REUSE_ALV_GRID_DISPLAY_lvc'
       EXPORTING
          i_callback_program      = sy-cprog
          i_callback_user_command = 'USER_COMMAND'
          is_layout               = gs_layout
          it_fieldcat              = wa_disptab
          it_events               = gt_events
          it_sort                   = gt_sort
          i_default               = 'X'
          i_save                  = 'U'
        TABLES
          t_outtab                = gt_final
       EXCEPTIONS
         program_error                  = 1
         OTHERS                         = 2
      IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    i think this will  workout.
    Thanks & Regards,
    Abhisek
    Edited by: Abhisek Pradhan on Sep 29, 2011 7:55 PM

  • Hierarchial and blocked list displays

    Hi friends,
    when do we opt for hierachial list display and when do we opt for blocked list display?

    Hi Suresh,
    Blocked ALV displays the data in blocks together in output. e.g. suppose you want to dsplay the data of header & item level. Then you candisplay the data of header records in first block & Item level data in another block on same output screen.
    For hierarchical ALV check the below link
    http://help.sap.com/saphelp_nw2004s/helpdata/en/6e/4e2941fa918739e10000000a1550b0/frameset.htm
    & check this link also:
    A new approach to ALV Programming
    Hope this will help.
    Regards,
    Nitin.

  • IW69 from List Display to ALV Gird Display

    Hi All
    Transaction IW69  is working as List display for other users and ALV gird for my user. I would like to change from list display to ALV gird for other users too. How could i do this.
    Kindly help me.
    Thanks

    I am seeing ony Line1 Line2 Line3 tabs in the path Settings->Layout->Current for other users but the option you specified is there for my user.
    thanks

  • Issue with Secondary list display in ALV BLocked List

    Hi all,
    I am using ALV Blocked List consissting of 3 blocks.
    For my requirement, in the 1st block, I need to make a colum clickable, for which I have used the User_Command Event.
    But this is not working. The second list is not gettin displayed.
    Here'z my code:
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
          EXPORTING
            i_callback_program             = v_repid
           i_callback_top_of_page       = 'TOP-OF-PAGE'            "see FORM
      I_CALLBACK_PF_STATUS_SET       = ' '
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
      IT_EXCLUDING                   =
      REFRESH: it_events[].
      wa_events-name = slis_ev_top_of_list.
      wa_events-form = 'FIRST_HEADING'.
      APPEND wa_events TO it_events.
      wa_events-name = slis_ev_user_command.
      wa_events-form = 'USER_COMMAND'.
      APPEND wa_events TO it_events.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
        EXPORTING
          is_layout                        = v_layout
          it_fieldcat                      = it_disptab_field[]
          i_tabname                        = 'DISPTAB'
          it_events                        = it_events[]                  " Call 1st  BLOCK TO BE APPENDED For SALES ANALYSIS
      IT_SORT                          =
      I_TEXT                           = ' '
        TABLES
          t_outtab                         = it_disptab
       EXCEPTIONS
         program_error                    = 1
         maximum_of_appends_reached       = 2
         OTHERS                           = 3.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
      CASE r_ucomm.
        WHEN '&IC1'.
           READ TABLE it_disptab INTO w_disptab INDEX rs_selfield-tabindex.
           IF rs_selfield-fieldname = 'KUNAG'.
               WRITE:/1  'invoice',
                 10   'Quantity in Base Unit',
                 20   'Base Unit',
                 30   'Qty in KL',
                 40   'Price'.
          ENDIF.
       ENDCASE.
    ENDFORM.                    " USER_COMMAND
    Please Help..

    Hi Ganesh,
    Thanks for your reply. I have already used hotspot on the fieldcat of the clickable field.  But it seems that except for the hand cursor appearing only on that field, the other columns are also clickable.
    Moreover, only the fiirst block should be clickable but all the blocks are applying the user_command.
    This might be due to the REUSE_ALV_BLOCK_LIST_INIT Function Module, which applies to all the blocks.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
          EXPORTING
            i_callback_program             = v_repid
           i_callback_top_of_page       = 'TOP-OF-PAGE'            "see FORM
      I_CALLBACK_PF_STATUS_SET       = ' '
       i_callback_user_command        = 'USER_COMMAND'
      IT_EXCLUDING                   =
    In orser to avoid this, I am using the following code, which can be a temporary solution to the problem.
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
      DATA: row_count TYPE sy-lilli.
      CASE r_ucomm.
        WHEN '&IC1'.
          DESCRIBE TABLE it_disptab LINES row_count.
          READ TABLE it_disptab INTO w_disptab INDEX rs_selfield-tabindex.
          IF rs_selfield-tabindex LE row_count AND rs_selfield-tabindex ne 0 AND rs_selfield-tabname = 'DISPTAB'.
            PERFORM get_data.
            PERFORM build_fieldcat.
            PERFORM display_second_list.
          ELSE.
            EXIT.
          ENDIF.
      ENDCASE.
    ENDFORM.                    " USER_COMMAND

  • Regarding block list display

    Hi all,
        can i know in which type of scenarios BLOCK LISTS IN ALV are used.

    raju,
      2.     BLOCK REPORT
      This is used to have multiple lists continuously.
    The important functions used in this report are:
    A.     REUSE_ALV_BLOCK_LIST_INIT
    B.     REUSE_ALV_BLOCK_LIST_APPEND
    C.     REUSE_ALV_BLOCK_LIST_HS_APPEND
    D.     REUSE_ALV_BLOCK_LIST_DISPLAY
    A.     REUSE_ALV_BLOCK_LIST_INIT
    Parameters:
    I.     I_CALLBACK_PROGRAM
    II.     I_CALLBACK_PF_STATUS_SET
    III.     I_CALLBACK_USER_COMMAND 
    This function module is used to set the default gui status etc.
    B.     REUSE_ALV_BLOCK_LIST_APPEND
    Parameters :
          Export :
    I.     is_layout       :      layout settings for block       
    II.     it_fieldcat      :      field catalog 
    III.     i_tabname    :       internal table name with output data            
    IV.     it_events      :       internal table with all possible events
                  Tables :
                              i.          t_outtab        :  internal table with output data.
    This function module adds the data to the block.
    Repeat this function for all the different blocks to be displayed one after the other.
    C.     REUSE_ALV_BLOCK_LIST_HS_APPEND
           This function module is used for hierarchical sequential blocks. 
    D.     REUSE_ALV_BLOCK_LIST_DISPLAY
    Parameters :  All the parameters are optional. 
    This function module display the list with data appended by the above function.
    Here the functions REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_EVENTS_GET, REUSE_ALV_COMMENTARY_WRITE  can be used.
    Pls. Mark if useful

  • Doubt in block list display

    hi all,
    in my object i have displayed the output using alv block list ... when i print that one i am geting each block in seperate page ... but i need to print all in a single page ... please help me out in solving this
    thanks in advance
    lokesh

    Hi Lokesh,
    Refer the sample code:
    CLEAR w_event.
      w_event-name = slis_ev_top_of_page.
      w_event-form = 'TOP_OF_PAGE'.
      APPEND w_event TO i_events1.
      CLEAR w_event.
      w_event-name = slis_ev_top_of_page.
      w_event-form = 'XTOP_OF_PAGE'.
      APPEND w_event TO i_events2.
    DATA: lv_repid LIKE sy-repid.
      lv_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
           EXPORTING
                i_callback_program       = lv_repid
                i_callback_user_command  = 'USER_COMMAND'
                i_callback_pf_status_set = 'PF_STATUS'.
    *-- Vendor Schedule List
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
           EXPORTING
                it_fieldcat = i_field_cat1
                is_layout   = w_lay_out1
                i_tabname   = '<I_TABLE>'
                it_events   = i_events1
           TABLES
                t_outtab    = <i_table>.
    *-- Error Lsit display
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
           EXPORTING
                it_fieldcat = i_field_cat2
                is_layout   = w_lay_out2
                i_tabname   = 'I_ERROR'
                it_events   = i_events2
           TABLES
                t_outtab    = i_error[].
      w_print-reserve_lines = 2.
      w_print-no_print_listinfos = c_x.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
           EXPORTING
                is_print = w_print.
    ENDFORM.                    " f0504_create_list
    Reward points if this Helps.
    Manish

  • Block list display when report is executed in background?

    Hello all,
    when i execute the report program in foreground ,output is displayed as block list with two blocks say success table and failure table.
    when i execute the same report program in background, i could see only a single block which is success table. Why is this?
    Thanks,
    Sindhu.

    Did you check all the pages in spool? If the report has a output which runs multiple pages, then spool might not display everything unless you change the setting to display more than certain pages. Kindly check the same.

  • Top-of-page for list display thru ALV

    Hi All,
    I was suppose to write a detail report thru ALV, this I have handled thru hotspot and in the user_command,I am have the below code.. for ALv I am using FM REUSE_ALV_GRID_DISPLAY
    FORM User_command.
    WHEN '&IC1'.
    PERFORM LIST_DISPLAY using RS_SELFIELD-tabindex.
    ENDFORM.
    FORM LIST_DISPLAY USING    P_INDEX.
    LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 500.
    SET PF-STATUS space.
    SUPPRESS DIALOG.
    Read table g_t_sum index p_index.
    loop at g_t_emp where code = g_t_sum-code and
                          keyfld = g_t_sum-keyfld
      write :/ g_t_emp-pernr, 10(25) g_t_emp-sname.
    endloop.
    ENDFORM.
    The above write statment is not trigerring either top-of-page ot top-od-page during line-selection.
    I have even tried pushing the event and form name into it it_events..
    Kindly suggest how to go about this, I need to get top-of-page for this list-display.
    Thanks in advance
    Regards,
    Mangalagi S V

    Hi All,
    Thanks for all your replies.
    I am not looking at top_of_page for GRID, it's working for me but I need top_of_page for the list display that is for the list which I am generating when the users double click it particular row.
    By default I am getting the below header automatically.
    Dynamic data selection                         1
    Though I have coded the header in top-of-page during line selection since I am writing the list under USER_COMMAND, I thought I will get the header but it's not..
    The FM is attached below..
    Ausgaberoutine mit FB REUSE_ALV_GRID_DISPLAY
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
              i_callback_program          = g_f_repid
              i_callback_pf_status_set    = 'SET_PF_STATUS'
              i_callback_user_command     = 'USER_COMMAND'
              i_callback_top_of_page      = 'TOP_OF_PAGE'
              is_layout                   = g_r_layout
              it_fieldcat                 = g_t_fcat
              i_save                      = 'A'
             is_variant                  = s_variant         "70492INF0039
              is_variant                  = g_f_variant        "70492INF0039
              is_events                   = it_events[]
           TABLES
               t_outtab                    = g_t_sum.
          FORM USER_COMMAND                                             *
         Callbackroutine: Ausgabe Fehlerliste             XDGL9CK069538 *
    FORM USER_COMMAND USING R_UCOMM
                            RS_SELFIELD TYPE SLIS_SELFIELD.
    case r_ucomm.
    when 'OK'.
    WHEN '&IC1'.
    PERFORM LIST_DISPLAY using RS_SELFIELD-tabindex.
    endcase.
    ENDFORM.
    Kindly suggest
    Thanks in advance.
    Regards,
    Mangalagi S V

  • List Display After ALV Display.

    Hi,
    i want to use write statement after display of the GRID ALV report. I User-command is getting dynamically called up when i presses the button.
    FORM user_command USING p_ucomm     LIKE sy-ucomm
                            p_selfield  TYPE slis_selfield.
      CASE p_ucomm.
        WHEN '&GENERAL'.
        READ TABLE i_general INTO wa_general INDEX p_selfield-tabindex.
        IF sy-subrc = 0.
          LEAVE TO LIST-PROCESSING.
          WRITE : sy-uline(90).
          write: / 'Serial: ', wa_general-serial.
        ENDIF.
    ENDFORM.
    the problem is i m not able to use back button in the dynamic list display. Use pf-status as well but not working. Pressing BACK button does nothing.
    Want to activate print and back button in the dynamic list display. (used pf-status which has back and print fucntion code but not working.)
    Reward points sure for right answers.
    Kartavya

    Hi..
    Try this.....
    FORM user_command USING p_ucomm LIKE sy-ucomm
    p_selfield TYPE slis_selfield.
    CASE p_ucomm.
    WHEN '&GENERAL'.
    READ TABLE i_general INTO wa_general INDEX p_selfield-tabindex.
    IF sy-subrc = 0.
    <b>SET PF-STATUS SPACE.</b>  "this will call the Standard GUI
    LEAVE TO LIST-PROCESSING.
    WRITE : sy-uline(90).
    write: / 'Serial: ', wa_general-serial.
    ENDIF.
    ENDFORM.
    <b>Reward if Helpful.</b>

  • List display for ALV using class and methods

    Hi friends
    I want the list display for the ALV using Class and methods
    which class and methods i can use.
    Here we can't use the REUSE_ALV_LIST_DISPLAY and also GRID
    I was done GRID display using class and methods but i want only list display for using class.
    plz Give me sample code of list display not for grid.
    Thanks
    Nani.

    hi
    please check with this code...
    declare grid and container.
    DATA : o_alvgrid TYPE REF TO cl_gui_alv_grid,
    o_dockingcontainer TYPE REF TO cl_gui_docking_container,
    i_fieldcat TYPE lvc_t_fcat,"fieldcatalogue
    w_layout TYPE lvc_s_layo."layout
    If any events like double click,etc., are needed we have to add additional functionality.
    call the screen in program.
    Then , create the container as follows
    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
    CREATE OBJECT o_dockingcontainer
    EXPORTING
    ratio = '95'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    ENDIF.
    CREATE OBJECT o_alvgrid
    EXPORTING
    i_parent = o_dockingcontainer.
    Build the fieldcatalog
    create a output structure in SEll for the ALV output
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    i_structure_name = <alv output>
    CHANGING
    ct_fieldcat = i_fieldcat[]
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE i030."Error in building the field catalogue
    LEAVE LIST-PROCESSING.
    ENDIF.
    *If you need to modify the field catalog,modify it using field sysmbols
    *setting the layout
    w_layout-grid_title = title.
    w_layout-zebra = 'X'.
    then displaying the output
    CALL METHOD o_alvgrid->set_table_for_first_display
    EXPORTING
    i_save = 'A'
    is_layout = w_layout
    CHANGING
    it_outtab = i_output[]
    it_fieldcatalog = i_fieldcat[]
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc <> 0.
    MESSAGE i032 ."Error in Displaying
    LEAVE LIST-PROCESSING.
    ENDIF.
    *After that in PAI of the screen, you need to free the *object while going back from the screen(according to *your requirement)
    MODULE user_command_9001 INPUT.
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    PERFORM f9600_free_objects:
    USING o_alvgrid 'ALV' text-e02,
    USING o_dockingcontainer 'DOCKING'
    text-e01.
    LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_9001 INPUT
    *in the program, write the follwoing code
    FORM f9600_free_objects USING pobject
    value(ptype)
    value(ptext).
    DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
    CASE ptype.
    WHEN 'ALV'.
    l_objectalv = pobject.
    IF NOT ( l_objectalv IS INITIAL ).
    CALL METHOD l_objectalv->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, l_objectalv.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'DOCKING'.
    DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
    lobjectdock = pobject.
    IF NOT ( lobjectdock IS INITIAL ).
    CALL METHOD lobjectdock->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectdock.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'CONTAINER'.
    DATA: lobjectcontainer TYPE REF TO cl_gui_container.
    lobjectcontainer = pobject.
    IF NOT ( lobjectcontainer IS INITIAL ).
    CALL METHOD lobjectcontainer->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectcontainer.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN OTHERS.
    sy-subrc = 1.
    PERFORM f9700_error_handle USING
    text-e04.
    ENDCASE.
    ENDFORM. " f9600_free_objects
    FORM f9700_error_handle USING value(ptext).
    IF sy-subrc NE 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
    EXPORTING
    titel = text-e03
    txt2 = sy-subrc
    txt1 = ptext.
    ENDIF.
    endform.
    also check with this
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Hope this helps
    if it helped, you can acknowledge the same by rewarding
    regards
    dinesh

  • Block List Display

    Hi Friends,
    How can I add blocks dynamically depending on different vendor. please can you tell any1 how to add blocks dynamically to the list in block list.and I dont know how many blocks can be there....as it depends on vendors they give in selection screen.......................
    Depending on the vendor I have to create different block.
    Please revert back......
    requirement is to display the debitnote report. if more vendors are given in selection screen then i have to display the blocks different for different vendors..................
    Thanks in Advance...................please revert its urgent............

    You should do this way
    DATA: SORT TYPE SLIS_SORTINFO_ALV,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV.
    SORT-FIELDNAME = 'VBELN'.
    SORT-SPOS = '1'.
    SORT-GROUP = '*'.
    SORT-UP = 'X'.
    APPEND SORT TO IT_SORT.
    if you do this way it will dynamically do block display based on the field you sepecify.
    Still if you face problem you check this sample code
    REPORT  ZALV_LIST_SUBTOTAL                      .
    type-pools: slis.
    data: f_fldcat type slis_fieldcat_alv,
          t_fldcat type slis_t_fieldcat_alv,
          l_layout type slis_layout_alv,
          f_event type slis_alv_event,
          t_event type slis_t_event.
    data: begin of itab occurs 0,
          vbeln like vbap-vbeln,
          posnr like vbap-posnr,
          zmeng like vbap-zmeng,
          text(35),
          end of itab.
    select vbeln posnr zmeng from vbap
           into table itab up to 20 rows.
    loop at itab.
      itab-zmeng = sy-tabix.
      modify itab index sy-TABIX.
    endloop.
    f_fldcat-fieldname = 'text'.
    f_fldcat-col_pos = 1.
    f_fldcat-outputlen = 15.
    *f_fldcat-checkbox = 'X'.
    *f_fldcat-edit = ''.
    append f_fldcat to t_fldcat.
    clear f_fldcat.
    f_fldcat-fieldname = 'VBELN'.
    f_fldcat-taBname = 'itab'.
    f_fldcat-seltext_l = 'VBELN'.
    f_fldcat-col_pos = 2.
    f_fldcat-outputlen = 30.
    f_fldcat-just = 'C'.
    f_fldcat-edit = 'X'.
    append f_fldcat to t_fldcat.
    clear f_fldcat.
    f_fldcat-fieldname = 'POSNR'.
    f_fldcat-tabname = 'itab'.
    f_fldcat-seltext_l = 'POSNR'.
    f_fldcat-col_pos = 3.
    f_fldcat-edit = 'X'.
    append f_fldcat to t_fldcat.
    clear f_fldcat.
    f_fldcat-fieldname = 'ZMENG'.
    f_fldcat-tabname = 'itab'.
    f_fldcat-seltext_l = 'ZMENG'.
    f_fldcat-col_pos = 4.
    f_fldcat-edit = 'X'.
    f_fldcat-do_sum = 'X'.
    append f_fldcat to t_fldcat.
    clear f_fldcat.
    DATA: SORT TYPE SLIS_SORTINFO_ALV,
          IT_SORT TYPE SLIS_T_SORTINFO_ALV.
    SORT-FIELDNAME = 'VBELN'.
    SORT-SPOS = '1'.
    SORT-GROUP = '*'.
    SORT-UP = 'X'.
    SORT-SUBTOT = 'X'.
    *SORT-OBLIGATORY = 'UL'.
    APPEND SORT TO IT_SORT.
    l_layout-TOTALS_TEXT = 'total text'.
    l_layout-SUBTOTALS_TEXT = 'subtotal text'.
    *l_layout-totals_only = 'X'.
    data: prg type sy-repid.
    prg = sy-repid.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    *   I_INTERFACE_CHECK              = ' '
    *   I_BYPASSING_BUFFER             =
    *   I_BUFFER_ACTIVE                = ' '
       I_CALLBACK_PROGRAM             = SY-REPID
    *   I_CALLBACK_PF_STATUS_SET       = ' '
    *   I_CALLBACK_USER_COMMAND        = ' '
    *   I_STRUCTURE_NAME               =
       IS_LAYOUT                      = L_LAYOUT
       IT_FIELDCAT                    = T_FLDCAT
    *   IT_EXCLUDING                   =
    *   IT_SPECIAL_GROUPS              =
       IT_SORT                        = IT_SORT[]
    *   IT_FILTER                      =
    *   IS_SEL_HIDE                    =
    *   I_DEFAULT                      = 'X'
    *   I_SAVE                         = ' '
    *   IS_VARIANT                     =
       IT_EVENTS                      = T_EVENT
    *   IT_EVENT_EXIT                  =
    *   IS_PRINT                       =
    *   IS_REPREP_ID                   =
    *   I_SCREEN_START_COLUMN          = 0
    *   I_SCREEN_START_LINE            = 0
    *   I_SCREEN_END_COLUMN            = 0
    *   I_SCREEN_END_LINE              = 0
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER        =
    *   ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = ITAB
    * EXCEPTIONS
    *   PROGRAM_ERROR                  = 1
    *   OTHERS                         = 2
    IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • AT Line selection event in ALV blocked list display

    Hi Exparts,
                    I am using
                      REUSE_ALV_BLOCK_LIST_INIT,REUSE_ALV_BLOCK_LIST_APPEND,
                      REUSE_ALV_BLOCK_LIST_DISPLAY.
    My question, In a field if user double click then a specific Transaction will execute.
    please help me with relevant document.

    dear
    this is very simple when u will call alv_grid_display FM :
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-cprog
    *   I_CALLBACK_PF_STATUS_SET          = ' '
         i_callback_user_command           = *'USER_COMMAND'*
    *   I_CALLBACK_TOP_OF_PAGE            = ' '
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
    *   I_GRID_TITLE                      =
    *   I_GRID_SETTINGS                   =
    *   IS_LAYOUT                         = LS_LAYOUT
         it_fieldcat                       = ls_fieldcat[]
    *   IT_EXCLUDING                      =
    *   IT_SPECIAL_GROUPS                 =
    *   IT_SORT                           =
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
         i_default                         = 'X'
         i_save                            = 'A'
    *   IS_VARIANT                        =
         it_events                         = g_events[]
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   I_HTML_HEIGHT_TOP                 =
    *   I_HTML_HEIGHT_END                 =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = t_output
    * EXCEPTIONS
    *   PROGRAM_ERROR                     = 1
    *   OTHERS                            = 2
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      PERFORM user_command USING   r_ucomm
                                   rs_selfield.
    *FORM user_command  USING    p_r_ucomm*
                                *p_rs_selfield.*
      *CASE p_r_ucomm.*
        *WHEN '&IC1'.*
          *READ TABLE t_output WITH KEY check = 'X'.*
          *IF t_output-check IS INITIAL.*
            *MESSAGE 'Plz select the checkbox' TYPE 'E'.*
          *ENDIF.*
          *READ LINE sy-index FIELD VALUE t_output-vbeln.*
          *CHECK NOT t_output-vbeln IS INITIAL.*
          *SET PARAMETER ID 'AUN' FIELD t_output-vbeln.*
          *CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.*
      *ENDCASE.*
    *ENDFORM.

  • How can we update after the list displays in ALV report.

    HI all sap gurus,
        I have one ALV report, after executing the report list will displays there i need to update the data. please give me answer without oops concept.
    thanks,
    reddy

    YOu need to make some fields editable in order to update the data.
    for that you should set the EDIT = 'X' in the field catalog for that column.
    Regards,
    Ravi

  • How to display second list under an alv already displayed

    hi
    I have a list being displayed using grid control...i need to display anotehr list data below the first list please suggest?
    block list display will not have sorted and all functinality ? do i need touse block list display function module??
    regards
    arora

    Hi Arora Nishant,
    REUSE_ALV_BLOCK_LIST_INIT
    then
    REUSE_ALV_BLOCK_LIST_APPEND " for each fieldcat
    create two diff fieldcate for both alv output and use this FM for each fieldcat to append it in output..
    it's having sorting Functionality as well as export functionalities... etc etc..
    then
    REUSE_ALV_BLOCK_LIST_DISPLAY
    Done..
    See below example...
    REPORT ZILESH_ALV3 LINE-COUNT 100 .
    **& tables declaration
    TABLES: MARA.
    **& type-pools declaration
    TYPE-POOLS: SLIS.
    **& data declaration
    DATA: G_REPID TYPE SY-REPID.
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "mara
    WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA : IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV, "makt
    WA_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.
    DATA : IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV, "marc
    WA_FIELDCAT2 TYPE SLIS_FIELDCAT_ALV.
    DATA: GT_PRINT TYPE SLIS_PRINT_ALV,
    WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
    XS_EVENT TYPE SLIS_ALV_EVENT,
    GT_XEVENTS TYPE SLIS_T_EVENT,
    GT_YEVENTS TYPE SLIS_T_EVENT,
    GT_ZEVENTS TYPE SLIS_T_EVENT,
    WA_SORT TYPE SLIS_SORTINFO_ALV,
    IT_SORT TYPE SLIS_T_SORTINFO_ALV.
    DATA: BEGIN OF IT_MARA OCCURS 0,
    MATNR LIKE MARA-MATNR,
    MTART LIKE MARA-MTART,
    MATKL LIKE MARA-MATKL,
    MEINS LIKE MARA-MEINS,
    NTGEW LIKE MARA-NTGEW,
    END OF IT_MARA.
    DATA: BEGIN OF IT_MAKT OCCURS 0,
    MATNR LIKE MAKT-MATNR,
    SPRAS LIKE MAKT-SPRAS,
    MAKTX LIKE MAKT-MAKTX,
    MAKTG LIKE MAKT-MAKTG,
    END OF IT_MAKT.
    DATA: BEGIN OF IT_MARC OCCURS 0,
    MATNR LIKE MARC-MATNR,
    WERKS LIKE MARC-WERKS,
    LADGR LIKE MARC-LADGR,
    MTVFP LIKE MARC-MTVFP,
    DISPR LIKE MARC-DISPR,
    DISMM LIKE MARC-DISMM,
    DISPO LIKE MARC-DISPO,
    END OF IT_MARC.
    **& initialisation
    INITIALIZATION.
      G_REPID = SY-REPID.
    **& selection screen
      SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-001.
      SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,
      S_MTART FOR MARA-MTART.
      SELECTION-SCREEN END OF BLOCK B.
    **& start of selection
    START-OF-SELECTION.
      PERFORM GET_MARADETAILS.
      PERFORM GET_MAKTDETAILS.
      PERFORM GET_MARCDETAILS.
    **& Form get_maradetails
    *text
    *--> p1 text
    *<-- p2 text
    FORM GET_MARADETAILS .
      SELECT MATNR
      MTART
      MATKL
      MEINS
      NTGEW FROM MARA
      INTO TABLE IT_MARA
      WHERE MATNR IN S_MATNR AND
      MTART IN S_MTART.
    ENDFORM. " get_maradetails
    **& Form get_maktdetails
    *text
    *--> p1 text
    *<-- p2 text
    FORM GET_MAKTDETAILS .
      SELECT MATNR
      SPRAS
      MAKTX
      MAKTG FROM MAKT INTO TABLE IT_MAKT
      FOR ALL ENTRIES IN IT_MARA
      WHERE MATNR = IT_MARA-MATNR..
    ENDFORM. " get_maktdetails
    **& Form get_marcdetails
    *text
    *--> p1 text
    *<-- p2 text
    FORM GET_MARCDETAILS .
      SELECT MATNR
      WERKS
      LADGR
      MTVFP
      DISPR
      DISMM
      DISPO FROM MARC
      INTO TABLE IT_MARC
      FOR ALL ENTRIES IN IT_MARA
      WHERE MATNR = IT_MARA-MATNR.
    ENDFORM. " get_marcdetails
    **& end of selection
    END-OF-SELECTION.
      PERFORM SORT_LIST.
      PERFORM MODIFY_FIELDCAT.
      PERFORM EVENT_LIST.
      PERFORM BLOCK_LIST.
    **& Form modify_fieldcat
    *text
    *--> p1 text
    *<-- p2 text
    FORM MODIFY_FIELDCAT .
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-TABNAME = 'IT_MARA'.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NUM'.
      WA_FIELDCAT-COL_POS = 1.
      WA_FIELDCAT-OUTPUTLEN = 18.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MTART'.
      WA_FIELDCAT-TABNAME = 'IT_MARA'.
      WA_FIELDCAT-SELTEXT_L = 'MAT TYPE'.
      WA_FIELDCAT-COL_POS = 2.
      WA_FIELDCAT-OUTPUTLEN = 5.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MATKL'.
      WA_FIELDCAT-TABNAME = 'IT_MARA'.
      WA_FIELDCAT-SELTEXT_L = 'MAT GROUP'.
      WA_FIELDCAT-COL_POS = 3.
      WA_FIELDCAT-OUTPUTLEN = 10.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'MEINS'.
      WA_FIELDCAT-TABNAME = 'IT_MARA'.
      WA_FIELDCAT-SELTEXT_L = 'UNIT'.
      WA_FIELDCAT-COL_POS = 4.
      WA_FIELDCAT-OUTPUTLEN = 5.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-FIELDNAME = 'NTGEW'.
      WA_FIELDCAT-TABNAME = 'IT_MARA'.
      WA_FIELDCAT-DO_SUM = 'X'.
      WA_FIELDCAT-SELTEXT_L = 'QUANTITY'.
      WA_FIELDCAT-COL_POS = 5.
      WA_FIELDCAT-OUTPUTLEN = 15.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      CLEAR WA_FIELDCAT1.
      WA_FIELDCAT1-FIELDNAME = 'MATNR'.
      WA_FIELDCAT1-TABNAME = 'IT_MAKT'.
      WA_FIELDCAT1-SELTEXT_L = 'MATERIAL NUM'.
      WA_FIELDCAT1-COL_POS = 1.
      WA_FIELDCAT1-OUTPUTLEN = 18.
      APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
      CLEAR WA_FIELDCAT1.
      WA_FIELDCAT1-FIELDNAME = 'SPRAS'.
      WA_FIELDCAT1-TABNAME = 'IT_MAKT'.
      WA_FIELDCAT1-SELTEXT_L = 'LANGUAGE'.
      WA_FIELDCAT1-COL_POS = 2.
      WA_FIELDCAT1-OUTPUTLEN = 2.
      APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
      CLEAR WA_FIELDCAT1.
      WA_FIELDCAT1-FIELDNAME = 'MAKTX'.
      WA_FIELDCAT1-TABNAME = 'IT_MAKT'.
      WA_FIELDCAT1-SELTEXT_L = 'MAT DESC'.
      WA_FIELDCAT1-COL_POS = 3.
      WA_FIELDCAT1-OUTPUTLEN = 40.
      APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
      CLEAR WA_FIELDCAT1.
      WA_FIELDCAT1-FIELDNAME = 'MAKTG'.
      WA_FIELDCAT1-TABNAME = 'IT_MAKT'.
      WA_FIELDCAT1-SELTEXT_L = 'GRP DESC'.
      WA_FIELDCAT1-COL_POS = 4.
      WA_FIELDCAT1-OUTPUTLEN = 40.
      APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
      CLEAR WA_FIELDCAT1.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'MATNR'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'MATERIAL NUM'.
      WA_FIELDCAT2-COL_POS = 1.
      WA_FIELDCAT2-OUTPUTLEN = 18.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'WERKS'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'PLANT'.
      WA_FIELDCAT2-COL_POS = 2.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'LADGR'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'LOAD GRP'.
      WA_FIELDCAT2-COL_POS = 3.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'MTVFP'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'GRP CHK'.
      WA_FIELDCAT2-COL_POS = 4.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'DISPR'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'MRP PROFILE'.
      WA_FIELDCAT2-COL_POS = 5.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'DISMM'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'MRP TYPE'.
      WA_FIELDCAT2-COL_POS = 6.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
      WA_FIELDCAT2-FIELDNAME = 'DISPO'.
      WA_FIELDCAT2-TABNAME = 'IT_MARC'.
      WA_FIELDCAT2-SELTEXT_L = 'MRP CON'.
      WA_FIELDCAT2-COL_POS = 7.
      WA_FIELDCAT2-OUTPUTLEN = 4.
      APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.
      CLEAR WA_FIELDCAT2.
    ENDFORM. " modify_fieldcat
    **& Form BLOCK_LIST
    *text
    *--> p1 text
    *<-- p2 text
    FORM BLOCK_LIST .
      CLEAR WA_LAYOUT.
      WA_LAYOUT-ZEBRA = 'X'.
      WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
        EXPORTING
          I_CALLBACK_PROGRAM       = G_REPID
          I_CALLBACK_PF_STATUS_SET = ' '
          I_CALLBACK_USER_COMMAND  = 'user_command'.
    *IT_EXCLUDING =
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
        EXPORTING
          IS_LAYOUT                  = WA_LAYOUT
          IT_FIELDCAT                = IT_FIELDCAT[]
          I_TABNAME                  = 'IT_MARA'
          IT_EVENTS                  = GT_XEVENTS
          IT_SORT                    = IT_SORT
          I_TEXT                     = ' '
        TABLES
          T_OUTTAB                   = IT_MARA
        EXCEPTIONS
          PROGRAM_ERROR              = 1
          MAXIMUM_OF_APPENDS_REACHED = 2
          OTHERS                     = 3.
      IF SY-SUBRC = 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      IS_LAYOUT = WA_LAYOUT
      IT_FIELDCAT = IT_FIELDCAT1
      I_TABNAME = 'IT_MAKT'
      IT_EVENTS = GT_YEVENTS
    *IT_SORT =
      I_TEXT = ' '
      TABLES
      T_OUTTAB = IT_MAKT
      EXCEPTIONS
      PROGRAM_ERROR = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS = 3
      IF SY-SUBRC = 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
      EXPORTING
      IS_LAYOUT = WA_LAYOUT
      IT_FIELDCAT = IT_FIELDCAT2
      I_TABNAME = 'IT_MARC'
      IT_EVENTS = GT_ZEVENTS
    *IT_SORT =
      I_TEXT = ' '
      TABLES
      T_OUTTAB = IT_MARC
      EXCEPTIONS
      PROGRAM_ERROR = 1
      MAXIMUM_OF_APPENDS_REACHED = 2
      OTHERS = 3
      IF SY-SUBRC = 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
      EXPORTING
      I_INTERFACE_CHECK = ' '
      IS_PRINT = GT_PRINT
      I_SCREEN_START_COLUMN = 0
      I_SCREEN_START_LINE = 0
      I_SCREEN_END_COLUMN = 0
      I_SCREEN_END_LINE = 0
    *IMPORTING
    *E_EXIT_CAUSED_BY_CALLER =
    *ES_EXIT_CAUSED_BY_USER =
      EXCEPTIONS
      PROGRAM_ERROR = 1
      OTHERS = 2
      IF SY-SUBRC = 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM. " BLOCK_LIST
    **& Form EVENT_LIST
    *text
    *--> p1 text
    *<-- p2 text
    FORM EVENT_LIST .
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENT-FORM = 'XTOP_OF_PAGE'.
      APPEND XS_EVENT TO GT_XEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.
      XS_EVENT-FORM = 'XEND_OF_PAGE'.
      APPEND XS_EVENT TO GT_XEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
      XS_EVENT-FORM = 'XTOP_OF_LIST'.
      APPEND XS_EVENT TO GT_XEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_LIST.
      XS_EVENT-FORM = 'XEND_OF_LIST'.
      APPEND XS_EVENT TO GT_XEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.
      XS_EVENT-FORM = 'YEND_OF_PAGE'.
      APPEND XS_EVENT TO GT_YEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENT-FORM = 'YTOP_OF_PAGE'.
      APPEND XS_EVENT TO GT_YEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
      XS_EVENT-FORM = 'YTOP_OF_LIST'.
      APPEND XS_EVENT TO GT_YEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_LIST.
      XS_EVENT-FORM = 'YEND_OF_LIST'.
      APPEND XS_EVENT TO GT_YEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.
      XS_EVENT-FORM = 'ZEND_OF_PAGE'.
      APPEND XS_EVENT TO GT_ZEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENT-FORM = 'ZTOP_OF_PAGE'.
      APPEND XS_EVENT TO GT_ZEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
      XS_EVENT-FORM = 'ZTOP_OF_LIST'.
      APPEND XS_EVENT TO GT_ZEVENTS.
      CLEAR XS_EVENT.
      XS_EVENT-NAME = SLIS_EV_END_OF_LIST.
      XS_EVENT-FORM = 'ZEND_OF_LIST'.
      APPEND XS_EVENT TO GT_ZEVENTS.
      CLEAR XS_EVENT.
    ENDFORM. " EVENT_LIST
    *&      Form  XTOP_OF_PAGE
    *       text
    FORM XTOP_OF_PAGE.
      WRITE:/ 'TOP OF PAGE FOR MARA'.
    ENDFORM.                    "XTOP_OF_PAGE
    *&      Form  YTOP_OF_PAGE
    *       text
    FORM YTOP_OF_PAGE.
      WRITE:/ 'TOP OF PAGE FOR MAKT'.
    ENDFORM.                    "YTOP_OF_PAGE
    *&      Form  ZTOP_OF_PAGE
    *       text
    FORM ZTOP_OF_PAGE.
      WRITE:/ 'TOP OF PAGE FOR MARC'.
    ENDFORM.                    "ZTOP_OF_PAGE
    *&      Form  XEND_OF_PAGE
    *       text
    FORM XEND_OF_PAGE.
      WRITE:/ 'END OF PAGE FOR MARA'.
    ENDFORM.                    "XEND_OF_PAGE
    *&      Form  YEND_OF_PAGE
    *       text
    FORM YEND_OF_PAGE.
      WRITE:/ 'END OF PAGE FOR MAKT'.
    ENDFORM.                    "YEND_OF_PAGE
    *&      Form  ZEND_OF_PAGE
    *       text
    FORM ZEND_OF_PAGE.
      WRITE:/ 'END OF PAGE FOR MARC'.
    ENDFORM.                    "ZEND_OF_PAGE
    *&      Form  XTOP_OF_LIST
    *       text
    FORM XTOP_OF_LIST.
      WRITE:/ 'TOP OF LIST FOR MARA'.
    ENDFORM.                    "XTOP_OF_LIST
    *&      Form  YTOP_OF_LIST
    *       text
    FORM YTOP_OF_LIST.
      WRITE:/ 'TOP OF LIST FOR MAKT'.
    ENDFORM.                    "YTOP_OF_LIST
    *&      Form  ZTOP_OF_LIST
    *       text
    FORM ZTOP_OF_LIST.
      WRITE:/ 'TOP OF LIST FOR MARC'.
    ENDFORM.                    "ZTOP_OF_LIST
    *&      Form  XEND_OF_LIST
    *       text
    FORM XEND_OF_LIST.
      WRITE:/ 'END OF LIST FOR MARA'.
    ENDFORM.                    "XEND_OF_LIST
    *&      Form  YEND_OF_LIST
    *       text
    FORM YEND_OF_LIST.
      WRITE:/ 'END OF LIST FOR MAKT'.
    ENDFORM.                    "YEND_OF_LIST
    *&      Form  ZEND_OF_LIST
    *       text
    FORM ZEND_OF_LIST.
      WRITE:/ 'END OF LIST FOR MARC'.
    ENDFORM.                    "ZEND_OF_LIST
    **& Form sort_list
    *text
    *--> p1 text
    *<-- p2 text
    FORM SORT_LIST .
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'MTART'.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'MATKL'.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
      CLEAR WA_SORT.
    ENDFORM. " sort_list
    Hope it will solve your problem..
    Thanks & Regards
    ilesh 24x7

Maybe you are looking for