END-OF-PAGE in ALV using OOPS

Hello ,
Can anyone let me know how to trigger the END-of-page event in ALV using OOPs.
Thanks in advance.
Regards
Jai

Hello Pratuysh,
Thanks for the answer
I know that report,but that doesn't help me.
Any other way
Thanks
Jai

Similar Messages

  • End of page in ALV using METHODS

    Hi Folks,
    I have to display End of Page in an list which is using
    CALL METHOD grid1->set_table_for_first_display for display.Is there any method in the same way so that I can totals at the end of page in that list.
    For you info I am not using any of the REUSE_ALV_...... function modules in the program.So kindly let me know how to get it using methods.
    Thanks,
    K.Kiran.

    Hello Pratuysh,
    Thanks for the answer
    I know that report,but that doesn't help me.
    Any other way
    Thanks
    Jai

  • END OF PAGE IN ALV LIST

    Hi All,
    I am generating the report output in ALV list and downloading in the PDF format. It is working fine.
    But I am not able to print last line(AS SOME TEXT) on each page of the report. I think the output of report in ALV LIST does not show the END OF PAGE, But It should show once we take print out.
    Please let me know.
    Waiting for reply.
    Thanks,
    Rakesh Singh

    Rakesh,
    END OF PAGE can be found in ALV Printout, you can't see it in Display. So if you download as PDF without printing, it is normal not to display END-OF-PAGE.
    You can print your report and you can see the END-OF-PAGE in spool and maybe you can convert this spool as PDF. Otherwise you won't use END-OF-PAGE.
    Look at these links, same topic:
    End of page in ALV reports
    ALV - END_OF_PAGE event
    http://help.sap.com/saphelp_webas630/helpdata/en/ee/c8e071d52611d2b468006094192fe3/content.htm
    End of Page event not triggering in ALV report

  • Regarding END of PAGE in ALV's

    hi guys,
    Can you tell me which function module do i use to insert end of page in ALV's.
    thanks
    pavan

    Hi Pavan,
    check the format of End of page in this program.The page no will not be shown in the display,when you will take the printout you will see the content(pageno) that is written in the end of page event.
    report ztest
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid,
          gt_events     type slis_t_event,
          gd_prntparams type slis_print_alv.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform build_events.
    perform build_print_params.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
    There are a number of ways to create a fieldcat.
    For the purpose of this example i will build the fieldcatalog manualy
    by populating the internal table fields individually and then
    appending the rows. This method can be the most time consuming but can
    also allow you  more control of the final product.
    Beware though, you need to ensure that all fields required are
    populated. When using some of functionality available via ALV, such as
    total. You may need to provide more information than if you were
    simply displaying the result
                  I.e. Field type may be required in-order for
                       the 'TOTAL' function to work.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
    fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-do_sum      = 'X'.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
    gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
                i_callback_user_command = 'USER_COMMAND'
               i_grid_title           = outtext
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
               it_special_groups       = gd_tabgroup
                it_events               = gt_events
                is_print                = gd_prntparams
                i_save                  = 'X'
               is_variant              = z_template
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    endform.                    " DATA_RETRIEVAL
    Form  TOP-OF-PAGE                                                 *
    ALV Report Header                                                 *
    Form top-of-page.
    *ALV Header declarations
    data: t_header type slis_t_listheader,
          wa_header type slis_listheader,
          t_line like wa_header-info,
          ld_lines type i,
          ld_linesc(10) type c.
    Title
      wa_header-typ  = 'H'.
      wa_header-info = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      CONCATENATE  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
                   sy-datum(4) INTO wa_header-info.   "todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
                        into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
               i_logo             = 'Z_LOGO'.
    endform.
          FORM USER_COMMAND                                          *
          --> R_UCOMM                                                *
          --> RS_SELFIELD                                            *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                      rs_selfield TYPE slis_selfield.
    Check function code
      CASE r_ucomm.
        WHEN '&IC1'.
      Check field clicked on within ALVgrid report
        IF rs_selfield-fieldname = 'EBELN'.
        Read data table, using index of row user clicked on
          READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
        Set parameter ID for transaction screen field
          SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
        Sxecute transaction ME23N, and skip initial data entry screen
          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDCASE.
    ENDFORM.
    *&      Form  BUILD_EVENTS
          Build events table
    form build_events.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = gt_events[].
      read table gt_events with key name =  slis_ev_end_of_page
                               into ls_event.
      if sy-subrc = 0.
        move 'END_OF_PAGE' to ls_event-form.
        append ls_event to gt_events.
      endif.
        read table gt_events with key name =  slis_ev_end_of_list
                               into ls_event.
      if sy-subrc = 0.
        move 'END_OF_LIST' to ls_event-form.
        append ls_event to gt_events.
      endif.
    endform.                    " BUILD_EVENTS
    *&      Form  BUILD_PRINT_PARAMS
          Setup print parameters
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " BUILD_PRINT_PARAMS
    *&      Form  END_OF_PAGE
    form END_OF_PAGE.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      write: sy-uline(50).
      skip.
      write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  END_OF_LIST
    form END_OF_LIST.
      data: listwidth type i,
            ld_pagepos(10) type c,
            ld_page(10)    type c.
      skip.
      write:/40 'Page:', sy-pagno .
    endform.

  • How doi print Any variable at the end of page in ALV report?

    Hi,
    Anyone can tell me that How do i print Any variable at the end of page in ALV report?
    Exmale: at the ende of alv report i want to print total no of employee who has taken house loan or education loan.

    Hi,
    Go through these links
    Thread in sdn regarding FOOTER IN ALV
    [ALV  FOOTER;
    Wiki in sdn regarding HEADER AND FOOTER IN ALV
    [https://wiki.sdn.sap.com/wiki/display/Snippets/ABAP%20Objects%20-%20ALV%20Model%20-%20Using%20Header%20and%20Footer]
    Header and Footer in ALV
    [http://www.sap-img.com/abap/test-alv-display-with-header-footer.htm]
    Hope this helps.
    Thank you,
    Pavan.

  • How to get Subtotal text in ALV using OOPS

    hi,
    Can any one pls help me out getting  <b>subtotals text</b> in ALV using OOPS concepts....Pls provide me if any of u have  sample code for that......
    my code:
    data:gr_grid_d0100 type ref to cl_gui_alv_grid.
    data : gr_events_d0100   type ref to lcl_events_d0100.
    classes**********
    class lcl_events_d0100 definition.
      public section.
        methods:
    subtotal_text for event subtotal_text
                        of cl_gui_alv_grid
                        importing es_subtottxt_info
                        ep_subtot_line
                        e_event_data.
    endclass.
    class lcl_events_d0100 implementation.
    method subtotal_text.
        perform d0100_event_subtotal_text using       es_subtottxt_info
    ep_subtot_line
    e_event_data.
      endmethod.                    "subtotal_text
    endclass.
    data : gr_event_handler type ref to lcl_events_d0100.
    SET HANDLER gr_event_handler->subtotal_text FOR wcl_alv_grid_request
    FORM d0100_event_subtotal_text USING
          es_subtottxt_info TYPE LVC_S_STXT
          ep_subtot_line TYPE REF TO data
          e_event_data TYPE REF TO cl_alv_event_data.
      DATA: l_text TYPE string.
      l_text = es_subtottxt_info.
      FIELD-SYMBOLS: <fs> TYPE ANY.
      ASSIGN e_event_data->m_data->* TO <fs>.
                            <fs> = text-007.

    hi vijay
    check this code
    if you want to use field symbols.
    data: total type ref to data,
    subtotal1 type ref to data.
    field-symbols <total> like gt_sflight.
    field-symbols <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
    importing
    ep_collect00 = total
    ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    or u can use
    U have to do the subtotal column wise.In the field catalog specify the following in addition to the corresponding field name(i.e. Column)
    DATA ls_fcat TYPE lvc_s_fcat.
    ls_fcat-do_sum = 'X'.
    Hope this helps u out.
    Thanks & Regards,
    naveen

  • End of page in alv list output.

    Hi All,
    Can any body help me out for how to show end of page in alv list output.
    Thanks,
    Rakesh Singh

    Refer this link:
    http://www.sap-img.com/abap/sample-programs-on-alv-grid.htm
    Regards,
    Ravi

  • Header in ALV using Oops

    I need to display Table header in ALV using Oops.
    I need to data from 8 fields which I get in the run time of the program.
    I am new to Oops ALV, I have done a similar thing in normal ALV but not in oops.
    Detailed info required, Custom container settings as well.
    Thanks in Advance

    see this weblog TOP_OF_PAGE in ALV  Using CL_GUI_ALV_GRID

  • HI   ALV USING OOPS CONCEPT

    hi
    i would like to have coding for total and subtotal in alv using oops concept and (not using function module).
    also i would like to have coding for cell color and heading and footer.
    thanx in adv
    rocky

    Hi Rocky,
    please check this link
    http://www.****************/Tutorials/ALV/Total/text.htm
    While modifying field catalog , try the following.
    Field-symbols: <lfs_fieldcat> TYPE lvc_s_fcat.
    LOOP AT i_fieldcat ASSIGNING <lfs_fieldcat>.
    CASE <lfs_fieldcat>-fieldname.
    WHEN 'LOSGR'.
    <lfs_fieldcat>-coltext = text-007.
    <lfs_fieldcat>-do_sum = c_x.
    ENDCASE.
    ENDLOOP.
    Or if you want to use field symbols.
    data: total type ref to data,
    subtotal1 type ref to data.
    field-symbols <total> like gt_sflight.
    field-symbols <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
    importing
    ep_collect00 = total
    ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    Best regards,
    raam

  • Detect rows selection in ALV using oops

    Hi ALL,
    I HAVE An ALV OUTPUT OF RECORDS USING OOPS.
    NOW I CAN SELECT ONE OR MULTIPLE ROWS OF THE OUTPUT AND I HAVE ADDED A DELETE ICON TO MY TOOL BAR.
    I HAVE BACK AND EXIT BUTTON AND I HAVE CODE FOR THE SAME IN PAI.
    FOR DELETE ICON SY-UCOMM IS DELE AND CONTROL COMES TO PAI
    MY QUESTION IS HOW DO YOU KNOW WHICH ROW OR ROWS ARE SELETEd , IN NORMAL ABAP , a field BOX type c has a value X , but what about in ALV using OOPS.
    I have no idea whether my approach is correct or wrong or do i need to something else.
    Thanks

    Hi Darren,
    This is what i have . Iam new oops so i want to just make sure
    method handle_user_command.
    § 3.In event handler method for event USER_COMMAND: Query your
      function codes defined in step 2 and react accordingly.
        data: lt_rows type lvc_t_row.
        case e_ucomm.
          when 'DELETE'.
            call method g_grid->get_selected_rows
                     importing et_index_rows = lt_rows.
    DATA : WA_LT_ROWS LIKE LINE OF LT_ROWS.
    LOOP AT LT_ROWS INTO WA_LT_ROWS.
    DELETE I_ZFINAL INDEX WA_LT_ROWS-INDEX.
    ENDLOOP.
    ENDCASE.
    call method g_grid->set_table_for_first_display
    exporting
       I_BYPASSING_BUFFER            =
       I_BUFFER_ACTIVE               =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
         is_layout                     = g_layout
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
        it_toolbar_excluding          = pt_exclude
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
      changing
        it_outtab                     =  i_zFINAL
        it_fieldcatalog               = fieldcat
       IT_SORT                       =
       IT_FILTER                     =
      exceptions
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        others                        = 4
    LET ME KNOW THANKS

  • End of page in ALV display using OOPS

    Hi all,
       How can i display end of page or footer in ALV display using OOPS concept.
    Thanks,
    vinit

    Hi ,
    Try using this code.
    First add a handler method in your handler class definition as:
    e.g. METHOD handle__end_of_page
    FOR EVENT print_end_of_page OF cl_gui_alv_grid .
    Then implement the method in the implementation part of your local class.
    e.g. METHOD handle_print_end_of_page .
    WRITE:/ 'Flights Made on ', sy-datum .
    ENDMETHOD .
    And register this method as the handler.
    SET HANDLER gr_event_handler->handle_print_end_of_page FOR gr_alvgrid .
    Hope this helps.
    Regards,
    Janaki.

  • End of page in ALV Grid Report

    Dear ABAPres,
            I have developed ALV report using the Function module 'REUSE_ALV_GRID_DISPLAY'.
    I want to display the End of Page.How can i achiev this.Please help me in this.
    Thanks & Regards,
    ashok.

    Hi ,
    See below code....
    REPORT  zcssd_sales_hours_pend2.
    TYPE-POOLS : slis.
    *****Tables Used in the Report************************
    TABLES :  vbak,
             tvak,
             tvlk,
             likp,
             vbep,
             t001w,
             kna1.
    *****Global Data Declarations*************************
    DATA: i_fieldcat TYPE slis_t_fieldcat_alv ,
          wa_fieldcat TYPE slis_fieldcat_alv.
    DATA: tbl_fieldcat1 TYPE slis_t_fieldcat_alv ,
          st_fieldcat1  TYPE slis_fieldcat_alv.
    DATA: w_layout TYPE slis_layout_alv.
    DATA: st_layout1    TYPE slis_layout_alv,
          v_header         TYPE slis_t_listheader,
          v_header1         TYPE slis_t_listheader,
          v_header2         TYPE slis_t_listheader,
          v_events         TYPE slis_t_event.
    DATA: gt_sort TYPE slis_t_sortinfo_alv.
    DATA: i_events TYPE slis_t_event,
          i_event_exit TYPE slis_t_event_exit.
    DATA: w_events LIKE LINE OF i_events,
          w_event_exit LIKE LINE OF i_event_exit.
    DATA: i_list_comments TYPE slis_t_listheader.
    DATA: w_list_comments LIKE LINE OF i_list_comments.
    DATA: w_print TYPE slis_print_alv.
    DATA: gs_sort TYPE slis_sortinfo_alv.
    *DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    *****Declaration of Internal Tables****************
    TYPES :  BEGIN OF ty_vbap_vbak,
             vbeln TYPE vbap-vbeln,
             posnr TYPE vbap-posnr,
             matnr TYPE vbap-matnr,
             matkl TYPE vbap-matkl,
             zmeng TYPE vbap-zmeng,
             meins TYPE vbap-meins,
             spart TYPE vbap-spart,
             netwr TYPE vbap-netwr,
             kwmeng TYPE vbap-kwmeng,
             werks TYPE vbap-werks,
             route TYPE vbap-route,
             netpr TYPE vbap-netpr,
             kpein TYPE vbap-kpein,
             kmein TYPE vbap-kmein,
             auart TYPE vbak-auart,
             lifsk TYPE vbak-lifsk,
             netwr1 TYPE vbak-netwr,
             vkorg TYPE vbak-vkorg,
             vtweg TYPE vbak-vtweg,
             spart1 TYPE vbak-spart,
             vdatu TYPE vbak-vdatu,
             kunnr TYPE vbak-kunnr,
             END OF ty_vbap_vbak.
    DATA : i_vbap_vbak1 TYPE STANDARD TABLE OF ty_vbap_vbak.
    DATA : w_vbap_vbak1 LIKE LINE OF i_vbap_vbak1.
    DATA : i_vbap_vbak2 TYPE STANDARD TABLE OF ty_vbap_vbak.
    DATA : w_vbap_vbak2 LIKE LINE OF i_vbap_vbak2.
    TYPES :  BEGIN OF ty_knvv,
             kunnr TYPE knvv-kunnr,
             vkorg TYPE knvv-vkorg,
             vtweg TYPE knvv-vtweg,
             spart TYPE knvv-spart,
             bzirk TYPE knvv-bzirk,
             name1 TYPE kna1-name1,
            END OF ty_knvv.
    DATA :  i_knvv1 TYPE STANDARD TABLE OF ty_knvv.
    DATA :  w_knvv1 LIKE LINE OF i_knvv1.
    DATA :  i_knvv2 TYPE STANDARD TABLE OF ty_knvv.
    DATA :  w_knvv2 LIKE LINE OF i_knvv2.
    TYPES : BEGIN OF ty_likp,
            vbeln TYPE likp-vbeln,
            lfart TYPE likp-lfart,
            lddat TYPE likp-lddat,
            vbtyp TYPE likp-vbtyp,
            kunnr TYPE likp-kunnr,
            anzpk TYPE likp-anzpk,
            netwr TYPE likp-netwr,
            werks TYPE likp-werks.
    TYPES : END OF ty_likp.
    DATA :  i_likp TYPE STANDARD TABLE OF ty_likp.
    DATA :  w_likp LIKE LINE OF i_likp.
    DATA : i_t171t TYPE STANDARD TABLE OF t171t.
    DATA : w_t171t LIKE LINE OF i_t171t.
    TYPES : BEGIN OF ty_lips,
            vbeln TYPE lips-vbeln,
            posnr TYPE lips-posnr,
            matnr TYPE lips-matnr,
            matkl TYPE lips-matkl,
            werks TYPE lips-werks,
            lfimg TYPE lips-lfimg,
            netwr TYPE lips-netwr.
    TYPES : END OF ty_lips.
    DATA :  i_lips TYPE STANDARD TABLE OF ty_lips.
    DATA :  w_lips LIKE LINE OF i_lips.
    TYPES : BEGIN OF ty_likp_lips,
            vbeln TYPE likp-vbeln,
            vkorg TYPE likp-vkorg,
            lfart TYPE likp-lfart,
            lddat TYPE likp-lddat,
            vbtyp TYPE likp-vbtyp,
            kunnr TYPE likp-kunnr,
            anzpk TYPE likp-anzpk,
            netwr TYPE likp-netwr,
            werks TYPE likp-werks,
            posnr TYPE lips-posnr,
            matnr TYPE lips-matnr,
            matkl TYPE lips-matkl,
            lipswerks TYPE lips-werks,
            lfimg TYPE lips-lfimg,
            vrkme TYPE lips-vrkme,
            vgbel TYPE lips-vgbel,
            vtweg TYPE lips-vtweg,
            spart TYPE lips-spart,
            lipsnetwr TYPE lips-netwr.
    TYPES : END OF ty_likp_lips.
    DATA : i_likp_lips TYPE STANDARD TABLE OF ty_likp_lips.
    DATA : w_likp_lips LIKE LINE OF i_likp_lips.
    DATA : i_likp_lips1 TYPE STANDARD TABLE OF ty_likp_lips.
    DATA : w_likp_lips1 LIKE LINE OF i_likp_lips1.
    TYPES : BEGIN OF ty_vbup,
            vbeln TYPE vbup-vbeln,
            posnr TYPE vbup-posnr,
            lfsta TYPE vbup-lfsta,
            wbsta TYPE vbup-wbsta,
            END OF ty_vbup.
    TYPES : BEGIN OF ty_vbup1,
            vbeln TYPE vbup-vbeln,
            posnr TYPE vbup-posnr,
            lfgsa TYPE vbup-lfgsa,
            wbsta TYPE vbup-wbsta,
            END OF ty_vbup1.
    DATA : i_vbup TYPE STANDARD TABLE OF ty_vbup.
    DATA : w_vbup LIKE LINE OF i_vbup.
    DATA : i_vbup1 TYPE STANDARD TABLE OF ty_vbup1.
    DATA : w_vbup1 LIKE LINE OF i_vbup1.
    TYPES : BEGIN OF ty_output,
            vbeln TYPE likp-vbeln,
            vkorg TYPE likp-vkorg,
            lfart TYPE likp-lfart,
            lddat TYPE likp-lddat,
            vbtyp TYPE likp-vbtyp,
            kunnr TYPE likp-kunnr,
            anzpk TYPE likp-anzpk,
            netwr TYPE likp-netwr,
            werks TYPE likp-werks,
            posnr TYPE lips-posnr,
            matnr TYPE lips-matnr,
            matkl TYPE lips-matkl,
            lipswerks TYPE lips-werks,
            lfimg TYPE lips-lfimg,
            vrkme TYPE lips-vrkme,
            vgbel TYPE lips-vgbel,
            vtweg TYPE lips-vtweg,
            spart TYPE lips-spart,
            lipsnetwr TYPE lips-netwr,
            lfsta TYPE vbup-lfsta,
            wbsta TYPE vbup-wbsta,
            END OF ty_output.
    DATA : i_output TYPE STANDARD TABLE OF ty_output.
    DATA : w_output LIKE LINE OF i_output.
    DATA : i_output1 TYPE STANDARD TABLE OF ty_output.
    DATA : w_output1 LIKE LINE OF i_output1.
    TYPES : BEGIN OF ty_vbfa,
            vbelv TYPE vbfa-vbelv,
            posnv TYPE vbfa-posnv,
            vbeln TYPE vbfa-vbeln,
            posnn TYPE vbfa-posnn,
            vbtyp_n TYPE vbfa-vbtyp_n,
            rfmng TYPE vbfa-rfmng,
           RFWRT TYPE VBFA-RFWRT,
            vbtyp_v TYPE vbfa-vbtyp_v,
            END OF ty_vbfa.
    DATA : i_vbfa TYPE STANDARD TABLE OF ty_vbfa.
    DATA : w_vbfa LIKE LINE OF i_vbfa.
    TYPES : BEGIN OF ty_vbfa1,
            vbelv TYPE vbfa-vbelv,
            posnv TYPE vbfa-posnv,
            vbeln TYPE vbfa-vbeln,
            posnn TYPE vbfa-posnn,
            rfmng TYPE vbfa-rfmng,
            rfwrt TYPE vbfa-rfwrt,
            END OF ty_vbfa1.
    DATA : i_vbfa1 TYPE STANDARD TABLE OF ty_vbfa1.
    DATA : w_vbfa1 LIKE LINE OF i_vbfa1.
    TYPES: BEGIN OF ty_vbrk_vbrp,
           vbeln TYPE vbrk-vbeln,
           fkart TYPE vbrk-fkart,
           fktyp TYPE vbrk-fktyp,
           vbtyp TYPE vbrk-vbtyp,
           waerk TYPE vbrk-waerk,
           netwr TYPE vbrk-netwr,
           posnr TYPE vbrp-posnr,
           fkimg TYPE vbrp-fkimg,
           vrkme TYPE vbrp-vrkme,
           umvkz TYPE vbrp-umvkz,
           umvkn TYPE vbrp-umvkn,
           netwr1 TYPE vbrp-netwr,
           END OF ty_vbrk_vbrp.
    DATA : i_vbrk_vbrp TYPE STANDARD TABLE OF ty_vbrk_vbrp.
    DATA : w_vbrk_vbrp LIKE LINE OF i_vbrk_vbrp.
    TYPES : BEGIN OF ty_vbep,
            vbeln TYPE vbep-vbeln,
            posnr TYPE vbep-posnr,
            wmeng TYPE vbep-wmeng,
            lddat TYPE vbep-lddat,
            END OF ty_vbep.
    DATA : i_vbep TYPE STANDARD TABLE OF ty_vbep.
    DATA : w_vbep LIKE LINE OF i_vbep.
    TYPES : BEGIN OF ty_vbep_vbup,
            vbeln TYPE vbep-vbeln,
            posnr TYPE vbep-posnr,
            wmeng TYPE vbep-wmeng,
            lddat TYPE vbep-lddat,
            lfgsa TYPE vbup-lfgsa,
            wbsta TYPE vbup-wbsta,
            END OF ty_vbep_vbup.
    DATA : i_vbep_vbup TYPE STANDARD TABLE OF ty_vbep_vbup.
    DATA : w_vbep_vbup LIKE LINE OF i_vbep_vbup.
    TYPES : BEGIN OF ty_makt,
            matnr TYPE mara-matnr,
            maktx TYPE makt-maktx,
            END OF ty_makt.
    DATA : i_makt TYPE STANDARD TABLE OF ty_makt.
    DATA : w_makt LIKE LINE OF i_makt.
    TYPES : BEGIN OF ty_final,
            lddat TYPE likp-lddat,
            werks TYPE vbap-werks,
            bzirk TYPE knvv-bzirk,
            bztxt TYPE t171t-bztxt,
            kunnr TYPE vbak-kunnr,
            name1 TYPE kna1-name1,
            vbeln TYPE likp-vbeln,
            wbsta TYPE vbup-wbsta,
            text(25) TYPE c,
            lfgsa TYPE vbup-lfgsa,
            kwmeng TYPE vbap-kwmeng,
            netwr  TYPE likp-netwr,
            order TYPE vbak-vbeln,
            posnr TYPE vbap-posnr,
            matnr TYPE mara-matnr,
            netwr1 TYPE vbak-netwr,
            kwmeng1 TYPE vbap-kwmeng,
            kwmeng2 TYPE vbap-kwmeng,
            route TYPE vbap-route,
            lifsk TYPE vbak-lifsk,
            vdatu TYPE vbak-vdatu,
            END OF ty_final.
    DATA : i_final TYPE STANDARD TABLE OF ty_final.
    DATA : w_final LIKE LINE OF i_final.
    DATA : i_final1 TYPE STANDARD TABLE OF ty_final.
    DATA : w_final1 LIKE LINE OF i_final1.
    TYPES : BEGIN OF ty_final2,
            lddat TYPE likp-lddat,
            werks TYPE vbap-werks,
            bzirk TYPE knvv-bzirk,
            bztxt TYPE t171t-bztxt,
            kunnr TYPE vbak-kunnr,
            name1 TYPE kna1-name1,
            vbeln TYPE likp-vbeln,
            wbsta TYPE vbup-wbsta,
            text(25) TYPE c,
            lfgsa TYPE vbup-lfgsa,
            kwmeng TYPE vbap-kwmeng,
            netwr  TYPE likp-netwr,
            order TYPE vbak-vbeln,
            posnr TYPE vbap-posnr,
            matnr TYPE mara-matnr,
            netwr1 TYPE vbak-netwr,
            kwmeng1 TYPE vbap-kwmeng,
            kwmeng2 TYPE vbap-kwmeng,
            vdatu TYPE vbak-vdatu,
            maktx TYPE makt-maktx,
            END OF ty_final2.
    DATA : i_final2 TYPE STANDARD TABLE OF ty_final2.
    DATA : w_final2 LIKE LINE OF i_final2.
    DATA : i_conwa TYPE STANDARD TABLE OF vbco6 WITH HEADER LINE.
    DATA : i_vbfa_tab TYPE STANDARD TABLE OF vbfa WITH HEADER LINE.
    DATA : opt TYPE ctu_params.
    DATA : v_vbeln TYPE vbak-vbeln.
    DATA : w_vbeln TYPE vbak-vbeln.
    DATA : v_repid TYPE sy-repid.
    DATA : v_netwr TYPE vbak-netwr.
    DATA : v_kwmeng TYPE vbap-kwmeng.
    DATA : v_netwr1 TYPE vbak-netwr.
    DATA : v_kwmeng1 TYPE vbap-kwmeng.
    DATA : v_time(60) TYPE c.
    DATA : v_plant(60) TYPE c.
    DATA : v_date(60) TYPE c.
    DATA : v_lfart(60) TYPE c.
    DATA : v_auart(60) TYPE c.
    DATA : v_mod(2) TYPE c.
    DATA : name(10).
    DATA : v_indexes TYPE sy-index.
    DATA : v_text(40) TYPE c.
    DATA : v_total TYPE p DECIMALS 2.
    DATA : v_total1(60) TYPE c.
    DATA : v_totqt TYPE p DECIMALS 2.
    ****Constants Declaration********************************
    CONSTANTS : c_wbstaa TYPE vbup-wbsta VALUE 'A',
                c_wbstab TYPE vbup-wbsta VALUE 'B',
                c_wbstac TYPE vbup-wbsta VALUE 'C',
                c_lfartlf TYPE likp-lfart VALUE 'LF',
                c_lfartlr TYPE likp-lfart VALUE 'LR',
                c_lfartlo TYPE likp-lfart VALUE 'LO',
                c_lfartzlo TYPE likp-lfart VALUE 'ZLO',
                c_lfgsaa TYPE vbup-lfgsa VALUE 'A',
                c_lfgsab TYPE vbup-lfgsa VALUE 'B',
                c_vbtyp_nj TYPE vbfa-vbtyp_n VALUE 'J',
                c_vbtyp_nt TYPE vbfa-vbtyp_n VALUE 'T',
                c_vbtyp_nm TYPE vbfa-vbtyp_n VALUE 'M',
                c_vbtyp_vh TYPE vbfa-vbtyp_v VALUE 'H',
                c_1100 TYPE t001w-werks VALUE '1100',
                c_1101 TYPE t001w-werks VALUE '1101'.
    ****Selection Screen Declaration*************************
    SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE title.
    SELECT-OPTIONS :   s_werks FOR t001w-werks OBLIGATORY.
    SELECT-OPTIONS :   s_lddat FOR likp-lddat.
    SELECT-OPTIONS :   s_auat FOR vbak-auart DEFAULT 'OR'.
    SELECT-OPTIONS :   s_lfat FOR likp-lfart DEFAULT 'LF'.
    SELECT-OPTIONS :   s_vbeln FOR vbep-vbeln NO-DISPLAY.
    SELECT-OPTIONS :   s_posnr FOR vbep-posnr NO-DISPLAY.
    SELECTION-SCREEN : END OF BLOCK b1.
    ****Initialization***************************************
    INITIALIZATION.
      v_repid = sy-repid.
      title = 'Selection Screen Options'.
      s_werks-sign   = 'I'.
      s_werks-option = 'EQ'.
      s_werks-low    = c_1100.
      s_werks-high   = c_1101.
      APPEND s_werks.
      CALL FUNCTION 'OIUREP_MONTH_FIRST_LAST'
        EXPORTING
          i_date      = sy-datum
        IMPORTING
          e_first_day = s_lddat-low
          e_last_day  = s_lddat-high.
      s_lddat-sign = 'I'.
      s_lddat-option = 'EQ'.
      APPEND s_lddat TO s_lddat.
    ****At selection screen on field*************************
    AT SELECTION-SCREEN ON s_werks.
      SELECT SINGLE * FROM t001w WHERE werks IN s_werks.
      IF sy-subrc <> 0.
        MESSAGE 'Please enter correct Plant' TYPE 'E'.
      ENDIF.
    AT SELECTION-SCREEN ON s_lddat.
    AT SELECTION-SCREEN ON s_auat.
      SELECT SINGLE * FROM tvak WHERE auart IN s_auat.
      IF sy-subrc  <> 0.
        MESSAGE 'Please enter correct Sales Doc Type' TYPE 'E'.
      ENDIF.
    AT SELECTION-SCREEN ON s_lfat.
      SELECT SINGLE * FROM tvlk WHERE lfart IN s_lfat.
      IF sy-subrc  <> 0.
        MESSAGE 'Please enter correct Delv Doc Type' TYPE 'E'.
      ENDIF.
    ****Start selection of data from tables based on cond****
    PERFORM SALESORDER_HEADER_ITEM.
    PERFORM CUSTOMER_SALESDATA.
    START-OF-SELECTION.
      PERFORM delivery_header_item.
      PERFORM salesdocument_itemstatus.
      PERFORM salesdocument_schedulelinedata.
      PERFORM salesdocument_itemstatus_lfgsa.
      PERFORM sales_district.
      PERFORM delivery_salesdocument_wbsta.
      PERFORM salesdocumentflow.
      PERFORM billingdoc_header_item.
      PERFORM salesorder_header_item2.
      PERFORM customer_salesdata1.
      PERFORM delivery_output.
      PERFORM salesdoc_shdlnitem_itemstatus.
      PERFORM salesorder_header_item1.
      PERFORM customer_salesdata2.
      PERFORM salesorder_output.
      PERFORM material_descriptions.
      PERFORM final_output.
    END-OF-SELECTION.
    ****Fieldcatalog Routine for ALVGRID******************
      PERFORM fieldcatalog.
    ****Event Routine for ALVGRID*************************
      PERFORM build_header CHANGING v_header v_header1.
      PERFORM build_events CHANGING v_events.
      PERFORM print_build.
    ****Layout Routine for ALVGRID************************
      PERFORM layout_build.
    ****Grid_display Routine for ALVGRID******************
      PERFORM grid_display.
    *&      Form  fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcatalog .
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'LDDAT'.
      wa_fieldcat-seltext_m = 'Loading Dt'.
      wa_fieldcat-key       = ' '.   "SUBTOTAL KEY
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'WERKS'.
      wa_fieldcat-seltext_m = 'Plant'.
      wa_fieldcat-key       = ' '.   "SUBTOTAL KEY
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'BZIRK'.
      wa_fieldcat-seltext_m = 'Sales Dist'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'BZTXT'.
      wa_fieldcat-seltext_m = 'Name of Dist'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'KUNNR'.
      wa_fieldcat-seltext_m = 'Customer No.'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'NAME1'.
      wa_fieldcat-seltext_m = 'Customer Name'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'VBELN'.
      wa_fieldcat-seltext_m = 'Delivery No.'.
      wa_fieldcat-key       = ' '.   "SUBTOTAL KEY
      wa_fieldcat-hotspot   = 'X'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'WBSTA'.
      wa_fieldcat-seltext_m = 'Delv Status'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'TEXT'.
      wa_fieldcat-seltext_m = 'Status Desc'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'KWMENG'.
      wa_fieldcat-seltext_m = 'Delivery Qty'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'NETWR'.
      wa_fieldcat-seltext_m = 'Delv Net Value'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'ORDER'.
      wa_fieldcat-seltext_m = 'Sales Order'.
      wa_fieldcat-hotspot   = 'X'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'KWMENG1'.
      wa_fieldcat-seltext_m = 'Order Qty'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'NETWR1'.
      wa_fieldcat-seltext_m = 'Sales Net Value'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'LIFSK'.
      wa_fieldcat-seltext_m = 'Delv Block'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'ROUTE'.
      wa_fieldcat-seltext_m = 'Route'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-tabname = 'I_FINAL1'.
      wa_fieldcat-fieldname = 'VDATU'.
      wa_fieldcat-seltext_m = 'Req Delivery Dt'.
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR wa_fieldcat.
      CLEAR gs_sort.
      gs_sort-fieldname = 'LDDAT'.
      gs_sort-spos      = 1.
      gs_sort-up        = 'X'.
      gs_sort-subtot    = 'X'.
      APPEND gs_sort TO gt_sort.
    ENDFORM.                    " fieldcatalog
    *&      Form  print_build
          text
    -->  p1        text
    <--  p2        text
    FORM print_build .
      w_print-no_print_listinfos = 'X'.
    ENDFORM.                    " print_build
    *&      Form  layout_build
          text
    -->  p1        text
    <--  p2        text
    FORM layout_build .
      w_layout-zebra = 'X'.
      w_layout-no_vline = ''.
      w_layout-colwidth_optimize = 'X'.
      w_layout-detail_popup = 'X'.
      w_layout-detail_initial_lines = 'X'.
      w_layout-detail_titlebar = 'Detail Title Bar'.
    ENDFORM.                    " layout_build
    *&      Form  GRID_DISPLAY
          text
    FORM grid_display.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program      = v_repid
          i_callback_user_command = 'PROCESS_USER_COMMANDS'
          is_layout               = w_layout
          it_fieldcat             = i_fieldcat[]
          it_sort                 = gt_sort[]
          i_default               = 'X'
          i_save                  = 'A'
          it_events               = v_events
          is_print                = w_print
        TABLES
          t_outtab                = i_final1
        EXCEPTIONS
          program_error           = 1
          OTHERS                  = 2.
    ENDFORM.                    "GRID_DISPLAY
    *&      Form  END_OF_LIST
    FORM top_of_list.
    ENDFORM.                    "TOP_OF_LIST
    *&      Form  PROCESS_USER_COMMANDS
          text
         -->SYST-UCOMM text
         -->SELFIELD   text
    FORM process_user_commands USING syst-ucomm LIKE syst-ucomm
                                     selfield TYPE slis_selfield.
      CASE syst-ucomm.
        WHEN '&IC1'.
          IF selfield-sel_tab_field = 'I_FINAL1-VBELN'.
            w_vbeln = selfield-value.
            SET PARAMETER ID: 'VL' FIELD w_vbeln.
            CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
          ELSEIF selfield-sel_tab_field = 'I_FINAL1-ORDER'.
            v_vbeln = selfield-value.
            SET PARAMETER ID: 'AUN' FIELD v_vbeln.
            CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
          ELSE.
            READ TABLE i_final1 INTO w_final1 INDEX selfield-tabindex.
            IF w_final1-vbeln <> ' '.
              LOOP AT i_final INTO w_final WHERE vbeln = w_final1-vbeln.
                READ TABLE i_makt INTO w_makt WITH KEY matnr = w_final-matnr .
                IF sy-subrc = 0.
                  MOVE : w_final TO w_final2.
                  MOVE : w_makt-maktx TO w_final2-maktx.
                  APPEND w_final2 TO i_final2.
                ELSE.
                  MOVE : w_final TO w_final2.
                  MOVE : ' ' TO w_final2-maktx.
                  APPEND w_final2 TO i_final2.
                ENDIF.
              ENDLOOP.
              CLEAR w_makt.
            ELSE.
              LOOP AT i_final INTO w_final WHERE order = w_final1-order.
                READ TABLE i_makt INTO w_makt WITH KEY matnr = w_final-matnr .
                IF sy-subrc  = 0.
                  MOVE : w_final TO w_final2.
                  MOVE : w_makt-maktx TO w_final2-maktx.
                  APPEND w_final2 TO i_final2.
                ELSE.
                  MOVE : w_final TO w_final2.
                  MOVE : ' ' TO w_final2-maktx.
                  APPEND w_final2 TO i_final2.
                ENDIF.
              ENDLOOP.
              CLEAR w_makt.
            ENDIF.
            PERFORM fieldcatalog1 USING selfield .
            PERFORM event_build.
            PERFORM layout_build1.
            PERFORM grid_display1.
          ENDIF.
      ENDCASE.
    ENDFORM.                               " PROCESS_USER_COMMANDS
    *&      Form  fieldcatalog1
          text
    -->  p1        text
    <--  p2        text
    FORM fieldcatalog1 USING r_selfield TYPE slis_selfield.
      REFRESH tbl_fieldcat1.
      READ TABLE i_final1 INTO w_final1 INDEX r_selfield-tabindex.
      IF w_final1-vbeln <> ' '.
        PERFORM write_fieldcat1 USING 'POSNR' 'I_FINAL2' 'Item Number' ' ' 2 ' ' ' '
        PERFORM write_fieldcat1 USING 'MATNR' 'I_FINAL2' 'Material Number' ' ' 3 ' ' ' '
        PERFORM write_fieldcat1 USING 'MAKTX' 'I_FINAL2' 'Material Description' ' ' 4 ' ' ' '
        PERFORM write_fieldcat1 USING 'KWMENG' 'I_FINAL2' 'Delivery Qty' ' ' 7 ' ' ' '
        PERFORM write_fieldcat1 USING 'NETWR' 'I_FINAL2' 'Delv Net Value' ' ' 8 ' ' ' '
      ELSE.
        PERFORM write_fieldcat1 USING 'POSNR' 'I_FINAL2' 'Item Number' ' ' 2 ' ' ' '
        PERFORM write_fieldcat1 USING 'MATNR' 'I_FINAL2' 'Material Number' ' ' 3 ' ' ' '
        PERFORM write_fieldcat1 USING 'MAKTX' 'I_FINAL2' 'Material Description' ' ' 4 ' ' ' '
        PERFORM write_fieldcat1 USING 'KWMENG2' 'I_FINAL2' 'Sales Order Qty' ' ' 9 ' ' ' '
        PERFORM write_fieldcat1 USING 'NETWR1' 'I_FINAL2' 'Net Value' ' ' 10 ' ' ' '
      ENDIF.
    ENDFORM.                    " fieldcatalog1
    *&      Form  write_fieldcat1
          text
         -->NAME       text
         -->TAB        text
         -->ST         text
         -->KEY        text
         -->POS        text
         -->LENGTH     text
         -->ICON       text
         -->HOT        text
    FORM write_fieldcat1 USING name tab st key pos length icon hot.
      st_fieldcat1-fieldname   = name.
      st_fieldcat1-tabname     = tab.
      st_fieldcat1-seltext_m   = st.
      st_fieldcat1-key         = key.
      st_fieldcat1-col_pos     = pos.
      st_fieldcat1-outputlen   = length.
      st_fieldcat1-icon        = icon.
      st_fieldcat1-do_sum      = hot.
      APPEND st_fieldcat1 TO tbl_fieldcat1.
      CLEAR st_fieldcat1.
    ENDFORM.                               " WRITE_FIELDCAT
    *&      Form  GRID_DISPLAY1
          text
    -->  p1        text
    <--  p2        text
    FORM grid_display1 .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = v_repid
          it_fieldcat        = tbl_fieldcat1
          is_layout          = st_layout1
          it_events          = i_events[]
        TABLES
          t_outtab           = i_final2
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      REFRESH i_final2.
    ENDFORM.                    " GRID_DISPLAY1
    *&      Form  LAYOUT_BUILD1
          text
    FORM layout_build1 .
      st_layout1-zebra = 'X'.
      st_layout1-no_vline = ''.
      st_layout1-colwidth_optimize = 'X'.
      st_layout1-detail_popup = 'X'.
      st_layout1-detail_initial_lines = 'X'.
      st_layout1-detail_titlebar = 'Detail Title Bar'.
    ENDFORM.                    " layout_build
    *&      Form  salesdocument_itemstatus
          text
    -->  p1        text
    <--  p2        text
    FORM salesdocument_itemstatus .
      CLEAR i_vbup.
      REFRESH i_vbup.
      v_indexes = 10.
      v_text = 'Processing... Sales Doc Item'.
      PERFORM progress_ind.
      IF NOT i_likp_lips[] IS INITIAL.
        SELECT vbeln
               posnr
               lfsta
               wbsta
          FROM vbup INTO TABLE i_vbup
          FOR ALL ENTRIES IN i_likp_lips
          WHERE vbeln = i_likp_lips-vbeln
          AND   posnr = i_likp_lips-posnr
          AND   wbsta IN (c_wbstaa, c_wbstab, c_wbstac).
      ENDIF.
        SORT i_vbup BY vbeln posnr.
      ENDFORM.                    " salesdocument_itemstatus
    *&      Form  delivery_header_item
          text
    -->  p1        text
    <--  p2        text
    FORM delivery_header_item .
      CLEAR i_likp_lips.
      REFRESH i_likp_lips.
      v_indexes = 1.
      v_text = 'Processing.. Delivery'.
      PERFORM progress_ind.
    selected data from delivery header and delivery iten based on loading date and plant
    based on document types LF LR LO ZLO.
      SELECT a~vbeln
             a~vkorg
             a~lfart
             a~lddat
             a~vbtyp
             a~kunnr
             a~anzpk
             a~netwr
             a~werks
             b~posnr
             b~matnr
             b~matkl
             b~werks
             b~lfimg
             b~vrkme
             b~vgbel
             b~vtweg
             b~spart
             b~netwr
        INTO TABLE i_likp_lips
        FROM likp AS a INNER JOIN lips AS b
        ON avbeln = bvbeln
        WHERE a~lfart IN s_lfat
        AND   a~lddat IN s_lddat
        AND   b~werks IN s_werks.
                                            %_HINTS ORACLE 'index("Z05" "Z05LFART" "Z05LDDAT")'.
    DELETE i_likp_lips WHERE lfart NOT IN s_lfat
                           OR lddat NOT IN s_lddat
                           OR lipswerks NOT IN s_werks.
      SORT i_likp_lips BY vbeln posnr.
    ENDFORM.                    " delivery_header_item
    *&      Form  SalesDocument_ScheduleLineData
          text
    -->  p1        text
    <--  p2        text
    FORM salesdocument_schedulelinedata .
      CLEAR i_vbep.
      REFRESH i_vbep.
      v_indexes = 15.
      v_text = 'Processing.. Sales Doc Sch Line Data'.
      PERFORM progress_ind.
    *SELECTED from table vbep based on loading date, this selection will fetch all
    *the open sales orders.
      SELECT vbeln
             posnr
             wmeng
             lddat
        FROM vbep
        INTO TABLE i_vbep
        WHERE vbeln in s_vbeln
          and posnr in s_posnr
          and lddat IN s_lddat.
    DELETE I_VBEP WHERE LDDAT NOT IN S_LDDAT.
      SORT i_vbep BY vbeln posnr.
    ENDFORM.                    " SalesDocument_ScheduleLineData
    *&      Form  salesdocument_itemstatus_lfgsa
          text
    -->  p1        text
    <--  p2        text
    FORM salesdocument_itemstatus_lfgsa .
      CLEAR i_vbup1.
      REFRESH i_vbup1.
      v_indexes = 20.
      v_text = 'Processing... Sales Doc Item'.
      PERFORM progress_ind.
    selected from vbup for all entries of vbep based on respective salesorder and item number
    and lfgsa status equals to A AND B.
      IF NOT i_vbep[] IS INITIAL.
        SELECT vbeln posnr lfgsa wbsta FROM vbup INTO TABLE i_vbup1 FOR ALL ENTRIES IN i_vbep
                                                                     WHERE vbeln = i_vbep-vbeln
                                                                     AND  posnr = i_vbep-posnr
                                                                     AND  LFGSA  IN  (C_LFGSAA, C_LFGSAB).
                                                                    %_HINTS ORACLE 'index("ZS1" "ZS1~LFGSA")'.
      ENDIF.
    DELETE i_vbup1 WHERE lfgsa <> c_lfgsaa AND lfgsa <> c_lfgsab.
      SORT i_vbup1 BY vbeln posnr.
    ENDFORM.                    " salesdocument_itemstatus_lfgsa
    *&      Form  billingdoc_header_item
          text
    -->  p1        text
    <--  p2        text
    FORM billingdoc_header_item .
      CLEAR i_vbrk_vbrp.
      REFRESH i_vbrk_vbrp.
      v_indexes = 40.
      v_text = 'Processing... Billing'.
      PERFORM progress_ind.
    *SELECTED INVOICE DETAILS FROM VBRK AND VBRP .
    IF NOT I_VBFA1[] IS INITIAL.
       SELECT AVBELN AFKART AFKTYP AVBTYP AWAERK ANETWR
              BPOSNR BFKIMG BVRKME BUMVKZ BUMVKN BNETWR
              INTO TABLE I_VBRK_VBRP  FROM VBRK AS A INNER
                         JOIN VBRP AS B ON AVBELN = BVBELN FOR ALL ENTRIES IN I_VBFA1
                         WHERE A~VBELN = I_VBFA1-VBELN AND
                               B~POSNR = I_VBFA1-POSNN.
    ENDIF.
    SORT I_VBRK_VBRP BY VBELN POSNR VRKME.
    ENDFORM.                    " billingdoc_header_item
    *&      Form  sales_district
          text
    -->  p1        text
    <--  p2        text
    FORM sales_district .
      CLEAR i_t171t.
      REFRESH i_t171t.
      v_indexes = 22.
      v_text = 'Processing... Sales District'.
      PERFORM progress_ind.
    *TO SELECT THE SALES DISTRICT FROM I171T.
      SELECT * FROM t171t INTO TABLE i_t171t WHERE spras = 'EN'.
    ENDFORM.                    " sales_district
    *&      Form  Material_Descriptions
          text
    -->  p1        text
    <--  p2        text
    FORM material_descriptions .
      DATA : i_fin TYPE STANDARD TABLE OF ty_final WITH HEADER LINE.
      CLEAR i_makt.
      REFRESH i_makt.
      PERFORM progress_ind.
      i_fin[] = i_final[].
      SORT i_fin BY matnr.
      DELETE ADJACENT DUPLICATES FROM i_fin COMPARING matnr.
    THIS STATEMENT IS USED TO SELECT MATERIAL DESCRIPTIONS BASED ON THE MATERIAL NUMBERS
    PRESENT IN THE FINAL INTERNAL TABLE.
      IF NOT i_fin[] IS INITIAL.
        SELECT matnr maktx FROM makt INTO TABLE i_makt FOR ALL ENTRIES IN i_fin WHERE spras = 'EN'
                                                                                    AND matnr = i_fin-matnr.
      ENDIF.
      SORT i_makt BY matnr.
    ENDFORM.                    " Material_Descriptions
    *&      Form  delivery_salesdocument_wbsta
          text
    -->  p1        text
    <--  p2        text
    This routine will helps us to combine delivery data and sales document item status
    FORM delivery_salesdocument_wbsta .
      CLEAR i_output.
      REFRESH i_output.
      v_indexes = 30.
      v_text = 'Processing... Open Delivery'.
      PERFORM progress_ind.
      LOOP AT i_likp_lips INTO w_likp_lips.
        READ TABLE i_vbup INTO w_vbup WITH KEY vbeln = w_likp_lips-vbeln
                                               posnr = w_likp_lips-posnr BINARY SEARCH.
        IF sy-subrc = 0.
          MOVE-CORRESPONDING w_likp_lips TO w_output.
          MOVE : w_vbup-lfsta TO w_output-lfsta.
          MOVE : w_vbup-wbsta TO w_output-wbsta.
          APPEND w_output TO i_output.
        ENDIF.
      ENDLOOP.
      SORT i_output BY vbeln posnr.
    ENDFORM.                    " delivery_salesdocument_wbsta
    *&      Form  salesdocumentflow
          text
    -->  p1        text
    <--  p2        text
    FORM salesdocumentflow .
      CLEAR i_vbfa.
      REFRESH i_vbfa.
      CLEAR i_vbfa1.
      REFRESH i_vbfa1.
      v_indexes = 35.
      v_text = 'Processing... Sales Doc Flow'.
      PERFORM progress_ind.
    THIS STATEMENT IS USED TO SELECT THE ORDER NUMBERS BASED ON DELIVERY NUMBERS
    FROM SALES DOCUMENT FLOW TABLE.
    IF NOT I_OUTPUT[] IS INITIAL.
       SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG VBTYP_V INTO TABLE I_VBFA FROM VBFA
                                      FOR ALL ENTRIES IN I_OUTPUT WHERE VBELN = I_OUTPUT-VBELN
                                                                    AND POSNN = I_OUTPUT-POSNR
                                                                  AND VBTYP_N IN (C_VBTYP_NJ, C_VBTYP_NT).
       SELECT VBELV POSNV VBELN POSNN RFMNG RFWRT FROM VBFA INTO TABLE I_VBFA1 FOR ALL ENTRIES IN
                                              I_OUTPUT WHERE VBELV = I_OUTPUT-VBELN
                                                         AND POSNV = I_OUTPUT-POSNR
                                                         AND VBTYP_N = C_VBTYP_NM.
    ENDIF.
    SORT I_VBFA BY VBELN POSNN.
    SORT I_VBFA1 BY VBELN POSNN.
    ENDFORM.                    " salesdocumentflow
    *&      Form  salesdoc_shdlnitem_itemstatus
          text
    -->  p1        text
    <--  p2        text
    FORM salesdoc_shdlnitem_itemstatus .
      CLEAR i_vbep_vbup.
      REFRESH i_vbep_vbup.
      v_indexes = 70.
      v_text = 'Processing... Order'.
      PERFORM progress_ind.
    *TO COMBINE THE VBUP DATA WITH STATUS OF LFGSA EQ TO A AND B WITH
    *DATA OF VBEP , WHERE WE GET DATA OF VBEP BASED ON LOADING DATE
      IF NOT i_vbup1 IS INITIAL.
        LOOP AT i_vbup1 INTO w_vbup1.
          READ TABLE i_vbep INTO w_vbep WITH KEY vbeln = w_vbup1-vbeln
                                                 posnr = w_vbup1-posnr BINARY SEARCH.
          IF sy-subrc = 0.
            MOVE : w_vbep-vbeln TO w_vbep_vbup-vbeln,
                   w_vbep-posnr TO w_vbep_vbup-posnr,
                   w_vbep-wmeng TO w_vbep_vbup-wmeng,
                   w_vbep-lddat TO w_vbep_vbup-lddat,
                   w_vbup1-lfgsa TO w_vbep_vbup-lfgsa,
                   w_vbup1-wbsta TO w_vbep_vbup-wbsta.
            APPEND w_vbep_vbup TO i_vbep_vbup.
          ENDIF.
        ENDLOOP.
      ENDIF.
      SORT i_vbep_vbup BY vbeln posnr.
      DELETE ADJACENT DUPLICATES FROM i_vbep_vbup COMPARING vbeln posnr.
    ENDFORM.                    " salesdoc_shdlnitem_itemstatus
    *&      Form  delivery_output
          text
    -->  p1        text
    <--  p2        text
    *This routine will give us all the deliveries which are open or closed with
    *there respective delivered quantity and amount etc.
    FORM delivery_output .
      CLEAR i_final.
      REFRESH i_final.
      v_indexes = 65.
      v_text = 'Processing... Deliver'.
      PERFORM progress_ind.
      IF NOT i_output[] IS INITIAL.
        LOOP AT i_output INTO w_output.
          REFRESH i_vbfa_tab.
         IF W_OUTPUT-LFART = C_LFARTLF OR W_OUTPUT-LFART = C_LFARTLO OR W_OUTPUT-LFART = C_LFARTZLO.
           READ TABLE I_VBFA INTO W_VBFA WITH KEY VBELN = W_OUTPUT-VBELN
                                                  POSNN = W_OUTPUT-POSNR BINARY SEARCH .
         ELSEIF W_OUTPUT-LFART = C_LFARTLR.
           IF W_OUTPUT-VBTYP = 'J'.
             READ TABLE I_VBFA INTO W_VBFA WITH KEY VBELN = W_OUTPUT-VBELN
                                                 POSNN = W_OUTPUT-POSNR BINARY SEARCH.
           ELSE.
             READ TABLE I_VBFA INTO W_VBFA WITH KEY VBELN = W_OUTPUT-VBELN
                                                 POSNN = W_OUTPUT-POSNR
                        

  • End-Of-Page in ALV's ?

    how to use End-Of-Page  event in  ALV's ?

    This is example for ALV report which has End of Page.....
    REPORT ZALV1.
    ******************TABLE DECLARATION***********************************
    TABLES : VBAP. " tables declaration
    *****************TYPE POOLS*******************************************
    TYPE-POOLS : SLIS. " slis type pool
    *****************INTERNAL TABLE DECLARATION***************************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    " internal table for sales document item
    VBELN LIKE VBAP-VBELN, " sales document
    POSNR LIKE VBAP-POSNR, " document item
    ERNAM LIKE VBAP-ERNAM,
    " name of the person who created the object
    ERDAT LIKE VBAP-ERDAT, " date on which the record was created
    MATNR LIKE VBAP-MATNR. " material number
    DATA : END OF IT_VBAP.
    DATA : BEGIN OF IT_MARA OCCURS 0, " general material data
    MATNR LIKE MARA-MATNR, " material number
    ERNAM LIKE MARA-ERNAM,
    " name of the person who created the object
    MATKL LIKE MARA-MATKL, " material group
    MEINS LIKE MARA-MEINS, " base unit of measure
    PSTAT LIKE MARA-PSTAT. " maintainence status
    DATA : END OF IT_MARA.
    ******************VARIABLE
    DECLARATION**********************************
    DATA : REPID LIKE SY-REPID. " program name
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    " field catalog table for vbap
    WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA : IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,
    " field catalog table for mara
    WA_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: GT_XEVENTS TYPE SLIS_T_EVENT.
    DATA: GT_YEVENTS TYPE SLIS_T_EVENT. " events table
    DATA : XS_EVENT TYPE SLIS_ALV_EVENT. " events type
    DATA : GT_PRINT TYPE SLIS_PRINT_ALV. " print table
    *******************MULTIPLE SELECT INPUT
    PARAMETERS**********************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    " multiple selection for sales document
    ******************INITIALIZATION**************************************
    INITIALIZATION.
    REPID = SY-REPID.
    *******************START OF
    SELECTION************************************
    START-OF-SELECTION.
    PERFORM POP_VBAP.
    " populating the table with document item data
    PERFORM POP_MARA.
    " populating the table with general material data
    PERFORM FIELD_CAT.
    " mapping the fields for the field catalog
    PERFORM EVENTS. " using the events
    PERFORM BLOCK_LIST.
    " displaying the data in blocked list
    *& Form field_cat
    text
    --> p1 text
    <-- p2 text
    FORM FIELD_CAT .
    WA_FIELDCAT-FIELDNAME = 'VBELN'.
    WA_FIELDCAT-TABNAME = 'IT_VBAP'.
    WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
    WA_FIELDCAT-COL_POS = 1.
    WA_FIELDCAT-OUTPUTLEN = 10.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'POSNR'.
    WA_FIELDCAT-TABNAME = 'IT_VBAP'.
    WA_FIELDCAT-SELTEXT_L = 'DOC ITEM'.
    WA_FIELDCAT-COL_POS = 2.
    WA_FIELDCAT-OUTPUTLEN = 6.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'ERNAM'.
    WA_FIELDCAT-TABNAME = 'IT_VBAP'.
    WA_FIELDCAT-SELTEXT_L = 'NAME'.
    WA_FIELDCAT-COL_POS = 3.
    WA_FIELDCAT-OUTPUTLEN = 12.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'ERDAT'.
    WA_FIELDCAT-TABNAME = 'IT_VBAP'.
    WA_FIELDCAT-SELTEXT_L = 'DATE'.
    WA_FIELDCAT-COL_POS = 4.
    WA_FIELDCAT-OUTPUTLEN = 8.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT-FIELDNAME = 'MATNR'.
    WA_FIELDCAT-TABNAME = 'IT_VBAP'.
    WA_FIELDCAT-SELTEXT_L = 'MAT NO'.
    WA_FIELDCAT-COL_POS = 5.
    WA_FIELDCAT-OUTPUTLEN = 18.
    APPEND WA_FIELDCAT TO IT_FIELDCAT.
    CLEAR WA_FIELDCAT.
    WA_FIELDCAT1-FIELDNAME = 'MATNR'.
    WA_FIELDCAT1-TABNAME = 'IT_MARA'.
    WA_FIELDCAT1-SELTEXT_L = 'MAT NO'.
    WA_FIELDCAT1-COL_POS = 1.
    WA_FIELDCAT1-OUTPUTLEN = 18.
    APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    CLEAR WA_FIELDCAT1.
    WA_FIELDCAT1-FIELDNAME = 'ERNAM'.
    WA_FIELDCAT1-TABNAME = 'IT_MARA'.
    WA_FIELDCAT1-SELTEXT_L = 'NAME'.
    WA_FIELDCAT1-COL_POS = 2.
    WA_FIELDCAT1-OUTPUTLEN = 12.
    APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    CLEAR WA_FIELDCAT1.
    WA_FIELDCAT1-FIELDNAME = 'MATKL'.
    WA_FIELDCAT1-TABNAME = 'IT_MARA'.
    WA_FIELDCAT1-SELTEXT_L = 'MAT DESC'.
    WA_FIELDCAT1-COL_POS = 3.
    WA_FIELDCAT1-OUTPUTLEN = 9.
    APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    CLEAR WA_FIELDCAT1.
    WA_FIELDCAT1-FIELDNAME = 'MEINS'.
    WA_FIELDCAT1-TABNAME = 'IT_MARA'.
    WA_FIELDCAT1-SELTEXT_L = 'UNITS'.
    WA_FIELDCAT1-COL_POS = 4.
    WA_FIELDCAT1-OUTPUTLEN = 3.
    APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    CLEAR WA_FIELDCAT1.
    WA_FIELDCAT1-FIELDNAME = 'PSTAT'.
    WA_FIELDCAT1-TABNAME = 'IT_MARA'.
    WA_FIELDCAT1-SELTEXT_L = 'STATUS'.
    WA_FIELDCAT1-COL_POS = 5.
    WA_FIELDCAT1-OUTPUTLEN = 15.
    APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.
    CLEAR WA_FIELDCAT1.
    ENDFORM. " field_cat
    *& Form events
    text
    --> p1 text
    <-- p2 text
    FORM EVENTS .
    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_PAGE.
    XS_EVENT-FORM = 'XTOP_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.
    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.
    ENDFORM. " events
    *& Form XTOP_OF_PAGE
    text
    FORM XTOP_OF_PAGE.
    BREAK-POINT.
    WRITE: / 'X_TOP_OF_PAGE'.
    ENDFORM. "XTOP_OF_PAGE
    FORM XTOP_OF_LIST *
    FORM XTOP_OF_LIST.
    BREAK-POINT.
    WRITE: / 'X_TOP_OF_LIST'.
    ENDFORM. "XTOP_OF_LIST
    FORM XEND_OF_PAGE *
    FORM XEND_OF_PAGE.
    BREAK-POINT.
    WRITE: / 'X_END_OF_PAGE'.
    ENDFORM. "XEND_OF_PAGE
    FORM XEND_OF_LIST *
    FORM XEND_OF_LIST.
    BREAK-POINT.
    WRITE: / 'X_END_OF_LIST'.
    ENDFORM. "XEND_OF_LIST
    FORM YTOP_OF_PAGE.
    BREAK-POINT.
    WRITE: / 'Y_TOP_OF_PAGE'.
    ENDFORM. "YTOP_OF_PAGE
    FORM YTOP_OF_LIST *
    FORM YTOP_OF_LIST.
    BREAK-POINT.
    WRITE: / 'Y_TOP_OF_LIST'.
    ENDFORM. "YTOP_OF_LIST
    FORM YEND_OF_PAGE *
    FORM YEND_OF_PAGE.
    BREAK-POINT.
    WRITE: / 'Y_END_OF_PAGE'.
    ENDFORM. "YEND_OF_PAGE
    FORM YEND_OF_LIST *
    FORM YEND_OF_LIST.
    BREAK-POINT.
    WRITE: / 'Y_END_OF_LIST'.
    ENDFORM. "YEND_OF_LIST
    *& Form POP_VBAP
    text
    --> p1 text
    <-- p2 text
    FORM POP_VBAP .
    SELECT VBELN
    POSNR
    ERNAM
    ERDAT
    MATNR
    FROM VBAP
    INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
    WHERE VBELN IN S_VBELN.
    ENDFORM. " POP_VBAP
    *& Form POP_MARA
    text
    --> p1 text
    <-- p2 text
    FORM POP_MARA .
    LOOP AT IT_VBAP.
    SELECT SINGLE MATNR
    ERNAM
    MATKL
    MEINS
    PSTAT
    FROM MARA
    INTO CORRESPONDING FIELDS OF IT_MARA
    WHERE MATNR = IT_VBAP-MATNR.
    APPEND IT_MARA.
    ENDLOOP.
    ENDFORM. " POP_MARA
    *& Form BLOCK_LIST
    text
    --> p1 text
    <-- p2 text
    FORM BLOCK_LIST .
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
    I_CALLBACK_PROGRAM = REPID
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = 'user_command'.
    CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
    IS_LAYOUT = WA_LAYOUT
    IT_FIELDCAT = IT_FIELDCAT
    I_TABNAME = 'IT_VBAP'
    IT_EVENTS = GT_XEVENTS
    IT_SORT =
    I_TEXT = ' '
    TABLES
    T_OUTTAB = IT_VBAP
    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_MARA'
    IT_EVENTS = GT_YEVENTS
    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_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
    Reward if useful.

  • End-of-page in ALVs

    hi friends,
           Is end-of-page possible in ALV reports,If how it is? what's that parameter
    Thanks & Regards
    RK

    hi
    you have an event END_OF_PAGE.
    pass this event along with the form name into the parameter IT_EVENTS.
    and use your WRITE statement in the subroutine you specify for that event.
    WA_EVENTS-FORM = 'END_PAGE'.
    WA_EVENTS-NAME = 'END_OF_PAGE'.
    APPEND WA_EVENTS TO IT_EVENTS.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM             = sy-repid
       IT_FIELDCAT                    = it_fieldcat
       IT_EVENTS                      = it_events
      TABLES
        t_outtab                      = it_final
    form end_page.
    write:/ 'No. of records processed:', l_tabix.
    endform.
    heck this link.It can help you.
    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_events.htm
    Kindly reward points by clicking the star on the left of reply,if you find it as useful.
    Vasanth

  • End of page in ALV reports

    Hi,
          I am working on alv reports. I am unable work on end of page in this reports. Please if any body can help me out from this situation.
    Thanks & Regards,
    Praveen

    Hi,
    Perform following steps if you are using ALV FM.
    1. Build the events table
    DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE = 0
        IMPORTING
          ET_EVENTS   = RT_EVENTS.
      IF SY-SUBRC <> 0.
      ENDIF.
      READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE ALV_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO RT_EVENTS.
      ENDIF.
    2. Write a subroutine END_OF_PAGE
    FORM END_OF_PAGE.                            "#EC CALLED
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          I_LOGO             = SPACE
          IT_LIST_COMMENTARY = ALV_LIST_TOP_OF_PAGE.
      IF SY-SUBRC NE 0.
      ENDIF.
    ENDFORM. 
    3. Build the comments you want to write at the End of Page.
    4. Now call the ALV FM
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM = SY-REPID
          IS_LAYOUT          = ALV_LAYOUT
          IT_FIELDCAT        = ALV_FCAT[]
          I_SAVE             = 'X'
          IT_EVENTS          = ALV_EVENTS[]
        TABLES
          T_OUTTAB           = ITAB1
        EXCEPTIONS
          PROGRAM_ERROR      = 0
          OTHERS             = 0.
    Hope it helps.
    Regards,
    Shashank

Maybe you are looking for

  • How to access tables/views of an external database provider..

    After much trouble I finally managed to setup a second Database Provider that doesn't display the "0 out of 0 connections are good" error by filling in the "Configuration Class" field with "intradoc.server.DbProviderConfig". But now the problem is ac

  • When printing from v10.1.3 or v9 from OSX Lion get Adobe Reader quit unexpectedly

    When printing from v10.1.3 or v9 from OSX Lion get Adobe Reader quit unexpectedly Click on the print button get the Print screen Click Print then get the error Am able to print fine from other applications Have tried uninstalling and restalling Adobe

  • Lost Mode - useless when Location disabled, even online ?

       Hi,    My iPhone was stolen by a (not so close) friend !    I went last week to a party. Only close and casual friends. At some point we talked and compared some apps between our phones, I locked/unlocked mine several times, in front of the others

  • Mac doesn't pick up wifi connection immediately on lion

    if i am on my computer, on the internet and close or put my mac to sleep and come back a few minutes later it does not pick back up the wifi connection. i have to either wait a long time, and it works sometimes, or restart the computer completely. wh

  • Vista killed my ThinkVantage HELP

    I recently moved to Windows Vista, for personal reasons, and after it did a full installation, everything was working fine, until.........I realized my ThinkVantage Button, among all my function buttons no longer operate......what should I do?