SUBTOTAL USING LIST DISPLAY

Hi,
Is it possible to calculate subtotals using reuse_alv_list_display instead of using reuse_alv_grid_display.
Also i want to print sub-headings using ALV.
Ex:
Under the column Mark
i want the subject names as sub_heading.
                                  MARKS
ENG          HINDI           MATHS              SCIENCE
Like this i want output.
Thanx in advance.

HI Anitha
Initially you need to have the following coloumns in your internal table
CLASS
ROLL NO.
ENG
HINDI
MATHS
SCIENCE
Populate the internal table with values.
Please refer for ALV output
http://www.sap-partner.hu/ABAP_HELP_INFO/An%20Easy%20Reference%20for%20ALV%20Grid%20Control.pdf
Code for your ALV
CALL SCREEN 100.
* SCREEN PROGRAM SHOULD CONTAIN
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  MODULE create_alv.
PROCESS AFTER INPUT.
  MODULE user_command_0100.
* DOUBLE CLICK ON THESE MODULES AND DO THE FOLLOWING CODE
MODULE status_0100 OUTPUT.
* DOUBLE CLICK ON 'S_LIST1' AND CREATE PF-STATUS
  SET PF-STATUS 'S_LIST1'.
  SET TITLEBAR 'T1'.
ENDMODULE.                 " STATUS_0100  OUTPUT
MODULE create_alv OUTPUT.
DATA: alv_dock    TYPE REF TO cl_gui_docking_container,
      alv_grid    TYPE REF TO cl_gui_alv_grid,
      gt_fieldcat TYPE lvc_t_fcat,
      wa_fieldcat TYPE lvc_s_fcat,
      it_sort     TYPE lvc_t_sort,
      wa_sort     TYPE lvc_s_sort,
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'CLASS'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'ID'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'MATHS'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'SCI'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'SOCIAL'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  CLEAR wa_fieldcat.
  wa_fieldcat-tabname       = ITAB
  wa_fieldcat-fieldname     = 'ENG'.
  wa_fieldcat-outputlen     = '10'.
  APPEND wa_fieldcat TO gt_fieldcat.
  wa_layout-grid_title = sy-title.
  wa_layout-zebra      = 'X'.
  wa_layout-cwidth_opt = 'X'.
  wa_layout-sel_mode   = 'A'.
  wa_layout-info_fname = 'COLOR'.
  LOOP AT gt_fieldcat INTO wa_fieldcat.
    CASE wa_fieldcat-fieldname.
      WHEN 'CLASS' OR 'ID'.
       WHEN OTHERS.
        wa_fieldcat-do_sum = 'X'.
        MODIFY gt_fieldcat FROM wa_fieldcat.
    ENDCASE.
  ENDLOOP.
  wa_sort-fieldname = 'CLASS'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  wa_sort-down = space.
  APPEND wa_sort TO it_sort.
  CHECK alv_dock IS INITIAL.
  CREATE OBJECT alv_dock
    EXPORTING
      extension  = 1200
     EXCEPTIONS
       OTHERS    = 1.
  IF sy-subrc <> 0 AND sy-batch IS INITIAL.
    MESSAGE a016(pn) WITH 'Unable to create output area'(e01).
  ENDIF.
  CREATE OBJECT alv_grid
    EXPORTING
      i_parent      = alv_dock
   EXCEPTIONS
      OTHERS    = 1.
  IF sy-subrc <> 0 AND sy-batch IS INITIAL.
    MESSAGE a016(pn) WITH 'Unable to create output area'(e01).
  ENDIF.
  CALL METHOD alv_grid->set_table_for_first_display
      EXPORTING
        i_structure_name              = 'ZPS_NI_SAVING'
        is_layout                     = wa_layout
*      it_toolbar_excluding          = t_ui_functions
      CHANGING
        it_outtab                     = it_output
        it_fieldcatalog               = gt_fieldcat
        it_sort                       = it_sort
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
  CASE ok_code.
    WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
      CALL METHOD: alv_grid->free, alv_dock->free.
      FREE: alv_grid, alv_dock.
      SET SCREEN 0.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT

Similar Messages

  • Default Layout Variant using LIST Display FM

    Hello All,
    I'm using the FM REUSE_ALV_LIST_DISPLAYin my Report.
    I want to save the layout Variant as a Default Layout Variant .
    But when I'm clicking the option for saving a Layout I'm getting only one check box for User Specific Layout.
    How can I set a layout created variant as a DEFAULT Layout Variant ?
    Regards,
    Deepu.K

    Hi,
    Once List is displayed, use the path: Setting->Layout>Layout Management->Click the check box against the layout which you want to set as the default. Then click on Define Default settings, first icon. You can follow the above instructions after running one of the DEMO pgms viz. BALVSD01.
    I hope this helps,
    Regards
    Raju Chitale

  • Logo using  List ALV list dispaly

    Hi,
    I am using FM:REUSE_ALV_COMMENTARY_WRITE to print logo in ALv header with list display using REUSE_ALV_LIST_DISPLAY.
    Header is being displayed except logo.Below is the code.
    Please let me know if anything to be done additionally to get the logo ,if naybody has displayed logo using list display i mean above FMs.
    FORM TOP_OF_PAGE.
    Report title
      clear t_heading[].
      clear x_heading.
      x_heading-typ = 'H'.
      x_heading-info = ''.
      append x_heading to t_heading.
    Program name
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'Program: '.
      x_heading-info = sy-repid.
      append x_heading to t_heading.
    User who is running the report
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'User: '.
      x_heading-info = sy-uname.
      append x_heading to t_heading.
    Date of execution
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'Date: '.
      write sy-datum to x_heading-info.
      append x_heading to t_heading.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
           I_LOGO                   = 'ENJOYSAP_LOGO'
           IT_LIST_COMMENTARY       = t_heading
      I_END_OF_LIST_GRID       =
       I_ALV_FORM               = 'X'.
    ENDFORM.

    Hi,
    Kindly go through this below sample program:
    *+
    REPORT  YKC_ALV_OOPS_LOGO_DISPALY.
    tables: MARA.
    TYPE-POOLS cndp.
    data: begin of it_tab occurs 0,
          matnr like mara-matnr,
          ersda like mara-ersda,  "creation date
          ernam like mara-ernam,  "person created
          pstat like mara-pstat,  "maint stat
          lvorm like mara-lvorm,  "flg for deletion
          mtart like mara-mtart,  "mat type
          meins like mara-meins,  "uom
          end of it_tab.
    data: wa_it_tab like line of it_tab.  "making work area
    data: i_modified TYPE STANDARD TABLE OF mara,"For getting modified rows
          w_modified TYPE mara.
    CLASS lcl_events_d0100 DEFINITION DEFERRED.
    DATA: event_receiver1  TYPE REF TO lcl_events_d0100,
          i_selected_rows TYPE lvc_t_row,                "Selected Rows
          w_selected_rows TYPE lvc_s_row.
    *----declaration for logo display custom container
    DATA  url(132).
    custom container
    DATA pic_container TYPE REF TO cl_gui_custom_container.
    picture Control.
    DATA picture TYPE REF TO cl_gui_picture.
    Definition of Control Framework
    CLASS cl_gui_cfw DEFINITION LOAD.
          CLASS lcl_events_d0100 DEFINITION
    CLASS lcl_events_d0100 DEFINITION.
      PUBLIC SECTION.
       METHODS:
    *double_click FOR EVENT double_click
                            OF cl_gui_alv_grid
                            IMPORTING e_row
                                      e_column.
        METHODS
            handle_hotspot_click
            FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
                 e_row_id
                 e_column_id
                 es_row_no
                 sender.
    *---code addition for ALV pushbuttons
    *--for placing buttons
        METHODS handle_toolbar_set
            FOR EVENT toolbar OF cl_gui_alv_grid
            IMPORTING
                  e_object
                  e_interactive.
    *---user command on clicking a button
        METHODS handle_user_command
            FOR EVENT user_command OF cl_gui_alv_grid
            IMPORTING
                 e_ucomm.
    ENDCLASS.                    "lcl_events_d0100 DEFINITION
                        LOCAL VARIABLE
    DATA ok_code TYPE sy-ucomm.
                          FOR VARIANT
    DATA st_var TYPE disvariant .
    DATA save TYPE c.
    st_var-report = 'YKC_ALV_OOPS_LOGO_DISPALY'.
    save = 'A'.
            FOR LAYOUT
    DATA loyo TYPE lvc_s_layo.
    loyo-zebra = 'X'.
    loyo-detailinit = 'X'.
    loyo-info_fname = 'RED'.
              FOR FIELD CATALOG
    DATA fcat TYPE lvc_t_fcat.
    DATA wa_fcat LIKE LINE OF fcat.
    *--Declaration for toolbar buttons
    DATA : ty_toolbar      TYPE stb_button.
    DATA : e_object        TYPE REF TO cl_alv_event_toolbar_set,
           io_alv_toolbar  TYPE REF TO cl_alv_event_toolbar_set.
    *---custom container
    DATA container TYPE REF TO cl_gui_custom_container.
    DATA ref_grid TYPE REF TO cl_gui_alv_grid.
    CREATE OBJECT container
      EXPORTING
        container_name = 'CONTAINER'."name of container in module pool
    CREATE OBJECT ref_grid
      EXPORTING
        i_parent = container.
          CLASS lcl_events_d0100 IMPLEMENTATION
    CLASS lcl_events_d0100 IMPLEMENTATION.
    *---method for hotspot
      METHOD handle_hotspot_click.
        DATA:ls_col_id   TYPE lvc_s_col.
        READ TABLE it_tab INTO wa_it_tab
                                 INDEX e_row_id-index.
        IF sy-subrc = 0.
          CHECK ( wa_it_tab-matnr IS NOT INITIAL ).
          CASE e_column_id-fieldname.
            WHEN 'MATNR'.
              leave program.
            WHEN OTHERS.
          do nothing
          ENDCASE.
          CALL METHOD ref_grid->set_current_cell_via_id
            EXPORTING
              is_row_id    = e_row_id
              is_column_id = ls_col_id.
        ENDIF.
      ENDMETHOD.                    "handle_hotspot_click
    **---method for handling toolbar
      METHOD handle_toolbar_set.
        CLEAR ty_toolbar.
        ty_toolbar-function = 'EDIT'. "name of btn to  catch click
        ty_toolbar-butn_type = 0.
        ty_toolbar-text = 'EDIT'.
        APPEND ty_toolbar    TO e_object->mt_toolbar.
      ENDMETHOD.                    "handle_toolbar_set
      METHOD handle_user_command.
        DATA: wr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
        DATA: lt_rows TYPE lvc_t_row,
              lt_index TYPE  lvc_s_row-index.
        CASE e_ucomm.
          WHEN 'EDIT'.
          perform save_database.
          CALL METHOD ref_GRID->REFRESH_TABLE_DISPLAY.
        ENDCASE.
      ENDMETHOD.                    "handle_user_command
    *---End of page
    ENDCLASS.                    "lcl_events_d0100 IMPLEMENTATION
    START-OF-SELECTION.
      PERFORM get_data.
      PERFORM field_catalog.
    *&      Form  get_data
          text : getting data into internal table
    -->  p1        text
    <--  p2        text
    form get_data .
      select matnr ersda ernam pstat lvorm mtart meins
             into table it_tab
             from mara
             where matnr GE '000000000000000001'.
    endform.                    " get_data
    *&      Form  field_catalog
          text
    -->  p1        text
    <--  p2        text
    form field_catalog .
      REFRESH fcat.
      DATA: lv_pos TYPE i.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-coltext = 'Material No'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-hotspot = 'X'.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'ERSDA'.
      wa_fcat-coltext = 'Creation Date'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-edit = 'X'.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'ERNAM'.
      wa_fcat-coltext = 'Person Created'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'PSTAT'.
      wa_fcat-coltext = 'Maint Stat'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'LVORM'.
      wa_fcat-coltext = 'Flag For Deletion'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'MTART'.
      wa_fcat-coltext = 'Material Type'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      lv_pos = lv_pos + 1.
      wa_fcat-fieldname = 'MEINS'.
      wa_fcat-coltext = 'UOM'.
      wa_fcat-col_pos = lv_pos.
      wa_fcat-outputlen = 18.
      APPEND wa_fcat TO fcat.
      CLEAR wa_fcat.
      CREATE OBJECT event_receiver1.
    *---setting event handlers
    SET HANDLER event_receiver1->double_click         FOR ref_grid.
      SET HANDLER event_receiver1->handle_toolbar_set   FOR ref_grid.
      SET HANDLER event_receiver1->handle_user_command  FOR ref_grid.
      SET HANDLER event_receiver1->handle_hotspot_click FOR ref_grid.
              ALV GRID DISPLAY
      CALL METHOD ref_grid->set_table_for_first_display
        EXPORTING
          is_variant      = st_var
          i_save          = save
          is_layout       = loyo
        CHANGING
          it_outtab       = it_tab[]
          it_fieldcatalog = fcat.
      CALL SCREEN 100.
    endform.                    " field_catalog
    *&      Module  STATUS_0100  OUTPUT
          text
    module STATUS_0100 output.
    create the custom container
        CREATE OBJECT pic_container
                      EXPORTING container_name = 'CUSTOM'.
    create the picture control
    create the picture control
        CREATE OBJECT picture
                      EXPORTING parent = pic_container.
    Request an URL from the data provider by exporting the pic_data.
        CLEAR url.
        PERFORM load_pic_from_db CHANGING url.
    load picture
        CALL METHOD picture->load_picture_from_url
          EXPORTING
            url = url.
       init = 'X'.
        CALL METHOD cl_gui_cfw=>flush
          EXCEPTIONS
            cntl_system_error = 1
            cntl_error        = 2.
        IF sy-subrc <> 0.
    error handling
        ENDIF.
    *---for editing
      CALL METHOD ref_grid->register_edit_event
      EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.
      SET PF-STATUS 'S100'.
      SET TITLEBAR 'XXX'.
    endmodule.                 " STATUS_0100  OUTPUT
    *&      Module  exit  INPUT
          text
    module exit input.
      CASE ok_code.
        WHEN 'EXIT' .
          CLEAR ok_code.
          LEAVE PROGRAM.
      ENDCASE.
    endmodule.                 " exit  INPUT
    *&      Form  SAVE_DATABASE
          text : saving into DDIC from internal table
    -->  p1        text
    <--  p2        text
    FORM SAVE_DATABASE .
    Getting the selected rows index
        CALL METHOD ref_grid->get_selected_rows
                    IMPORTING  et_index_rows = i_selected_rows.
    Through the index capturing the values of selected rows
        LOOP AT i_selected_rows INTO w_selected_rows.
        READ TABLE it_tab INTO wa_it_tab INDEX w_selected_rows-index.
        IF sy-subrc EQ 0.
          MOVE-CORRESPONDING wa_it_tab TO w_modified.
          APPEND w_modified TO i_modified.
        ENDIF.
      ENDLOOP.
      MODIFY mara FROM TABLE i_modified.
    ENDFORM.                    " SAVE_DATABASE
    *&      Form  LOAD_PIC_FROM_DB
          text : loading logo
         -->P_URL      text
    FORM load_pic_from_db  CHANGING p_url.
      DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
      DATA html_table LIKE w3html OCCURS 1.
      DATA return_code LIKE  w3param-ret_code.
      DATA content_type LIKE  w3param-cont_type.
      DATA content_length LIKE  w3param-cont_len.
      DATA pic_data LIKE w3mime OCCURS 0.
      DATA pic_size TYPE i.
      REFRESH query_table.
      query_table-name = '_OBJECT_ID'.
      query_table-value = 'ENJOYSAP_LOGO'.u201Dname of logo
      APPEND query_table.
      CALL FUNCTION 'WWW_GET_MIME_OBJECT'
        TABLES
          query_string        = query_table
          html                = html_table
          mime                = pic_data
        CHANGING
          return_code         = return_code
          content_type        = content_type
          content_length      = content_length
        EXCEPTIONS
          object_not_found    = 1
          parameter_not_found = 2
          OTHERS              = 3.
      IF sy-subrc = 0.
        pic_size = content_length.
      ENDIF.
      CALL FUNCTION 'DP_CREATE_URL'
        EXPORTING
          type     = 'image'
          subtype  = cndp_sap_tab_unknown
          size     = pic_size
          lifetime = cndp_lifetime_transaction
        TABLES
          data     = pic_data
        CHANGING
          url      = url
        EXCEPTIONS
          OTHERS   = 1. *+
    Hope it helps you
    Regrds
    Mansi

  • How to get subtotal value in ALV list display

    Hi all,
    How to give condition on the value of subtotal line in ALV list display,
    i.e.if value of subtotal of plan quantity = actual quantity (in red oval) it should show the message
    'ON TIME DELIVERY' else it should not show messagee.In my case(shown in red oval) its
    showing for each subtotal value. I know how to change the subtotal text but i want to change
    with respect to value of the subtotal.(plz refer attachment)
    Any input regard to this will be achieved great.
    Many thanks in advance.
    samadhan shinde.

    Hi Samadhan,
    I am awaiting for solution for this problem.....but as i think dynamically displaying sub total based on
    matching actual quantity and planned quantity is bit complicated.
    My idea is to display matched quantities in one block and unmatched  quantities in another. I mean using blocked list.
    awaiting suggestions.
    regards,

  • Can we provide new f4 help for a field in a list using grid display

    Hi Gurus,
    Can I provide F4 help for field in edit mode for (which is not using any std. data type, uses only custom char field ) in the list displayed using CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'.
    I know this can be done using OOPS concepts but, I need to know whether it is possible in this manner.
    And please dont suggest me to use CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' to get automatic  f4 help.
    I need to provide F4 help with my own logic once I press F4 in the edited field in GRID_DISPLAY
    Regards
    Mac.

    Hi Macmohan,
    You have to use F4AVAILABL attribute of fieldcatalog to achieve this.
    lv_fldcat-f4availabl = 'X'.
      lv_fldcat-ref_table = 'T582A'.
      lv_fldcat-ref_field = 'ZEITB'.
    This works with ALV GRID CONTROL
    Regards
    Abhii
    Edited by: Abhii on Dec 16, 2009 3:37 PM

  • What Component should be used to display the list on UI

    Hi All,
    I have a table in which when the user selects a row and tries to remove the row. I am supposed to show the pop up which shows all the rows matching to the header of the row.
    In my backing bean i have the context of the row so i could extract the matching rows form db into a List<String> . Now what i need to know is which component on the Ui will show this as a list in Pop Up.
    I mean which component af:??? should be used to display the List ?
    I am kind of new to ADF.
    Regards,
    Sharma

    inputComboboxListOfValues
    selectOneChoice
    inputListOfValues

  • Use of Field selection for Multilevel list Display Equipment/Function loc

    Dear Expert,
                          Anybody suggest me that how can we use the feature of Equipment & function location settings as given SPRO path.
    Plant Maintenance and Customer Service ® Master Data in Plant Maintenance and Customer Service ® Technical Objects ® Equipment ® Define Field Selection for Multi-Level List Displays of Equipment.
    Plant Maintenance and Customer Service ® Master Data in Plant Maintenance and Customer Service ® Technical Objects ® Functional Locations ® Field Selection for Multi-Level List Displays of Functional Locations.
    Your help & suggestions are much appreciated.
    Regards,
    Akhilesh

    Dear AKhliesh,
    This customizing setting is for the T-code IE07. You can customize view of IE07 in different strcuture with required fields wants to didplay or suppress.
    Regards,
    Kaushal Rai

  • List Display using Factort Method

    Hi All,
    I am using factory method of the class cl_salv_table to get the output in two dimension list display.
    Now going further my requirement is that the user may select one or multiple rows and based on that further data is fetched and displayed in another screen.
    Please suggest me something to achieve this functionality.
    Thanks and Regards,
    Vivek

    Hi ,
    One more query.If we have to select few rows from the output display, how we will get that first column which is used to click for selection of row.
    Regards ,
    Vivek

  • 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

  • How to download subtotals into xl sheet while using alv list display

    hi all,
    i have a reqiurement i.e.
    iam displaying the data by using alv list display. i have one option called Download in my PF-STATUS.when i click this button it downloads the data .now my requirement is when i cllick on subtotals list displays asubtotals according to the sales order no.now i click doenload button then it has download the data into xlsheet with subtotals and grandtotals.
    anybody can send me the sample code plz.
    thanks,
    maheedhar.t

    Hello Maheedhar
    Using ALV lists you do not need a special function for downloading. Simply calculate the totals and subtotals on your ALV list and then press the (toolbar or menu bar) button <b>"Print Preview...".</b>
    The print preview display a "flat" list including the subtotals that can be downloaded to Excel.
    Regards
      Uwe

  • Values from alv hierarchical list display

    hi all,
    i need to display sme values from vbak and vbap tables in ALV hierarchical list display.if i click on the sales order of the header, it should directly go to the second screen of transaction VA03 with the sales details displayed..
       i got the parameter id, how can i assign the selected sales order value to this parameter id?...
    regards,
    Hamsa Priya

    Hi,
    Check this example..Marked in bold..
    TYPE-POOLS: slis.
    DATA: BEGIN OF itab OCCURS 0,
            vbeln TYPE vbeln,
            expand,
          END OF itab.
    DATA: BEGIN OF itab1 OCCURS 0,
            vbeln TYPE vbeln,
            posnr TYPE posnr,
            matnr TYPE matnr,
            netpr TYPE netpr,
          END OF itab1.
    DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
    DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
    s_fieldcatalog-col_pos = '1'.
    s_fieldcatalog-fieldname = 'VBELN'.
    s_fieldcatalog-tabname   = 'ITAB'.
    s_fieldcatalog-rollname  = 'VBELN'.
    s_fieldcatalog-outputlen = '12'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '1'.
    s_fieldcatalog-fieldname = 'VBELN'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'VBELN'.
    s_fieldcatalog-outputlen = '12'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '2'.
    s_fieldcatalog-fieldname = 'POSNR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'POSNR'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '3'.
    s_fieldcatalog-fieldname = 'MATNR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'MATNR'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    s_fieldcatalog-col_pos = '4'.
    s_fieldcatalog-fieldname = 'NETPR'.
    s_fieldcatalog-tabname   = 'ITAB1'.
    s_fieldcatalog-rollname  = 'NETPR'.
    s_fieldcatalog-do_sum    = 'X'.
    APPEND s_fieldcatalog TO t_fieldcatalog.
    CLEAR: s_fieldcatalog.
    DATA: s_layout TYPE slis_layout_alv.
    s_layout-subtotals_text            = 'SUBTOTAL TEXT'.
    s_layout-key_hotspot = 'X'.
    s_layout-expand_fieldname = 'EXPAND'.
    SELECT vbeln UP TO 100 ROWS
           FROM
           vbak
           INTO TABLE itab
           WHERE vbeln > '0060000040'.
    IF NOT itab[] IS INITIAL.
      SELECT vbeln posnr matnr netpr
             FROM vbap
             INTO TABLE itab1
             FOR ALL ENTRIES IN itab
             WHERE vbeln = itab-vbeln.
    ENDIF.
    DATA: v_repid TYPE syrepid.
    v_repid = sy-repid.
    DATA: s_keyinfo TYPE slis_keyinfo_alv.
    s_keyinfo-header01 = 'VBELN'.
    s_keyinfo-item01   = 'VBELN'.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
         EXPORTING
              i_callback_program      = v_repid
    <b>          i_callback_user_command = 'USER_COMMAND'</b>
              is_layout               = s_layout
              it_fieldcat             = t_fieldcatalog
              i_tabname_header        = 'ITAB'
              i_tabname_item          = 'ITAB1'
              is_keyinfo              = s_keyinfo
         TABLES
              t_outtab_header         = itab
              t_outtab_item           = itab1
         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.
    <b>FORM user_command USING ucomm LIKE sy-ucomm
    selfield TYPE slis_selfield.
      IF ucomm = '&IC1' AND selfield-fieldname = 'VBELN'.
        READ TABLE itab INDEX selfield-tabindex.
        IF sy-subrc = 0.
    document
          SET PARAMETER ID 'AUN' FIELD itab-vbeln.
          CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
    ENDFORM.</b>
    Thanks,
    Naren

  • Reuse alv hierseq list display pgm doubt

    can anyone tell me s my coding s write or not becos in the report output i cannot view the line item details but it s gettign populated in the itab
    REPORT ZTEST_1.
    TABLES: KNB1,BSID.
    TYPE-POOLS: SLIS.
    *TYPES:BEGIN OF TYP_OUTPUT.
    INCLUDE STRUCTURE ZRFPOSXEXT.
    *TYPES:END OF TYP_OUTPUT.
    TYPES:BEGIN OF TYP_BSEG,
    bukrs like bsid-bukrs,
    kunnr like bsid-kunnr,
    zuonr like bsid-zuonr,
    belnr like bsid-belnr,
    bldat like bsid-bldat,
    xblnr like bsid-xblnr,
    blart like bsid-blart,
    dmbtr like bsid-dmbtr,
    aufnr like bsid-aufnr,
    vbel2 like bsid-vbel2,
    posn2 like bsid-posn2,
    END OF TYP_BSEG.
    TYPES:BEGIN OF TYP_VBRP,
    VBELN LIKE VBRP-VBELN,
    AUBEL LIKE VBRP-AUBEL,
    AUPOS LIKE VBRP-AUPOS,
    VKGRP LIKE VBRP-VKGRP,
    TDNAME LIKE STXH-TDNAME,
    TDLINE LIKE TLINE-TDLINE,
    END OF TYP_VBRP.
    data: wa_vbrp type typ_vbrp.
    DATA:
    *GT_HEADER_TABLE TYPE TYP_OUTPUT OCCURS 0 WITH HEADER LINE,
    GT_ITEM_TABLE TYPE TYP_VBRP OCCURS 0 WITH HEADER LINE.
    DATA: IT_BSEG TYPE TYP_BSEG OCCURS 0 WITH HEADER LINE.
    Define fieldcatalog
    DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    Callback program
    DATA: G_REPID LIKE SY-REPID.
    List layout description
    DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    Group order criterium
    DATA: GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
    Layout *
    Definition for field choice screen **
    GS_LAYOUT-HEADER_TEXT = 'HEADER'.
    GS_LAYOUT-ITEM_TEXT = 'ITEM'.
    GS_LAYOUT-DEFAULT_ITEM = 'X'.
    Initialization fieldcatalog ***
    G_REPID = SY-REPID.
    PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
    Data selection ***
    PERFORM SELECT_DATA.
    Define keyinfo as sort group definition ***
    CLEAR GS_KEYINFO.
    GS_KEYINFO-HEADER01 = 'BELNR'. "idenify header and item
    GS_KEYINFO-ITEM01 = 'VBELN'.
    Call function to list display (hier-seq) ***
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = G_REPID
    IS_LAYOUT = GS_LAYOUT
    IT_FIELDCAT = GT_FIELDCAT[]
    I_TABNAME_HEADER = 'GT_HEADER_TABLE'
    I_TABNAME_HEADER = 'IT_BSEG'
    I_TABNAME_ITEM = 'GT_ITEM_TABLE'
    I_STRUCTURE_NAME_HEADER = <STRUCTURE_NAME_HEADER>
    I_STRUCTURE_NAME_ITEM = <STRUCTURE_NAME_ITEM>
    IS_KEYINFO = GS_KEYINFO
    TABLES
    T_OUTTAB_HEADER = GT_HEADER_TABLE
    T_OUTTAB_HEADER = IT_BSEG
    T_OUTTAB_ITEM = GT_ITEM_TABLE
    EXCEPTIONS
    PROGRAM_ERROR = 1.
    FORMS ***
    FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    Deviations of group fields to be merged *
    Initialize group field(s) of header table **
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 1.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'BLART'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'DOC TYPE'.
    LS_FIELDCAT-OUTPUTLEN = 2.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 2.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'BLDAT'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'DOC DATE'.
    LS_FIELDCAT-OUTPUTLEN = 8.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 3.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'BELNR'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'ACC DOC NO'.
    LS_FIELDCAT-OUTPUTLEN = 10.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 4.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'XBLNR'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'REFERENCE'.
    LS_FIELDCAT-OUTPUTLEN = 16.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 5.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'ZUONR'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'ASSGNMENT NO'.
    LS_FIELDCAT-OUTPUTLEN = 19.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 6.
    LS_FIELDCAT-TABNAME = 'IT_BSEG'.
    LS_FIELDCAT-FIELDNAME = 'DMBTR'.
    LS_FIELDCAT-KEY = 'X'. " sets key field
    LS_FIELDCAT-SELTEXT_M = 'AMT N LOC CURR'.
    LS_FIELDCAT-OUTPUTLEN = 13.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    Initialize keyfield(s) of item table **
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 7.
    LS_FIELDCAT-TABNAME = 'GT_ITEM_TABLE'.
    LS_FIELDCAT-FIELDNAME = 'AUPOS'.
    LS_FIELDCAT-TECH = 'X'. " sets technical field
    LS_FIELDCAT-SELTEXT_M = 'LINE ITEM'.
    LS_FIELDCAT-OUTPUTLEN = 6.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    CLEAR LS_FIELDCAT.
    ls_fieldcat-col_pos = 8.
    LS_FIELDCAT-TABNAME = 'GT_ITEM_TABLE'.
    LS_FIELDCAT-FIELDNAME = 'TDLINE'.
    LS_FIELDCAT-TECH = 'X'. " sets technical field
    LS_FIELDCAT-SELTEXT_M = 'OI NOTES'.
    LS_FIELDCAT-OUTPUTLEN = 132.
    APPEND LS_FIELDCAT TO gt_fieldcat.
    Hidden field(s) of tables (header and/or item) **
    CLEAR LS_FIELDCAT.
    ls_fieldcat-tabname = '<header/item_table_name>'.
    LS_FIELDCAT-FIELDNAME = '<GROUP_FIELD_NAME>'.
    LS_FIELDCAT-NO_OUT = 'X'. "sets hidden field
    APPEND LS_FIELDCAT TO RT_FIELDCAT.
    ENDFORM. "fieldcat_init
    FORM SELECT_DATA.
    data: begin of wa_olino,
    tdname like stxh-tdname,
    tdline like tline-tdline,
    end of wa_olino.
    data: it_olino like wa_olino occurs 0 with header line.
    data: begin of wa_stxh,
    tdname like stxh-tdname,
    end of wa_stxh.
    data: it_stxh like wa_stxh occurs 0 with header line.
    data: begin of wa_lines.
    include structure ztline.
    data: end of wa_lines.
    data: IT_LINES LIKE wa_lines OCCURS 0 WITH HEADER LINE.
    select bukrs kunnr zuonr belnr bldat xblnr blart dmbtr aufnr vbel2
    posn2
    from bsid
    into table it_bseg
    where kunnr in so_wlkun
    and bukrs in so_wlbuk.
    select vbeln aubel aupos vkgrp
    from vbrp
    into table gt_item_table
    for all entries in it_bseg
    where vbeln = it_bseg-belnr.
    sort gt_item_table by aubel aupos.
    loop at gt_item_table into wa_vbrp.
    concatenate wa_vbrp-aubel wa_vbrp-aupos into wa_olino-tdname.
    wa_vbrp-tdname = wa_olino-tdname.
    modify gt_item_table from wa_vbrp.
    append wa_olino to it_olino.
    endloop.
    select tdname from stxh into corresponding fields of table it_stxh
    for all entries in it_olino
    where tdobject = 'VBBP'
    and tdname = it_olino-tdname
    and tdid = '0002'
    and tdspras = 'EN'.
    data: j type i,k_lines type i..
    sort it_stxh by tdname.
    *sort it_output by tdname.
    describe table GT_ITEM_TABLE lines k_lines.
    *loop at it_output into wa_output. "where blart = '1Z'.
    loop at gt_item_table into wa_vbrp.
    loop at it_stxh where tdname = wa_vbrp-tdname.
    read table it_stxh.
    CALL FUNCTION 'ZREAD_TEXT_1'
    EXPORTING
    CLIENT = SY-MANDT
    ID = '0002'
    LANGUAGE = SY-LANGU
    NAME = IT_STXH-tdname
    OBJECT = 'VBBP'
    ARCHIVE_HANDLE = 0
    LOCAL_CAT = ' '
    IMPORTING
    HEADER =
    TABLES
    LINES = IT_LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8
    *data: I type i.
    if sy-subrc = 0.
    loop at it_lines.
    it_lines-tdname = wa_vbrp-tdname.
    modify it_lines. "from wa_lines.
    endloop.
    loop at it_lines.
    *i = sy-tfill.
    wa_vbrp-tdline = it_lines.
    if sy-tabix = 1.
    modify gt_item_table from wa_vbrp.
    else.
    append wa_vbrp to gt_item_table.
    endif.
    clear it_lines-tdline.
    endloop.
    endif.
    endloop.
    if sy-tabix = k_lines.
    exit.
    endif.
    endloop.
    sort it_olino by tdname.
    ENDFORM. " select_data

    Hi,
    Go thru the following Example program. It can solve ur problem..
    *& Report         : ZASSG_ALV_JAYARAM3
    *& Title          : Hierarchical sequential ALV report
    *& Author         :
    *& Created on     : *& Request        :
    *& Desription     : Generates a Hierarchial sequental ALV report to list
                      out Billing details.
    *&                     Modification Log
    *& Mod #    Author               Date         Requested by
    *&       Reason for Change
    *& 00 #
    REPORT ZASSG_ALV_JAYARAM3 NO STANDARD PAGE HEADING
                                         LINE-SIZE 132
                                         LINE-COUNT 64
                                        MESSAGE-ID Z00.
    *..Type Definitions for ALV Report
    TYPE-POOLS SLIS.
    Table/Structure declarations.                                        *
    TABLES : VBRK,   " Billing: Header Data
             VBRP,   " Billing: Item Data
             T001,   " Comapny Codes
             TVKOT,  " Sales Organizations: Texts
             MAKT.   " Material Descriiptions
    *.. Internal Tables declaration                                        *
    *----- Internal table to store billing docs which are not cancelled
    DATA : BEGIN OF IT_VBRK OCCURS 0,
             VBELN LIKE VBRK-VBELN,    " Billing document
             WAERK LIKE VBRK-WAERK,    " SD document currency
             VKORG LIKE VBRK-VKORG,    " Sales organization
             VTEXT LIKE TVKOT-VTEXT,   " Sales organization text
             FKDAT LIKE VBRK-FKDAT,    " Billing date
             BUKRS LIKE VBRK-BUKRS,    " Company Code
             BUTXT LIKE T001-BUTXT,    " Company Code text
             NETWR LIKE VBRK-NETWR,    " Net value in document currency
           END OF IT_VBRK.
    *-----Internal table to stroe ITEM DETAILS
    DATA: BEGIN OF IT_VBRP OCCURS 0,
           VBELN2 LIKE VBRP-VBELN,     " Billing document
            POSNR LIKE VBRP-POSNR,     " Billing item
            FKIMG LIKE VBRP-FKIMG,     " Actual billed quantity
            VRKME LIKE VBRP-VRKME,     " Sales unit
            NETWR LIKE VBRP-NETWR,     " Net value of the billing item
            MATNR LIKE VBRP-MATNR,     " Material number
            ARKTX LIKE VBRP-ARKTX,     " Short text for sales order item
    END OF IT_VBRP.
                       Variable / Flag Declerations                      *
    DATA : FG_COLOR    VALUE ' ',  " FLAG TO CHANGE THE COLOR OF THE RECORD
           FG_NO_DATA  VALUE ' '.  " FLAG TO CHECK THE DATA
    DATA : V_REPID   TYPE SYREPID.
                         ALV Type declaration                            *
    DATA : IT_FIELDCAT TYPE STANDARD TABLE OF
                       SLIS_FIELDCAT_ALV  WITH HEADER LINE.
    DATA : IT_SORT TYPE SLIS_T_SORTINFO_ALV,
           WA_SORT TYPE SLIS_SORTINFO_ALV.
    DATA : IT_EVENT TYPE SLIS_T_EVENT,
           WA_EVENT LIKE LINE OF IT_EVENT.
    DATA : IT_HEADINGS TYPE STANDARD TABLE OF
                       SLIS_LISTHEADER WITH HEADER LINE.
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA : WA_KEYINFO TYPE SLIS_KEYINFO_ALV.
    Selection Screen.                                                    *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS :  S_VBELN FOR VBRK-VBELN,            " Billing doc no
                      S_FKDAT FOR VBRK-FKDAT OBLIGATORY, " Billing date
                      S_MATNR FOR VBRP-MATNR.            " Material no
    SELECTION-SCREEN END OF BLOCK B1.
    Event:Initialization                                                 *
    INITIALIZATION.
      V_REPID = SY-REPID.
      S_FKDAT-LOW  = SY-DATUM - 200.
      S_FKDAT-HIGH = SY-DATUM.
      APPEND S_FKDAT.
    AT Selection Screen.                                                 *
    AT SELECTION-SCREEN.
      PERFORM VALIDATE_VBELN.
      PERFORM VALIDATE_MATNR.
    Event: Start-of-Selection                                            *
    START-OF-SELECTION.
      PERFORM GET_VBRK_DATA.
      PERFORM GET_VBRP_DATA.
    Event: End-of-Selection                                            *
    END-OF-SELECTION.
      PERFORM GET_EVENTS.
      PERFORM FIELDCATALOG.
      PERFORM LIST_DISPLAY.
                             FORM DEFINITIONS                            *
    *&      Form  list_display
          text
    -->  p1        text
    <--  p2        text
    FORM LIST_DISPLAY.
      WA_LAYOUT-INFO_FIELDNAME = 'COLOR'.
      WA_LAYOUT-TOTALS_TEXT = 'GRAND TOTAL'.
      WA_LAYOUT-ZEBRA = 'X'.
      WA_LAYOUT-KEY_HOTSPOT = 'X'.
      WA_KEYINFO-HEADER01 = 'VBELN'.
      WA_KEYINFO-ITEM01 = 'VBELN2'.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
       I_INTERFACE_CHECK              = ' '
          I_CALLBACK_PROGRAM             = V_REPID
       I_CALLBACK_PF_STATUS_SET       = ' '
       I_CALLBACK_USER_COMMAND        = ' '
          IS_LAYOUT                      = WA_LAYOUT
          IT_FIELDCAT                    = IT_FIELDCAT[]
       IT_EXCLUDING                   =
       IT_SPECIAL_GROUPS              =
          IT_SORT                        = IT_SORT
       IT_FILTER                      =
       IS_SEL_HIDE                    =
       I_SCREEN_START_COLUMN          = 0
       I_SCREEN_START_LINE            = 0
       I_SCREEN_END_COLUMN            = 0
       I_SCREEN_END_LINE              = 0
       I_DEFAULT                      = 'X'
       I_SAVE                         = ' '
       IS_VARIANT                     =
       IT_EVENTS                      =
       IT_EVENT_EXIT                  =
          I_TABNAME_HEADER              = 'IT_VBRK'
          I_TABNAME_ITEM                = 'IT_VBRP'
       I_STRUCTURE_NAME_HEADER        =
       I_STRUCTURE_NAME_ITEM          =
          IS_KEYINFO                    = WA_KEYINFO
       IS_PRINT                       =
       IS_REPREP_ID                   =
       I_BUFFER_ACTIVE                =
       I_BYPASSING_BUFFER             =
    IMPORTING
       E_EXIT_CAUSED_BY_CALLER        =
       ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB_HEADER               = IT_VBRK
          T_OUTTAB_ITEM                 = IT_VBRP
    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.                    " list_display
    *&      Form  fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCATALOG.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
          I_PROGRAM_NAME             = V_REPID
          I_INTERNAL_TABNAME         = 'IT_VBRK'
      I_STRUCTURE_NAME             =
      I_CLIENT_NEVER_DISPLAY       = 'X'
          I_INCLNAME                 = V_REPID
      I_BYPASSING_BUFFER           =
      I_BUFFER_ACTIVE              =
        CHANGING
          CT_FIELDCAT                = IT_FIELDCAT[]
       EXCEPTIONS
         INCONSISTENT_INTERFACE      = 1
         PROGRAM_ERROR               = 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.
    *..Changing the fieldcatlog as required
      LOOP AT IT_FIELDCAT.
        CASE IT_FIELDCAT-FIELDNAME.
          WHEN 'VBELN'.
            IT_FIELDCAT-SELTEXT_L = 'Billing doc no'.
            IT_FIELDCAT-SELTEXT_M = 'Bill No'.
            IT_FIELDCAT-SELTEXT_S = 'Bill'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                            OUTPUTLEN
                                      WHERE FIELDNAME = 'VBELN'.
          WHEN 'WAERK'.
            IT_FIELDCAT-SELTEXT_L = 'SD document Currency'.
            IT_FIELDCAT-SELTEXT_M = 'Document Currency'.
            IT_FIELDCAT-SELTEXT_S = 'Currency'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'WAERK'.
          WHEN 'VKORG'.
            IT_FIELDCAT-SELTEXT_L = 'Sales Organisation'.
            IT_FIELDCAT-SELTEXT_M = 'Sales Org'.
            IT_FIELDCAT-SELTEXT_S = 'S,Org'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'VKORG'.
          WHEN 'VTEXT'.
            IT_FIELDCAT-SELTEXT_L = 'Sales Organisation Name'.
            IT_FIELDCAT-SELTEXT_M = 'Sales Org Text'.
            IT_FIELDCAT-SELTEXT_S = 'S,Org'.
            IT_FIELDCAT-OUTPUTLEN = '30'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'VTEXT'.
          WHEN 'FKDAT'.
            IT_FIELDCAT-SELTEXT_L = 'Billing Date'.
            IT_FIELDCAT-SELTEXT_M = 'Bill.Date'.
            IT_FIELDCAT-SELTEXT_S = 'BDate'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'FKDAT'.
          WHEN 'BUKRS'.
            IT_FIELDCAT-SELTEXT_L = 'Company Code'.
            IT_FIELDCAT-SELTEXT_M = 'Company'.
            IT_FIELDCAT-SELTEXT_S = 'Comp'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'BUKRS'.
          WHEN 'BUTXT'.
            IT_FIELDCAT-SELTEXT_L = 'Company Name'.
            IT_FIELDCAT-SELTEXT_M = 'Comp Text'.
            IT_FIELDCAT-SELTEXT_S = 'Comp'.
            IT_FIELDCAT-OUTPUTLEN = '25'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'BUTXT'.
          WHEN 'NETWR'.
            IT_FIELDCAT-SELTEXT_L = 'Net value in docu currency'.
            IT_FIELDCAT-SELTEXT_M = 'Net value in currency'.
            IT_FIELDCAT-SELTEXT_S = 'Net Value'.
            IT_FIELDCAT-OUTPUTLEN = '20'.
            IT_FIELDCAT-DO_SUM    = 'X'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                            DO_SUM
                                      WHERE FIELDNAME = 'NETWR'.
        ENDCASE.
      ENDLOOP.
      PERFORM FIELDCAT_SECLIST.
    ENDFORM.                    " fieldcatalog
    *&      Form  sort_tab
          text
    -->  p1        text
    <--  p2        text
    FORM SORT_TAB.
      CLEAR WA_SORT.
      WA_SORT-FIELDNAME = 'VBELN'.
      WA_SORT-SPOS = '1'.
      WA_SORT-UP = 'X'.
      WA_SORT-SUBTOT = 'X'.
      APPEND WA_SORT TO IT_SORT.
    ENDFORM.                    " sort_tab
    *&      Form  get_events
          text
    -->  p1        text
    <--  p2        text
    FORM GET_EVENTS.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE     = 1
           IMPORTING
                ET_EVENTS       = IT_EVENT
           EXCEPTIONS
                LIST_TYPE_WRONG = 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.
      READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      WA_EVENT-FORM = 'DISPLAY_HEADER'.
      MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
    ENDFORM.                    " get_events
    *&      Form  DISPLAY_HEADER
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_HEADER.
      WRITE : /3   'Date : ',
               10  SY-DATUM USING EDIT MASK '__/__/____',
               35  'Intelligroup Asia Pvt. Ltd',
               80  'Time : ',
               90  SY-UZEIT,
              /3   'User : ',
               10  SY-UNAME,
               30  SY-TITLE,
               80  'Page  : ',
               90 SY-PAGNO.
    ENDFORM.                    " DISPLAY_HEADER
    *&      Form  VALIDATE_VBELN
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE_VBELN.
    Validating Billing doc no
      SELECT VBELN
        INTO VBRK-VBELN
       UP TO 1 ROWS
        FROM VBRK
       WHERE VBELN IN S_VBELN.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        MESSAGE E010. " Invalid billing doc no
      ENDIF.
    ENDFORM.                    " VALIDATE_VBELN
    *&      Form  VALIDATE_MATNR
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE_MATNR.
    Validating material no
      SELECT MATNR
        INTO VBRP-MATNR
       UP TO 1 ROWS
        FROM VBRP
       WHERE MATNR IN S_MATNR.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        MESSAGE E018.    " Invalid material number
      ENDIF.
    ENDFORM.                    " VALIDATE_MATNR
    *&      Form  GET_VBRK_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM GET_VBRK_DATA.
    To get Billing doc detials based on selections
      SELECT V~VBELN
             V~WAERK
             V~VKORG
             V~FKDAT
             V~BUKRS
             V~NETWR
             T~VTEXT
             C~BUTXT
        INTO CORRESPONDING FIELDS OF TABLE IT_VBRK
        FROM VBRK AS V
       INNER JOIN VBRP AS P
          ON VVBELN = PVBELN
       INNER JOIN TVKOT AS T
          ON VVKORG = TVKORG
       INNER JOIN T001 AS C
          ON VBUKRS = CBUKRS
       WHERE V~VBELN IN S_VBELN
         AND V~FKDAT IN S_FKDAT
         AND P~MATNR IN S_MATNR.
      SORT IT_VBRK.
      DELETE ADJACENT DUPLICATES FROM IT_VBRK COMPARING VBELN.
      IF SY-SUBRC NE 0.
        FG_NO_DATA = 'X'.
      ENDIF.
    ENDFORM.                    " GET_VBRK_DATA
    *&      Form  GENERATE_SECLIST
          text
    -->  p1        text
    <--  p2        text
    FORM GENERATE_SECLIST USING R_UCOMM     LIKE SY-UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'. "DOUBLE CLICK
          READ TABLE IT_VBRK INDEX RS_SELFIELD-TABINDEX.
      ENDCASE.
    ENDFORM.                    " GENERATE_SECLIST
    *&      Form  FIELDCAT_SECLIST
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT_SECLIST.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
         EXPORTING
            I_PROGRAM_NAME           = V_REPID
            I_INTERNAL_TABNAME       = 'IT_VBRP'
      I_STRUCTURE_NAME             =
      I_CLIENT_NEVER_DISPLAY       = 'X'
            I_INCLNAME               = V_REPID
      I_BYPASSING_BUFFER           =
      I_BUFFER_ACTIVE              =
          CHANGING
            CT_FIELDCAT              = IT_FIELDCAT[]
         EXCEPTIONS
           INCONSISTENT_INTERFACE    = 1
           PROGRAM_ERROR             = 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.
    *..Changing the fieldcatlog as required
      LOOP AT IT_FIELDCAT.
        CASE IT_FIELDCAT-FIELDNAME.
          WHEN 'VBELN2'.
             IT_FIELDCAT-NO_OUT = 'X'.
             IT_FIELDCAT-KEY = SPACE.
             MODIFY IT_FIELDCAT TRANSPORTING NO_OUT
                                             KEY
                                      WHERE FIELDNAME = 'VBELN2'.
          WHEN 'POSNR'.
            IT_FIELDCAT-SELTEXT_L = 'Billing Iem no'.
            IT_FIELDCAT-SELTEXT_M = 'Bill Item No'.
            IT_FIELDCAT-SELTEXT_S = 'Item No'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                            OUTPUTLEN
                                      WHERE FIELDNAME = 'POSNR'.
          WHEN 'FKIMG'.
            IT_FIELDCAT-SELTEXT_L = 'Actual billed quantity'.
            IT_FIELDCAT-SELTEXT_M = 'Billed Quantity'.
            IT_FIELDCAT-SELTEXT_S = 'Bill.Qty'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'FKIMG'.
          WHEN 'VRKME'.
            IT_FIELDCAT-SELTEXT_L = 'Sales Unit'.
            IT_FIELDCAT-SELTEXT_M = 'Sale unit'.
            IT_FIELDCAT-SELTEXT_S = 'S.Unit'.
            IT_FIELDCAT-OUTPUTLEN = '15'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'VRKME'.
          WHEN 'NETWR'.
            IT_FIELDCAT-SELTEXT_L = 'Net value in docu currency'.
            IT_FIELDCAT-SELTEXT_M = 'Net value in currency'.
            IT_FIELDCAT-SELTEXT_S = 'Net Value'.
            IT_FIELDCAT-OUTPUTLEN = '20'.
            IT_FIELDCAT-DO_SUM    = 'X'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                            DO_SUM
                                     WHERE FIELDNAME = 'NETWR'.
          WHEN 'MATNR'.
            IT_FIELDCAT-SELTEXT_L = 'Material Number'.
            IT_FIELDCAT-SELTEXT_M = 'Mat. Number'.
            IT_FIELDCAT-SELTEXT_S = 'Mat. No'.
            IT_FIELDCAT-OUTPUTLEN = '30'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'MATNR'.
          WHEN 'ARKTX'.
            IT_FIELDCAT-SELTEXT_L = 'Text for sales order item'.
            IT_FIELDCAT-SELTEXT_M = 'Sale Order Text'.
            IT_FIELDCAT-SELTEXT_S = 'SO Item text'.
            IT_FIELDCAT-OUTPUTLEN = '30'.
            MODIFY IT_FIELDCAT TRANSPORTING SELTEXT_L
                                            SELTEXT_M
                                            SELTEXT_S
                                      WHERE FIELDNAME = 'ARKTX'.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " FIELDCAT_SECLIST
    *&      Form  GET_VBRP_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM GET_VBRP_DATA.
      SELECT VBELN
             POSNR
             FKIMG
             VRKME
             NETWR
             MATNR
             ARKTX
        INTO TABLE IT_VBRP
        FROM VBRP
         FOR ALL ENTRIES IN IT_VBRK
       WHERE VBELN EQ IT_VBRK-VBELN.
    ENDFORM.                    " GET_VBRP_DATA

  • Subtotal in alv display

    Hi all ,
    I am using resuse alv list display , i am getting the grand total using the
    do_sums = 'X' , but not able to get the subtotal of quantities and value for some customer . pls help and suggest how to get the subtotals.
    thanks in advance,
    vivek

    Hi,
    Refer this example
    http://www.sap-basis-abap.com/abap/alv-grid-list-with-sub-totals.htm
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    Reward if useful.
    Regards,
    Umasankar.

  • 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 list display

    hi all,
    please send me some programs for hierarchial list display in ALVs.
    thanks in advance,
    hema.

    hi,
    this is used to specify that according to which field u want hierarchy....
    means i want that according to material number i want hierarchical display than i have to pass matnr in this
    and
    key_info-header01 = 'MAT'.
    key_info-item01 = 'MAT'.
    In this we passing field name of header table and item table....
    Now see this example..
    In this i want hierarchy depend on Material and palnt both..
    so my code will be
    TYPE-POOLS : slis.
    TABLES : mseg.
    DATA : BEGIN OF itab_head OCCURS 0,
    mat LIKE mseg-matnr,
    matnr LIKE mseg-matnr,
    werks LIKE mseg-werks,
    END OF itab_head.
    DATA : BEGIN OF itab_item OCCURS 0,
    mat LIKE mseg-matnr,
    matnr LIKE mseg-matnr,
    werks LIKE mseg-werks,
    mblnr LIKE mseg-mblnr,
    menge LIKE mseg-menge,
    END OF itab_item.
    DATA : t_fcat TYPE slis_t_fieldcat_alv,
    key_info TYPE slis_keyinfo_alv,
    t_eve TYPE slis_t_event,
    gt_subtot TYPE slis_t_sortinfo_alv,
    subtot LIKE LINE OF gt_subtot,
    t_listhead TYPE slis_t_listheader,
    st_line TYPE slis_listheader.
    DATA : t_mtdoc LIKE mseg-mblnr.
    SELECT-OPTIONS : mat FOR mseg-matnr.
    INITIALIZATION.
    PERFORM build_cat USING t_fcat.
    PERFORM build_eve.
    START-OF-SELECTION.
    PERFORM get_data.
    PERFORM dis_data.
    *& Form build_cat
    text
    -->TEMP_FCAT text
    FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
    DATA : wa_fcat TYPE slis_fieldcat_alv.
    wa_fcat-tabname = 'ITAB_HEAD'.
    wa_fcat-fieldname = 'MAT'.
    wa_fcat-seltext_m = 'Material'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB_HEAD'.
    wa_fcat-fieldname = 'WERKS'.
    wa_fcat-seltext_m = 'Plant'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB_ITEM'.
    wa_fcat-fieldname = 'MBLNR'.
    wa_fcat-seltext_m = 'Material Doc.'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    wa_fcat-tabname = 'ITAB_ITEM'.
    wa_fcat-fieldname = 'MENGE'.
    wa_fcat-seltext_m = 'Quantity'.
    wa_fcat-do_sum = 'Y'.
    APPEND wa_fcat TO temp_fcat.
    CLEAR wa_fcat.
    subtot-spos = 1.
    subtot-fieldname = 'MAT'.
    subtot-tabname = 'ITAB_HEAD'.
    subtot-up = 'X'.
    subtot-group = 'X'.
    subtot-subtot = 'X'.
    subtot-expa = 'X'.
    APPEND subtot TO gt_subtot.
    ENDFORM. "build_cat
    *& Form build_eve
    text
    FORM build_eve.
    DATA : wa_eve TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = t_eve
    EXCEPTIONS
    LIST_TYPE_WRONG = 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. "build_eve
    *& Form get_data
    text
    FORM get_data.
    SELECT matnr AS mat werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
    WHERE matnr IN mat.
    ENDFORM. "get_data
    *& Form dis_data
    text
    FORM dis_data.
    key_info-header01 = 'MAT'.
    key_info-item01 = 'MAT'.
    key_info-header02 = 'WERKS'.
    key_info-item02 = 'WERKS'.
    REFRESH itab_head.
    LOOP AT itab_item.
    ON CHANGE OF itab_item-mat OR itab_item-werks.
    MOVE-CORRESPONDING itab_item TO itab_head.
    APPEND itab_head.
    ENDON.
    ENDLOOP.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    i_callback_program = 'ZALV_PRDS'
    it_fieldcat = t_fcat
    it_sort = gt_subtot
    it_events = t_eve[]
    i_tabname_header = 'ITAB_HEAD'
    i_tabname_item = 'ITAB_ITEM'
    is_keyinfo = key_info
    TABLES
    t_outtab_header = itab_head
    t_outtab_item = itab_item
    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. "dis_data
    cheers,
    madhavi.

Maybe you are looking for