ALV Grid Heading

Hi
I need to have two level of heading for my ALV grid. The first level will have two columns that is supposed to span for say 3 columns. The next header will have 6 columns headings for each of the six columns.
For example
     1-1-2004        |     1-1-2005
A     | B     |  C   | D    | E    | F    |
I hope i made my self clear.

Hi,
Check this link,
<u>http://www.sap-img.com/fu037.htm</u>
Kindly reward points if u find it useful.
Thanks,
Ruthra

Similar Messages

  • Page No in ALV GRID Header disply ?

    Hi,
    How to display the page No in ALV GRID Header display.
    Thanks & Regards,
    Amir.

    hai
    I think u can use this funtion... Using this funtion u can find som solution for ur problem
    *&      Form  BUILD_EVENTTAB
          text
         -->P_EVENTS[]  text                                             *
    form build_eventtab using p_events type slis_t_event.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = p_events.
      read table p_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move formname_top_of_page to ls_event-form.
        append ls_event to p_events.
      endif.
    endform.                               " BUILD_EVENTTAB
    *&      Form  BUILD_COMMENT
          text
         -->P_HEADING[]  text                                            *
    form build_comment using p_heading type slis_t_listheader.
      data: hline type slis_listheader,
            text(60) type c,
            test_date TYPE string,
           test_date1 TYPE string,
           sep(20) type c.
      clear: hline, text.
      hline-typ  = 'H'.
      write: text-101 to text+23.
      hline-info = text.
      append hline to p_heading.
      clear text.
      write: 'User: ' to text,
             sy-uname to text+6,
             'Date: ' to text+25,
             sy-datum to text+31,
             'Page: ' to text+50,
             sy-pagno to text+56.
      hline-info = text.
      append hline to p_heading.
    endform.                    " BUILD_COMMENT
          FORM TOP_OF_PAGE                                              *
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = heading.
    endform.
    regard
    nawa

  • Taking download into excel from ALV Grid - header is printing in two lines

    Hi All,
    I have a scenario where I am taking the download from ALV grid to an excel sheet. Now the header of the ALV (column names) is appearing in two lines in the downloaded excel sheet while items (records of the ALV table) are getting displayed in a single line.
    This download is taken from the standard download to local file (spreadsheet) button provided by SAP for ALVs.
    I am using function module "Reuse_alv_grid_display" for the purpose.
    Can somebody provide an idea how I can avoid the header printing in two lines and keep the length as it is.
    Thanks in Advance,
    Chandan

    Hi..
    1. Pass header name in internal table appned first line.
    2. after that pass u r data .
    3. Use  FM. WS_DOWNLOAD 
    Salil ......
    Edited by: salil chavan on Nov 26, 2008 11:07 AM

  • ALV Grid -- Heading in each and every page while printing

    Hello!!!!
    How to display heading in ALV Grid in each and every page while printing?
    Thanks in Advance!!!!!!

    Hi nitesh,
    <b>data: lt_list_commentary type slis_t_listheader.
    perform build_comment using
    lt_list_commentary.
    form build_comment using
    pt_list_commentary type slis_t_listheader.
    data: ls_line type slis_listheader.
    clear ls_line.
    ls_line-typ = 'H'.
    ls_line-info = 'SREEKANTH REDDY'.
    append ls_line to pt_list_commentary.
    clear ls_line.
    ls_line-typ = 'H'.
    ls_line-info = 'HEADER1'.
    append ls_line to pt_list_commentary.
    clear ls_line.
    ls_line-typ = 'H'.
    ls_line-info = 'HEADER2TEXT'.
    append ls_line to pt_list_commentary.
    clear ls_line.
    endform.
    </b>In Function module REUSE_ALV_COMMENTARY_WRITE , give the parameter as
    <b>it_list_commentary = lt_list_commentary </b>
    Here ls_line-typ = 'H'. you can use options like 'H' , 'A' , 'S'.

  • ALV GRID Header

    Hi..all.
    I have a question.
    Is there any method to make dual header?
    For example,
    table name 1
    table name 2
    fld1
    fld2
    fld3
    fld4
    fld1
    fld2
    fld3
    fld4
    record
    end of list.
    I found some materials and Dev.class slis but I couldn't find the method.
    Is this possible? If I can't do this, what I can use as an alternative.
    Ilook forward your answer.
    Thanks.

    Hi,
    In ALV Grid this is not possible but with ALV List this is possible as elaborated below.
    For displaying two headers in ALV, you have to use the following process...
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_bypassing_buffer     = c_x
          i_callback_program    = lv_repid
          is_layout                   = wa_layout
          it_fieldcat                  = it_fieldcat
          it_events                   = it_events
          i_save                      = c_a
        TABLES
          t_outtab                   = it_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.
    For setting layout use the following form -
    *&      Form  F_SET_LAYOUT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM f_set_layout .
      wa_layout-zebra             = c_x.
      wa_layout-colwidth_optimize = c_x.
    ENDFORM.                    " F_SET_LAYOUT
    Similarly for events use -
    *&      Form  F_CALL_EVENT
    *      Defining events which have to triggered
    *  -->  p1        text
    *  <--  p2        text
    FORM f_call_event .
      wa_events-name = slis_ev_top_of_page.
      wa_events-form   = c_top.                   
      APPEND wa_events TO it_events.
      CLEAR wa_events .
    ENDFORM.                    " F_CALL_EVENT
    where c_top is defined as -
    c_top                TYPE slis_formname    VALUE 'TOP_OF_PAGE'
    Also u have to define a form (mentioned below) with the same name which can be called from f_call_event form automaticaly...
    *&      Form  TOP_OF_PAGE
    *       Defining the column's main heading
    FORM top_of_page.
      FORMAT COLOR COL_HEADING.
      WRITE : / sy-uline(255).
      WRITE : / sy-vline,
                (10)c_space,
                sy-vline,
                (2) c_space,
                sy-vline,
                (8) c_space,
                sy-vline,
                (17)c_space,
                sy-vline,
                (18)c_space,
                sy-vline,
                (18)c_space,
                sy-vline,
                (26)c_space,
                sy-vline,
                (31)c_space,
                sy-vline,
                (12)c_space,
                sy-vline,
                (41)c_jan   CENTERED,
                sy-vline,
                (41)c_feb   CENTERED,
                sy-vline,
                (41)c_mar   CENTERED,
                sy-vline,
                (41)c_apr   CENTERED,
                sy-vline,
                (41)c_may   CENTERED,
                sy-vline,
                (41)c_jun   CENTERED,
                sy-vline.
      FORMAT COLOR OFF.
    ENDFORM.                    "top_of_page
    In this you can define the 1st column headings along with the position.
    This will help you add 2 headers to each column viz....
    1st Heading from the top of the page form
    and
    2nd heading from the field catalog you have defined.
    Let me know in case any further detail is needed.
    Thanks.

  • ALV Grid Header Problem.

    Hi All,
    I want to display the header of the ALV Grid as:
    Material                          111/11823
    Plant/Usage/Alt               2845/3/5
    Description                      ABI CAB
    Base Qty.                        23.000
    The values are to be taken from variables
    Please suggest how to do this.
    Thanks

    *& Report  ZDEMO_ALVGRID                                               *
    *& Example of a simple ALV Grid Report with grand total                *
    *& The basic requirement for this demo is to display a number of       *
    *& fields from the EKKO table.                                         *
    REPORT  zdemo_alvgrid                 .
    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.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    perform top-of-page.
    *&      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'.        "Display column total
      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_XEVENTS
                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             = 'ideas'.
    endform.

  • Export ALV Grid Header to spread sheet

    Hi,
       I created ALV report using OO ABAP where i splitted the container into 3 parts , one for header , one for Grid and the other for Footer. When i export it to a spred sheet , i could not able to get the header and footer into the Spread sheet. I want the header and the footer to be exported to the spred sheet. Can any one of you help me out in this.
    Thanks,
    Kishore.

    Use the events PRINT_TOP_OF_PAGE and PRINT_END_OF_PAGE for printing the Header and Footer.
    Sample routine for the method PRINT_TOP_OF_PAGE is given below:
      METHOD M_HANDLE_TOP_OF_PAGE.
    *Local variables declaration
        DATA:
         V_TEXT                 TYPE SDYDO_TEXT_ELEMENT,                                 " Text
          V_DATE                 TYPE CHAR10,                                             " Date
          V_TIME                 TYPE CHAR10,                                             " Time
          V_TEXT2                TYPE CHAR30.
    *To display Current Date
        WRITE SY-DATUM TO V_DATE.
        WRITE SY-UZEIT TO V_TIME.
        CONCATENATE 'Current Date :'(076)
                    V_DATE
                    V_TIME
               INTO V_TEXT2 SEPARATED BY SPACE.
        WRITE:/ V_TEXT2.
    *To print Report Date
        CLEAR: V_DATE, V_TEXT2.
        WRITE P_CURDT TO V_DATE.
        CONCATENATE 'Report Date :'(077)
                    V_DATE
               INTO V_TEXT2 SEPARATED BY SPACE.
        WRITE:/ V_TEXT2.
      ENDMETHOD.                                                                        " M_HANDLE_TOP_OF_PAGE
    If you are satisfied, please give points to my reply.
    Regards,
    Sumanth.

  • Error in ALV grid

    Hi ALV masters,
    Plz help me ..
    I have an ALV grid report where i have the data in my final table t_final.
    now i'm trying to populate the fieldcat using FM reuse_alv_fieldcatalog_merge but its not at all getting populated.
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          I_PROGRAM_NAME         = l_repid
          I_INTERNAL_TABNAME     = 'T_Final'
          I_INCLNAME             = l_repid
        CHANGING
          CT_FIELDCAT            = T_FIELDCAT[]
        EXCEPTIONS
          INCONSISTENT_INTERFACE = 1
          PROGRAM_ERROR          = 2
          OTHERS                 = 3.
    Please help me and if possibl try to send som sample code also.
    Thanks in advance..

    Hi Mukesh,
    this is my code.
    plz tell where i'm going rong..
    *& Report  ZMMR_CHANGES                                                *
    Title       : Material Master: Display Changes                       *
    Description : This ABAP report will collectively list all material   *
                  master changes to the fields specified in the selection*
                  criteria.                                              *
    Request No  : SRDK922644                                             *
    Author      : Praveen Reddy                                          *
    Created on  : 14-FEB-2007                                            *
    REPORT  ZMMR_CHANGES
            NO STANDARD PAGE HEADING
            message-id ZSPR.
    TYPE-POOLS : SLIS.
    TABLES : CDHDR ,           " Change document header
             CDPOS ,           " Change document item
             MARAV ,           " View Table for Logical DB MGM
             MARC  ,           " Plant Data for Material
             MVKE  .           " Sales Data for Material
    SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN BEGIN OF BLOCK GENERAL WITH FRAME TITLE TEXT-002.
    SELECT-OPTIONS :
             S_OBJCLS  FOR CDHDR-OBJECTCLAS           ,
             S_MATNR   FOR CDHDR-OBJECTID            ,
             S_WERKS   FOR MARC-WERKS                ,
             S_VKORG   FOR MVKE-VKORG                ,
             S_VTWEG   FOR MVKE-VTWEG                ,
             S_TABNAM  FOR CDPOS-TABNAME             ,
             S_FNAME   FOR CDPOS-FNAME               ,
             S_CHGIND  FOR CDPOS-CHNGIND             ,
             S_DATE    FOR CDHDR-UDATE               ,
             S_USER    FOR CDHDR-USERNAME            .
    SELECTION-SCREEN END OF BLOCK GENERAL.
    SELECTION-SCREEN END OF BLOCK A.
    *Data  : G_WERKS LIKE MARC-WERKS                 ,
           G_VKORG LIKE MVKE-VKORG                 ,
           G_VTWEG LIKE MVKE-VTWEG                 ,
           G_DESC  LIKE MARAV-MAKTX                .
    TYPES  : BEGIN           OF   TY_FOR_DISP        ,
             OBJCLASS        LIKE CDHDR-OBJECTCLAS   ,
             OBJID           LIKE CDHDR-OBJECTID     ,
             WERKS           LIKE MARC-WERKS           ,
             VKORG           LIKE MVKE-VKORG         ,
             VTWEG           LIKE MVKE-VTWEG         ,                
             DESC            LIKE MARAV-MAKTX        ,
             TABNAME         LIKE CDPOS-TABNAME      ,
             FNAME           LIKE CDPOS-FNAME        ,
             CHNGIND         LIKE CDPOS-CHNGIND      ,
             UDATE           LIKE CDHDR-UDATE        ,
             USERNAME        LIKE CDHDR-USERNAME     ,
             VALUE_OLD       LIKE CDPOS-VALUE_OLD    ,
             VALUE_NEW       LIKE CDPOS-VALUE_NEW    ,
             END             OF   TY_FOR_DISP        .
    TYPES  : BEGIN           OF   TY_CDHDR,
             OBJCLASS        LIKE CDHDR-OBJECTCLAS   ,
             OBJID           LIKE CDHDR-OBJECTID     ,
           CHNGIND         LIKE CDPOS-CHNGIND      ,
             CHANGENR        LIKE CDHDR-CHANGENR     ,
             UDATE           LIKE CDHDR-UDATE        ,
             USERNAME        LIKE CDHDR-USERNAME     ,
           VALUE_OLD       LIKE CDPOS-VALUE_OLD    ,
           VALUE_NEW       LIKE CDPOS-VALUE_NEW    ,
             END             OF   TY_CDHDR           .
    TYPES  : BEGIN           OF   TY_CDPOS,
             TABNAME         LIKE CDPOS-TABNAME      ,
             FNAME           LIKE CDPOS-FNAME        ,
             CHANGENR        LIKE CDHDR-CHANGENR     ,
             CHNGIND         LIKE CDPOS-CHNGIND      ,
             TABKEY          LIKE CDPOS-TABKEY       ,
             FIELDTEXT       LIKE DFIES-FIELDTEXT,
           UDATE           LIKE CDPOS-UDATE        ,
           USERNAME        LIKE CDPOS-USERNAME     ,
             VALUE_OLD       LIKE CDPOS-VALUE_OLD    ,
             VALUE_NEW       LIKE CDPOS-VALUE_NEW    ,
             END             OF   TY_CDPOS           .
    DATA   : T_FOR_DISP      TYPE STANDARD TABLE OF TY_FOR_DISP
                             WITH HEADER LINE        ,
             T_CDHDR         TYPE STANDARD TABLE OF TY_CDHDR
                             WITH HEADER LINE        ,
             T_CDPOS         TYPE STANDARD TABLE OF TY_CDPOS
                              WITH HEADER LINE       .
    DATA   : G_LANGU LIKE SY-LANGU,
             G_TABIX LIKE SY-TABIX,
             G_DATE  LIKE SY-DATUM.
    DATA   : G_WERKS LIKE MARC-WERKS  ,
             G_VKORG LIKE MVKE-VKORG  ,
             G_VTWEG LIKE MVKE-VTWEG  ,
             G_DESC  LIKE MARAV-MAKTX .
    *------ALV Grid Field Catalog Fields
    DATA: T_FIELDCAT   TYPE SLIS_T_FIELDCAT_ALV,
          T_FIELDCAT_H LIKE T_FIELDCAT WITH HEADER LINE.
    *------End
    CONSTANTS : C_MATERIAL(10)    VALUE 'MATERIAL'   ,
                C_OBJCLASS(10)    VALUE 'OBJCLASS'   ,
                C_OBJECTID(8)     VALUE 'OBJID'      ,
                C_WERKS(5)        VALUE 'WERKS'      ,
                C_VKORG(5)        VALUE 'VKORG'      ,
                C_VTWEG(5)        VALUE 'VTWEG'      ,                
                C_DESC(4)         VALUE 'DESC'       ,
                C_TABNAME(7)      VALUE 'TABNAME'    ,
                C_FNAME(5)        VALUE 'FNAME'      ,
                C_CHNGIND(7)      VALUE 'CHNGIND'    ,
                C_UDATE(5)        VALUE 'UDATE'      ,
                C_USERNAME(8)     VALUE 'USERNAME'   ,
                C_VALUE_OLD(9)    VALUE 'VALUE_OLD'  ,
                C_VALUE_NEW(9)    VALUE 'VALUE_NEW'  .
    *CONSTANTS: C_TABNAM_FOR_ALV_FM TYPE SLIS_TABNAME VALUE 'T_FOR_DISP'.
      INITIALIZATION   *****************
    INITIALIZATION.
      CLEAR:  T_CDHDR,
              T_CDPOS,
              T_FIELDCAT,
              T_FIELDCAT_H,
              T_FOR_DISP.
      REFRESH:T_CDHDR,
              T_CDPOS.
    CLEAR :  CDHDR,           " Change document header
              CDPOS.           " Change document items
    ****START-OF-SELECTION.
    START-OF-SELECTION.
    *-FETCHING DETAILS of Changes done
      PERFORM SUB_GET_DETAILS.
    Get the field description.
    PERFORM SUB_CALL_DDIF_FIELDINFO_GET.
    ****END-OF-SELECTION.
    END-OF-SELECTION.
    *--DISPLAYING DATA IN ALV
      PERFORM SUB_DISPLAY_ALV.
    *&      Form  SUB_GET_DETAILS
       This subrouting is used to get Final output which will shown in
       ALV Grid From Table CDPOS.
    FORM SUB_GET_DETAILS.
    SELECT OBJECTCLAS
            OBJECTID
            CHANGENR
            UDATE
            USERNAME
            INTO TABLE T_CDHDR
            FROM CDHDR
    WHERE  OBJECTCLAS IN S_OBJCLS
       AND  OBJECTID   IN S_MATNR
    AND  TABNAME    IN S_TABNAM
    AND  FNAME      IN S_FNAME
    AND  CHNGIND    IN S_CHGIND
    AND  UDATE      IN S_DATE
       AND  UDATE      IN S_DATE
       AND  USERNAME   IN S_USER  .
    IF SY-SUBRC <> 0.
    WRITE:/ TEXT-003.
    ENDIF.
      LOOP AT T_CDHDR.
        CLEAR T_FOR_DISP.
      IF T_CDHDR-OBJCLASS = C_MATERIAL.
       SELECT SINGLE MAKTX
       INTO G_DESC
       FROM MARAV
       WHERE MATNR = T_CDHDR-OBJID+0(18)
         AND SPRAS = SY-LANGU.
      ENDIF.
        T_FOR_DISP-DESC = G_DESC.
        CLEAR G_DESC.
       CLEAR T_FOR_DISP.
        T_FOR_DISP-OBJCLASS = T_CDHDR-OBJCLASS   .
        T_FOR_DISP-OBJID    = T_CDHDR-OBJID      .
        T_FOR_DISP-UDATE    = T_CDHDR-UDATE      .
        T_FOR_DISP-USERNAME = T_CDHDR-USERNAME   .
    *ENDIF.
       APPEND T_FOR_DISP.
    ENDLOOP.
    *ENDIF.
    SELECT
           TABNAME
           FNAME
           CHANGENR
           CHNGIND
           TABKEY
         UDATE
         USERNAME
           VALUE_OLD
           VALUE_NEW
           FROM CDPOS
           INTO TABLE T_CDPOS
           FOR ALL ENTRIES IN T_CDHDR
         CDHDRCHANGENR = CDPOSCHANGENR
    WHERE
           CHANGENR EQ T_CDHDR-CHANGENR
       AND TABNAME  IN S_TABNAM
       AND FNAME    IN S_FNAME
       AND CHNGIND  IN S_CHGIND         .
    AND UDATE    IN S_DATE.
    AND OBJECTID IN S_DATE
    AND USERNAME IN S_USER           .
    IF SY-SUBRC <> 0.
    WRITE:/ TEXT-003.
    ENDIF.
    *CLEAR T_FOR_DISP.
    READ TABLE T_CDPOS
          WITH KEY CHANGENR = T_CDHDR-CHANGENR.
    CLEAR : G_WERKS,
             G_VKORG,
             G_VTWEG.
           G_DESC .
    IF T_CDPOS-TABNAME  = 'MARC'.
                 G_WERKS = T_CDPOS-TABKEY+21(4).
    ENDIF.
          CHECK G_WERKS IN S_WERKS.
    IF SY-SUBRC = 0.
      T_FOR_DISP-WERKS = G_WERKS.
    ENDIF.
    IF T_CDPOS-TABNAME  = 'MVKE'.
          G_VKORG = T_CDPOS-TABKEY+21(4).
    ENDIF.
          CHECK G_VKORG IN S_VKORG.
        T_FOR_DISP-VKORG = G_VKORG.
          G_VTWEG = T_CDPOS-TABKEY+25(2).
          CHECK G_VTWEG IN S_VTWEG.
         T_FOR_DISP-VTWEG = G_VTWEG.
       T_FOR_DISP-TABNAME   = T_CDPOS-TABNAME.
       T_FOR_DISP-FNAME     = T_CDPOS-FNAME.
       T_FOR_DISP-CHNGIND   = T_CDPOS-CHNGIND.
       T_FOR_DISP-VALUE_OLD = T_CDPOS-VALUE_OLD.
       T_FOR_DISP-VALUE_NEW = T_CDPOS-VALUE_NEW.
      APPEND T_FOR_DISP.
    ENDLOOP.
    ENDLOOP.
    CLEAR T_FOR_DISP.
    ENDFORM.                    " SUB_GET_DETAILS
    *&      Form  SUB_DISPLAY_ALV
    This Subroutine is used to display data to ALV Grid from internal    *
    tables T_CDHDR & T_CDPOS. which is filled in subroutine              *
    SUB_GET_DETAILS                                                      *
    FORM SUB_DISPLAY_ALV .
    BREAK-POINT.
      DATA: l_layout     type slis_layout_alv,
            l_title      type lvc_title,
            l_repid      like sy-repid.
      l_repid = sy-repid.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
        EXPORTING
          I_PROGRAM_NAME         = l_repid
          I_INTERNAL_TABNAME     = 'TY_FOR_DISP'
          I_INCLNAME             = l_repid
        CHANGING
          CT_FIELDCAT            = T_FIELDCAT[]
        EXCEPTIONS
          INCONSISTENT_INTERFACE = 1
          PROGRAM_ERROR          = 2
          OTHERS                 = 3.
      IF SY-SUBRC <> 0.
      WRITE:/ 'ERROR IN CALLING ALV FM'.
      ENDIF.
    *----Change Field Heading We move All field data from T_FIELDCAT To
    *----another Internal table with header line namely T_FIELDCAT_H
    *CLEAR T_FIELDCAT_H[].
    REFRESH T_FIELDCAT_H[].
    BREAK-POINT.
      MOVE T_FIELDCAT[] TO T_FIELDCAT_H[].
    CLEAR G_TABIX.
    LOOP AT T_FIELDCAT_H.
    G_TABIX = SY-TABIX.
        CASE T_FIELDCAT_H-FIELDNAME.
          WHEN C_OBJCLASS.
            T_FIELDCAT_H-SELTEXT_L = TEXT-004.
            T_FIELDCAT_H-SELTEXT_M = TEXT-004.
            T_FIELDCAT_H-SELTEXT_S = TEXT-004.
           T_FIELDCAT_H-OUTPUTLEN = 15.
          WHEN C_OBJECTID.
            T_FIELDCAT_H-SELTEXT_L = TEXT-005.
            T_FIELDCAT_H-SELTEXT_M = TEXT-005.
            T_FIELDCAT_H-SELTEXT_S = TEXT-005.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_DESC.
            T_FIELDCAT_H-SELTEXT_L = TEXT-006.
            T_FIELDCAT_H-SELTEXT_M = TEXT-006.
            T_FIELDCAT_H-SELTEXT_S = TEXT-006.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_WERKS.
            T_FIELDCAT_H-SELTEXT_L = TEXT-007.
            T_FIELDCAT_H-SELTEXT_M = TEXT-007.
            T_FIELDCAT_H-SELTEXT_S = TEXT-007.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_VKORG.
            T_FIELDCAT_H-SELTEXT_L = TEXT-008.
            T_FIELDCAT_H-SELTEXT_M = TEXT-008.
            T_FIELDCAT_H-SELTEXT_S = TEXT-008.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_VTWEG.
            T_FIELDCAT_H-SELTEXT_L = TEXT-009.
            T_FIELDCAT_H-SELTEXT_M = TEXT-009.
            T_FIELDCAT_H-SELTEXT_S = TEXT-009.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_TABNAME.
            T_FIELDCAT_H-SELTEXT_L = TEXT-010.
            T_FIELDCAT_H-SELTEXT_M = TEXT-010.
            T_FIELDCAT_H-SELTEXT_S = TEXT-010.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_FNAME.
            T_FIELDCAT_H-SELTEXT_L = TEXT-011.
            T_FIELDCAT_H-SELTEXT_M = TEXT-011.
            T_FIELDCAT_H-SELTEXT_S = TEXT-011.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_CHNGIND.
            T_FIELDCAT_H-SELTEXT_L = TEXT-012.
            T_FIELDCAT_H-SELTEXT_M = TEXT-012.
            T_FIELDCAT_H-SELTEXT_S = TEXT-012.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_UDATE.
            T_FIELDCAT_H-SELTEXT_L = TEXT-013.
            T_FIELDCAT_H-SELTEXT_M = TEXT-013.
            T_FIELDCAT_H-SELTEXT_S = TEXT-013.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_USERNAME.
            T_FIELDCAT_H-SELTEXT_L = TEXT-014.
            T_FIELDCAT_H-SELTEXT_M = TEXT-014.
            T_FIELDCAT_H-SELTEXT_S = TEXT-014.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_VALUE_OLD.
            T_FIELDCAT_H-SELTEXT_L = TEXT-015.
            T_FIELDCAT_H-SELTEXT_M = TEXT-015.
            T_FIELDCAT_H-SELTEXT_S = TEXT-015.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN C_VALUE_NEW.
            T_FIELDCAT_H-SELTEXT_L = TEXT-016.
            T_FIELDCAT_H-SELTEXT_M = TEXT-016.
            T_FIELDCAT_H-SELTEXT_S = TEXT-016.
           T_FIELDCAT_H-OUTPUTLEN = 20.
          WHEN OTHERS.
        CONTINUE.
        ENDCASE.
        MODIFY T_FIELDCAT_H.
       CLEAR  T_FIELDCAT_H.
      ENDLOOP.
    *BREAK-POINT.
      MOVE T_FIELDCAT_H[] TO T_FIELDCAT[].
    *----End
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program       = l_repid
              i_callback_pf_status_set = 'SET_STATUS'
              i_callback_user_command  = 'USER_COMMAND'
               i_callback_top_of_page   = 'TOP_OF_PAGE'
               i_grid_title             = l_title
               is_layout                = l_layout
                 it_fieldcat              = t_fieldcat
               i_save                   = 'A'
           tables
                t_outtab                 = T_FOR_DISP[]
           exceptions
                program_error            = 1
                others                   = 2.
    IF SY-SUBRC <> 0.
       WRITE:/ TEXT-017.
    ENDIF.
    ENDFORM.                    " SUB_DISPLAY_ALV
    *&      Form  TOP_OF_PAGE
       This subrouting is used to show heading to ALV Grid. This
       subrouting is called from subrouting 'SUB_DISPLAY_ALV', Function
      'REUSE_ALV_GRID_DISPLAY' & export param 'i_callback_top_of_page'
    *Form TOP_OF_PAGE.
    DATA :  L_HEADER   TYPE SLIS_T_LISTHEADER,
             L_HEADER_H TYPE SLIS_LISTHEADER.
    DATA :   L_FROMDAT(10) TYPE C,
              L_TODATE(10)  TYPE C.
    *CONSTANTS : C_DOT(1) TYPE C     VALUE '.',
               C_L_HEADER_H_TYP(1) VALUE 'H'.   "---ALV Grid Header Type
    CLEAR : L_HEADER.
    **--To Manage Date Format
    CONCATENATE S_DATE-LOW+6(2)
                 C_DOT
                 S_DATE-LOW+4(2)
                 C_DOT
                 S_DATE-LOW+0(4)
            INTO L_FROMDAT.
    CONCATENATE S_DATE-HIGH+6(2)
                 C_DOT
                 S_DATE-HIGH+4(2)
                 C_DOT
                 S_DATE-HIGH+0(4)
            INTO L_TODATE.
    **---End
    IF L_TODATE <> '00.00.0000'.
       CONCATENATE 'Purchase Org:'(014)
                   S_VKORG-LOW
                   'PO changes from'(015)
                   L_FROMDAT
                   'To'(013)
                   L_TODATE
                   INTO L_HEADER_H-INFO SEPARATED BY SPACE.
    ELSE.
        G_DATE = SY-DATUM.
       CONCATENATE 'CHANGES: '
                    G_DATE
                   INTO L_HEADER_H-INFO SEPARATED BY SPACE.
    ENDIF.
    Main report header
    L_HEADER_H-TYP = C_L_HEADER_H_TYP.
    APPEND L_HEADER_H TO L_HEADER.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
         IT_LIST_COMMENTARY = L_HEADER
         I_LOGO             = ''.
    *ENDFORM.                    "TOP_OF_PAGE
    Plz look into this and suggest me ..thanks a lot.

  • Need to add Header  and footer in an alv grid display output.

    How can I add header and footer in an alv grid dispay output.
    For the grid display, I am using the function module "REUSE_ALV_GRID_DISPLAY".

    HI,
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                i_callback_html_end_of_list = 'END_OF_LIST_HTML'
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
    FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
      DATA: ls_text TYPE sdydo_text_element,
            l_grid     TYPE REF TO cl_gui_alv_grid,
            f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
      ls_text = 'Footer title'.
    adds and icon (red triangle)
      CALL METHOD end->add_icon
        EXPORTING
          sap_icon = 'IL'.
    adds test (via variable)
      CALL METHOD end->add_text
        EXPORTING
          text         = ls_text
          sap_emphasis = 'strong'.
    adds new line (start new line)
      CALL METHOD end->new_line.
    display text(bold)
      CALL METHOD end->add_text
        EXPORTING
          text         = 'Bold text'
          sap_emphasis = 'strong'.
    adds new line (start new line)
      CALL METHOD end->new_line.
    display text(normal)
      CALL METHOD end->add_text
        EXPORTING
          text         = 'Nor'.
    adds new line (start new line)
      CALL METHOD end->new_line.
    display text(bold)
      CALL METHOD end->add_text
        EXPORTING
          text         = 'Yellow '
          sap_emphasis = 'str'.
    adds and icon (yellow triangle)
      CALL METHOD end->add_icon
        EXPORTING
          sap_icon = 'IC''.
    display text(normal)
      CALL METHOD end->add_text
        EXPORTING
          text         = 'Mor'.
    *set height of this section
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
        IMPORTING
          e_grid = l_grid.
      CALL METHOD l_grid->parent->parent->(f)
        EXPORTING
          id     = 3
          height = 14.
    ENDFORM. "end_of_list_html.
    This will solve  it. Post if you need more help in this.
    Regards,
    Madhu.

  • Error whil adding Header to the ALV grid using OO

    Hi Guys,
                 I want to display the Header for the ALV grid using Splitter .
    when i am doing like that .I am getting  a screen on the top of that screen I am getting a EMPTY screen .I don't know why likat.
    What i need is just to display a Grid with header?Can anybody Please help me reagarding this problem.
    the Code is Below.
    *& Report  Z_TEST_PGM
    REPORT  Z_TEST_PGM NO STANDARD PAGE HEADING
                                      LINE-SIZE 120 MESSAGE-ID zotc.
    Tables : CKMLMV003 , CKMLMV001.
    TYPE-POOLS: slis.
    Types : Begin of t_CKMLMV003_out,
                 WERKS type CKMLMV003-WERKS,
                 MATNR type CKMLMV003-MATNR,
                 MISCH_VERH type CKMLMV003-MISCH_VERH,
                 KALNR_BAL type CKMLMV003-KALNR_BAL,
                 GJAHR type CKMLMV003-GJAHR,
                 PERIO type CKMLMV003-PERIO,
                 MGTYP type CKMLMV003-MGTYP,
            End of t_CKMLMV003_out,
            Begin of t_CKMLMV001_out,
                 MATNR type CKMLMV001-MATNR,
                 KALNR type CKMLMV001-KALNR,
                 LIFNR_ND type CKMLMV001-LIFNR_ND,
                 EKORG_ND type CKMLMV001-EKORG_ND,
            End of t_CKMLMV001_out,
            Begin of t_CKMLMV003_Temp,
                 MATNR type CKMLMV003-MATNR,
                 GJAHR type CKMLMV003-GJAHR,
                 PERIO type CKMLMV003-PERIO,
            End of t_CKMLMV003_Temp,
            Begin of t_Final_out,
                 MATNR type CKMLMV003-MATNR,
                 GJAHR type CKMLMV003-GJAHR,
                 PERIO type CKMLMV003-PERIO,
                 WERKS type CKMLMV003-WERKS,
                 LIFNR_ND1 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH1 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND2 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH2 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND3 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH3 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND4 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH4 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND5 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH5 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND6 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH6 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND7 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH7 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND8 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH8 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND9 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH9 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND10 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH10 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND11 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH11 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND12 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH12 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND13 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH13 type CKMLMV003-MISCH_VERH,
             End of t_Final_out,
           Begin of t_Final_out1,
                 MATNR type CKMLMV003-MATNR,
                 GJAHR type CKMLMV003-GJAHR,
                 PERIO type CKMLMV003-PERIO,
                 LIFNR_ND1 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH1 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND2 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH2 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND3 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH3 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND4 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH4 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND5 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH5 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND6 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH6 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND7 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH7 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND8 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH8 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND9 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH9 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND10 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH10 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND11 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH11 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND12 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH12 type CKMLMV003-MISCH_VERH,
                 LIFNR_ND13 type CKMLMV001-LIFNR_ND,
                 MISCH_VERH13 type CKMLMV003-MISCH_VERH,
             End of t_Final_out1.
                          Global Structures                              *
    Data : i_CKMLMV003_str   type   t_CKMLMV003_out,
           i_CKMLMV001_str   type   t_CKMLMV001_out,
           i_Final_str   type  t_Final_out,
           i_Final_str1   type  t_Final_out,
           i_CKMLMV003_Temp type   t_CKMLMV003_Temp.
                              Global Internal Tables                        *
    Data : i_CKMLMV003_out   type standard table of  t_CKMLMV003_out,
           i_CKMLMV001_out  type standard table of  t_CKMLMV001_out,
           i_Final_out   type standard table of  t_Final_out,
           i_Final_out1   type standard table of  t_Final_out.
    ALV Report Internal tables    *
    DATA : t_fieldcatalog TYPE slis_t_fieldcat_alv,
           s_fieldcatalog TYPE slis_fieldcat_alv,
           t_basic_fieldcatalog TYPE slis_t_fieldcat_alv,
           s_basic_fieldcatalog TYPE slis_fieldcat_alv,
           t_sort  TYPE slis_t_sortinfo_alv,
           v_repid TYPE sy-repid.
    *ALV Header declarations
    Data: t_header type slis_t_listheader,
          i_header_str type slis_listheader,
          i_line_event_str TYPE slis_alv_event,
          i_events TYPE slis_t_event,
          wa_layout  type slis_layout_alv.
    Data : grid1 type ref to cl_gui_alv_grid,
           g_custom_container1 type ref to cl_gui_custom_container,
           grid2 type ref to cl_gui_alv_grid,
           g_custom_container2 type ref to cl_gui_custom_container,
           i_FCAT TYPE  LVC_T_FCAT,
           i_FCAT_str type lvc_s_fcat,
    Structure  for layout
          i_layout_s   TYPE  lvc_s_layo,
           gt_final1 type table of  t_Final_out.
    DATA: CCCONTAINER1 TYPE SCRFNAME VALUE 'CCCONTAINER1',
          CCCONTAINER2 TYPE SCRFNAME VALUE 'CCCONTAINER2',
          G_PARENT_TOP TYPE REF TO CL_GUI_CONTAINER ,
          G_SPLITTER   TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
          G_DYNDOC_ID  TYPE REF TO CL_DD_DOCUMENT,
          G_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER.
                          Global Variables                              *
    Data :cnt(4) type n value '0',
          g_plant type CKMLMV003-WERKS ,
          g_QuanTStr type CKMLMV003-MGTYP ,
          g_PurchOrg type CKMLMV001-EKORG_ND,
          flag type n value '0',
          g_cnt6 type n value '0',
          g_cnt7 type n value '0',
          g_cnt8 type n value '0',
          g_cnt9 type n value '0',
          g_cnt10 type n value '0',
          g_cnt11 type n value '0',
          g_cnt12 type n value '0',
          g_cnt13 type n value '0'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-011.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) TEXT-006 for field s_matnr.
    Select-Options : S_MATNR for CKMLMV003-MATNR .
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) TEXT-007 for field S_WERKS.
    SELECT-OPTIONS:S_WERKS for CKMLMV003-WERKS Default '2003'.
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) TEXT-008 for field S_GJAHR.
    SELECT-OPTIONS:S_GJAHR for CKMLMv003-GJAHR default Sy-DATUM(4) .
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(20) TEXT-009 for field S_PERIO.
    SELECT-OPTIONS:S_PERIO for CKMLMV003-PERIO .
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN: BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(25) TEXT-010 for field P_MGTYP.
    Parameters : P_MGTYP type CKMLMV003-MGTYP .
    SELECTION-SCREEN: END OF LINE.
    SELECTION-SCREEN END OF BLOCK b1 .
    At Selection-Screen on s_matnr .
      Perform Validate_MatNumber.
    At Selection-Screen on s_werks .
      Perform Validate_CostingPlant.
    At Selection-Screen on s_GJAHR .
      Perform Validate_FiscalYear.
    At Selection-Screen on s_PERIO .
      Perform Validate_Period.
    At Selection-Screen on p_MGTYP .
      Perform Validate_QuantityStrType.
    *&      Form  Validate_MatNumber
          text
    Form Validate_MatNumber.
      DATA l_MATNR TYPE CKMLMV003-MATNR.
      IF NOT S_MATNR[] IS INITIAL .
        CLEAR L_MATNR.
        SELECT  single MATNR FROM CKMLMV003
          INTO l_MATNR
          WHERE MATNR = s_MATNR-LOW or MATNR = s_MATNR-HIGH.
       ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e999 WITH
                  'Enter a Valid Material Number'(001).
        ENDIF.
      ENDIF.
    ENDFORM.                    "Validate_MatNumber
    *&      Form  Validate_CostingPlant
          text
    Form Validate_CostingPlant.
      DATA l_werks TYPE CKMLMV003-WERKS.
      IF NOT S_WERKS[] IS INITIAL .
        CLEAR L_WERKS.
        SELECT single  WERKS FROM T001W
          INTO l_WERKS
          WHERE WERKS =  s_WERKS-low or  WERKS =  s_WERKS-high.
       ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e999 WITH
                  'Enter a Valid Costing Plant'(002).
        ENDIF.
      ENDIF.
    ENDFORM.                    "Validate_CostingPlant
    *&      Form  Validate_FiscalYear
          text
    Form Validate_FiscalYear.
      DATA l_GJAHR TYPE CKMLMV003-GJAHR.
      IF NOT S_GJAHR-low IS INITIAL or S_GJAHR-high IS INITIAL.
        CLEAR L_GJAHR.
       SELECT SINGLE GJAHR FROM CKMLMV003
         INTO l_GJAHR
         WHERE GJAHR LE sy-DATUM(4) .
       IF NOT S_GJAHR-low LE sy-DATUM(4) or S_GJAHR-high LE sy-DATUM(4).
         MESSAGE e999 WITH
                 'Enter a Valid Fiscal year'(003).
       ENDIF.
      ENDIF.
    ENDFORM.                    "Validate_FiscalYear
    *&      Form  Validate_Period
          text
    Form Validate_Period.
      DATA l_PERIO TYPE CKMLMV003-PERIO.
      IF NOT S_PERIO[] IS INITIAL .
        CLEAR L_PERIO.
        SELECT single PERIO FROM CKMLMV003
          INTO l_PERIO
          WHERE PERIO GE 1 and PERIO LE 12 .
       ENDSELECT.
        IF sy-subrc NE 0.
          MESSAGE e999 WITH
                  'Enter a Valid Period'(004).
        ENDIF.
      ENDIF.
    ENDFORM.                    "Validate_Period
    *&      Form  Validate_QuantityStrType
          text
    Form Validate_QuantityStrType.
      DATA l_MGTYP TYPE CKMLMV003-MGTYP.
      IF NOT p_MGTYP IS INITIAL.
        CLEAR L_MGTYP.
        SELECT SINGLE MGTYP FROM CKMLMV003
          INTO l_MGTYP
          WHERE MGTYP = p_MGTYP .
        IF sy-subrc NE 0.
          MESSAGE e999 WITH
                  'Enter a Valid Quantity Structure Type'(005).
        ENDIF.
      ENDIF.
    ENDFORM.                    "Validate_QuantityStrType
    INITIALIZATION of Fields
    Class LCL_EVENT_HANDLER DEFINITION.
      Public section.
        Methods:
        TOP_OF_PAGE for Event TOP_OF_PAGE OF CL_GUI_ALV_GRID
                                IMPORTING E_DYNDOC_ID.
    ENDCLASS.                    "LCL_EVENT_HANDLER DEFINITION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    METHOD TOP_OF_PAGE.
    Top-of-page event <br />
    PERFORM EVENT_TOP_OF_PAGE USING G_DYNDOC_ID.
    ENDMETHOD.                            "top_of_page
    ENDCLASS.       "LCL_EVENT_HANDLER IMPLEMENTATION
    Data : G_HANDLER TYPE REF TO LCL_EVENT_HANDLER.
    Initialization.
      v_repid = sy-repid.
    Start-of-Selection.
      Perform get_CKMLMV003.
      Perform get_CKMLMV001.
      Perform Get_Finaldata.
    Perform Layout_FieldCatalog.
      call screen '101'.
    Perform  ALVGrid_Final_Display.
    *&      Form  Layout_FieldCatalog
          text
    Form Layout_FieldCatalog.
      s_fieldcatalog-col_pos = 1.
      s_fieldcatalog-fieldname = 'MATNR'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-024.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 2.
      s_fieldcatalog-fieldname = 'GJAHR'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-012.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 3.
      s_fieldcatalog-fieldname = 'PERIO'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-013.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 4.
      s_fieldcatalog-fieldname = 'WERKS'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-025.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 5.
      s_fieldcatalog-fieldname = 'LIFNR_ND1'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-014.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 6.
      s_fieldcatalog-fieldname = 'MISCH_VERH1'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-015.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 7.
      s_fieldcatalog-fieldname = 'LIFNR_ND2'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-016.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 8.
      s_fieldcatalog-fieldname = 'MISCH_VERH2'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-017.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 9.
      s_fieldcatalog-fieldname = 'LIFNR_ND3'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-018.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 10.
      s_fieldcatalog-fieldname = 'MISCH_VERH3'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-019.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 11.
      s_fieldcatalog-fieldname = 'LIFNR_ND4'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-020.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 12.
      s_fieldcatalog-fieldname = 'MISCH_VERH4'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-021.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 13.
      s_fieldcatalog-fieldname = 'LIFNR_ND5'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-022.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      s_fieldcatalog-col_pos = 14.
      s_fieldcatalog-fieldname = 'MISCH_VERH5'.
      s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
      s_fieldcatalog-seltext_l = Text-023.
      append s_fieldcatalog to t_fieldcatalog.
      clear s_fieldcatalog.
      if g_cnt6 <> '0'.
        s_fieldcatalog-col_pos = 14.
        s_fieldcatalog-fieldname = 'LIFNR_ND6'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 15.
        s_fieldcatalog-fieldname = 'MISCH_VERH6'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt7 <> '0'.
        s_fieldcatalog-col_pos = 16.
        s_fieldcatalog-fieldname = 'LIFNR_ND7'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 17.
        s_fieldcatalog-fieldname = 'MISCH_VERH7'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt8 <> '0'.
        s_fieldcatalog-col_pos = 18.
        s_fieldcatalog-fieldname = 'LIFNR_ND8'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 19.
        s_fieldcatalog-fieldname = 'MISCH_VERH8'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt9 <> '0'.
        s_fieldcatalog-col_pos = 20.
        s_fieldcatalog-fieldname = 'LIFNR_ND9'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 21.
        s_fieldcatalog-fieldname = 'MISCH_VERH9'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt10 <> '0'.
        s_fieldcatalog-col_pos = 22.
        s_fieldcatalog-fieldname = 'LIFNR_ND10'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 23.
        s_fieldcatalog-fieldname = 'MISCH_VERH10'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt11 <> '0'.
        s_fieldcatalog-col_pos = 24.
        s_fieldcatalog-fieldname = 'LIFNR_ND11'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 25.
        s_fieldcatalog-fieldname = 'MISCH_VERH11'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt12 <> '0'.
        s_fieldcatalog-col_pos = 26.
        s_fieldcatalog-fieldname = 'LIFNR_ND12'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 27.
        s_fieldcatalog-fieldname = 'MISCH_VERH12'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
      if g_cnt13 <> '0'.
        s_fieldcatalog-col_pos = 29.
        s_fieldcatalog-fieldname = 'LIFNR_ND13'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-022.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
        s_fieldcatalog-col_pos = 30.
        s_fieldcatalog-fieldname = 'MISCH_VERH13'.
        s_fieldcatalog-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        s_fieldcatalog-seltext_l = Text-023.
        append s_fieldcatalog to t_fieldcatalog.
        clear s_fieldcatalog.
      ENDIF.
    ENDFORM.                    "Layout_FieldCatalog
    *&      Form  get_CKMLMV003
          text
    Form get_CKMLMV003.
      Select WERKS
             MATNR
             MISCH_VERH
             KALNR_BAL
             GJAHR
             PERIO
             MGTYP
             from CKMLMV003
             into table i_CKMLMV003_out
             Where ( MATNR in s_MATNR and
                     WERKS in s_WERKS and
                     GJAHR in s_GJAHR and
                     PERIO in s_PERIO and
                     MGTYP = p_MGTYP ).
      Sort i_CKMLMV003_out by MATNR  KALNR_BAL.
    ENDFORM.                    "get_CKMLMV003
    *&      Form  get_CKMLMV001
          text
    Form get_CKMLMV001.
      If Not i_CKMLMV003_out is Initial.
        Select MATNR
               KALNR
               LIFNR_ND
               EKORG_ND
               from CKMLMV001
               into Table i_CKMLMV001_out
               for all entries in i_CKMLMV003_out
               Where ( KALNR = i_CKMLMV003_out-KALNR_BAL
                      and WERKS = i_CKMLMV003_out-WERKS
                      and MATNR = i_CKMLMV003_out-MATNR ).
        sort i_CKMLMV001_out by MATNR  KALNR.
      ENDIF.
    ENDFORM.                    "get_CKMLMV001
    *&      Form  Get_Finaldata
          text
    Form Get_Finaldata.
      Loop at  i_CKMLMV001_out into i_CKMLMV001_str.
        Loop at  i_CKMLMV003_out into i_CKMLMV003_str.
          If ( i_CKMLMV001_str-KALNR = i_CKMLMV003_str-KALNR_BAL  and i_CKMLMV003_str-MATNR = i_CKMLMV001_str-MATNR  ) .
            If ( flag = 0 ).
              g_plant = i_CKMLMV003_str-WERKS.
              g_PurchOrg = i_CKMLMV001_str-EKORG_ND.
              g_quantstr = i_CKMLMV003_str-MGTYP.
              flag = 1.
            ENDIF.
            Move i_CKMLMV003_str-MATNR  to  i_Final_str-MATNR.
            Move i_CKMLMV003_str-WERKS  to  i_Final_str-WERKS.
            Move i_CKMLMV003_str-GJAHR  to  i_Final_str-GJAHR.
            Move i_CKMLMV003_str-PERIO  to  i_Final_str-PERIO.
            Move i_CKMLMV003_str-MISCH_VERH  to  i_Final_str-MISCH_VERH1.
            Move i_CKMLMV001_str-LIFNR_ND  to  i_Final_str-LIFNR_ND1.
           Move-Corresponding i_CKMLMV003_str to i_CKMLMV003_temp.
            Append i_Final_str to i_Final_out.
            Clear : i_CKMLMV003_str   .
          ENDIF.
        ENDLOOP.
        Clear : i_CKMLMV001_str ,  i_Final_str , i_CKMLMV003_temp.
      ENDLOOP.
      Sort i_Final_out by WERKS MATNR GJAHR  PERIO .
      Loop at i_Final_out into i_Final_str.
        if i_Final_str-MATNR = i_Final_str1-MATNR and i_Final_str-GJAHR = i_Final_str1-GJAHR and i_Final_str-PERIO = i_Final_str1-PERIO and i_Final_str-WERKS = i_Final_str1-WERKS.
          cnt = cnt + 1.
          Case cnt.
            When 2.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH2.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND2.
            When 3.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH3.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND3.
            When 4.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH4.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND4.
            When 5.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH5.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND5.
            When 6.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH6.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND6.
              g_cnt6 = 1.
            When 7.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH7.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND7.
              g_cnt7 = 1.
            When 8.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH8.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND8.
              g_cnt8 = 1.
            When 9.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH9.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND9.
              g_cnt9 = 1.
            When 10.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH10.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND10.
              g_cnt10 = 1.
            When 11.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH11.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND11.
              g_cnt11 = 1.
            When 12.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH12.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND12.
              g_cnt12 = 1.
            When 13.
              Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH13.
              Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND13.
              g_cnt13 = 1.
          ENDCASE.
        ELSE.
          if cnt GE 1 .
            append i_Final_str1 to i_Final_out1.
            Clear : i_Final_str1.
          ENDIF.
          Move-Corresponding i_Final_str to i_Final_str1.
          cnt = 0.
          cnt = cnt + 1.
        ENDIF.
        Clear :  i_Final_str.
      Endloop.
      append i_Final_str1 to i_Final_out1.
       if i_Final_str-MATNR = i_Final_str1-MATNR and i_Final_str-GJAHR = i_Final_str1-GJAHR and i_Final_str-PERIO = i_Final_str1-PERIO .
         cnt = cnt + 1.
         Case cnt.
           When 2.
             Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH2.
             Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND2.
           When 3.
             Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH3.
             Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND3.
           When 4.
             Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH4.
             Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND4.
           When 5.
             Move i_Final_str-MISCH_VERH1  to  i_Final_str1-MISCH_VERH5.
             Move i_Final_str-LIFNR_ND1  to  i_Final_str1-LIFNR_ND5.
         ENDCASE.
    **Move-Corresponding i_Final_str to i_Final_str1.
       ELSE.
         if cnt GE 1 .
           append i_Final_str1 to i_Final_out1.
           Clear : i_Final_str1.
         ENDIF.
         Move-Corresponding i_Final_str to i_Final_str1.
         cnt = 0.
         cnt = cnt + 1.
       ENDIF.
       Clear :  i_Final_str.
    Endloop.
    append i_Final_str1 to i_Final_out1.
    ENDFORM.                    "Get_Finaldata
    *&      Form  top_of_page
          text
    Form top_of_page.
      clear t_header.
      refresh t_header.
      i_header_str-typ = 'H'.
      I_header_Str-info = Text-035.
      append I_header_str to t_header.
      clear I_header_str.
    Date
      I_header_str-typ = 'S'.
      I_header_str-key = Text-036.
      CONCATENATE sy-datum+6(2) '.'
      sy-datum+4(2) '.'
      sy-datum(4) INTO I_header_str-info. "todays date
      append I_header_str to t_header.
      clear: I_header_str.
      i_header_str-typ = 'S'.
      I_header_Str-Key = 'Quantity Structure Type :'.
      I_header_Str-info = g_QuantStr.
      append I_header_str to t_header.
      clear I_header_str.
      i_header_str-typ = 'S'.
      I_header_Str-Key = 'Purchase Org :'.
      I_header_Str-info = g_PurchOrg.
      append I_header_str to t_header.
      clear I_header_str.
      i_header_str-typ = 'S'.
      I_header_Str-Key = 'Plant :'.
      I_header_Str-info = g_Plant.
      append I_header_str to t_header.
      clear I_header_str.
      CLEAR i_line_event_str.
      i_line_event_str-name = 'TOP_OF_PAGE'.
      APPEND i_line_event_str TO i_events.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = t_header.
    i_logo = 'Z_LOGO'.
    ENDFORM.                    "top_of_page
    *&      ALVGrid_Final_Display
    Form ALVGrid_Final_Display.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program     = v_repid
           i_DEFAULt              = c_valx
          i_callback_top_of_page = 'TOP_OF_PAGE'
           i_Save                 = c_valx
          it_fieldcat            = t_fieldcatalog
           it_sort                = t_sort
          it_events              = I_events
        TABLES
          t_outtab               = i_final_out1.
    ENDFORM.                    "ALVGrid_Final_Display
    *&      Form  ALVGRID_OO_Display
          text
    Form ALVGRID_OO_Display.
      i_FCAT_str-col_pos = 1.
      i_FCAT_str-fieldname = 'MATNR'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
    i_fcat_str-seltext = 'MATERIAL'.
      i_fcat_str-scrtext_m = Text-024.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 2.
      i_FCAT_str-fieldname = 'GJAHR'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_fcat_str-scrtext_m = Text-012.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 3.
      i_FCAT_str-fieldname = 'PERIO'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_fcat_str-scrtext_m = Text-013.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 4.
      i_FCAT_str-fieldname = 'WERKS'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-025.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 5.
      i_FCAT_str-fieldname = 'LIFNR_ND1'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_fcat_str-scrtext_m = Text-014.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 6.
      i_FCAT_str-fieldname = 'MISCH_VERH1'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-015.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 7.
      i_FCAT_str-fieldname = 'LIFNR_ND2'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-016.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 8.
      i_FCAT_str-fieldname = 'MISCH_VERH2'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-017.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 9.
      i_FCAT_str-fieldname = 'LIFNR_ND3'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-018.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 10.
      i_FCAT_str-fieldname = 'MISCH_VERH3'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-019.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 11.
      i_FCAT_str-fieldname = 'LIFNR_ND4'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-020.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 12.
      i_FCAT_str-fieldname = 'MISCH_VERH4'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-021.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 13.
      i_FCAT_str-fieldname = 'LIFNR_ND5'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-022.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
      i_FCAT_str-col_pos = 14.
      i_FCAT_str-fieldname = 'MISCH_VERH5'.
      i_FCAT_str-tabname = 'I_FINAL_OUT1'.
      i_FCAT_str-scrtext_m = Text-023.
      append i_FCAT_str to i_FCAT.
      clear i_FCAT_str.
       if g_cnt6 <> '0'.
        i_FCAT_str-col_pos = 15.
        i_FCAT_str-fieldname = 'LIFNR_ND6'.
        i_FCAT_str-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        i_FCAT_str-scrtext_m = Text-022.
        append i_FCAT_str to i_FCAT.
        clear i_FCAT_str.
        i_FCAT_str-col_pos = 16.
        i_FCAT_str-fieldname = 'MISCH_VERH6'.
        i_FCAT_str-tabname = 'I_FINAL_OUT1'.
       s_fieldcatalog-NO_OUT = 'X'.
        i_FCAT_str-scrtext_m = Text-023.
        append i_FCAT_str to i_FCAT.
        clear i_FCAT_str.
      ENDIF.
    *if  not grid1 is Initial.
    If sy-SUBRC = 0.
      Call Method grid1->set_table_for_first_display
        CHANGING
          it_outtab                     = i_final_out1[]
          it_fieldcatalog               = I_FCAT
        EXCEPTIONS
          Invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          Others                        = 4.
      If sy-subrc <> 0.
      ENDIF.
    CALL METHOD G_DYNDOC_ID->INITIALIZE_DOCUMENT
        EXPORTING
        BACKGROUND_COLOR = CL_DD_AREA=>COL_TEXTAREA.
    Processing events <br />
      CALL METHOD GRID1->LIST_PROCESSING_EVENTS
        EXPORTING
        I_EVENT_NAME = 'TOP_OF_PAGE'
        I_DYNDOC_ID = G_DYNDOC_ID.
    Call Method grid2->set_table_for_first_display
       CHANGING
         it_outtab                     = i_final_out1[]
         it_fieldcatalog               = I_FCAT
       EXCEPTIONS
         Invalid_parameter_combination = 1
         program_error                 = 2
         too_many_lines                = 3
         Others                        = 4.
    If sy-subrc <> 0.
    ENDIF.
       ENDIF.
      ENDIF.
    Endform.                    "ALVGRID_OO_Display
    Form EVENT_TOP_OF_PAGE using  DG_DYNDOC_ID
                          TYPE REF TO CL_DD_DOCUMENT.
    DATA : DL_TEXT(255) TYPE C.
      CALL METHOD DG_DYNDOC_ID->ADD_TEXT
        EXPORTING
        TEXT = 'Flight Details'
        SAP_STYLE = CL_DD_AREA=>HEADING
        SAP_FONTSIZE = CL_DD_AREA=>LARGE
        SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.
    Endform.
    *&      Module  STATUS_0101  OUTPUT
          text
    MODULE STATUS_0101 OUTPUT.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    SET PF-STATUS 'STATUS'.
    SET TITLEBAR 'TITLE'.
      Create Object G_DYNDOC_ID
            EXPORTING STYLE = 'ALV_GRID'.
      if g_custom_container1 is initial .
        create object g_custom_container1
            Exporting
                Container_name = CCCONTAINER1
            Exceptions
                cntl_error = 1
                cntl_system_error = 2
                create_error = 3
                lifetime_error = 4
                Others = 5.
       Create Object G_SPLITTER
              Exporting PARENT = g_custom_container1.
      CALL METHOD G_SPLITTER->GET_CONTAINER
        EXPORTING
        ROW = 1
        COLUMN = 1
        RECEIVING
        CONTAINER = G_PARENT_TOP.
    *Assigning the Part 2 to GRID
      CALL METHOD G_SPLITTER->GET_CONTAINER
        EXPORTING
        ROW = 2
        COLUMN = 1
        RECEIVING
        CONTAINER = g_parent_grid.

    Hi,
    Check if any event is triggered from the event handler class, upon selection.
    Usually, the events are handled on double click or on hotspot etc.
    Regards,
    Satish Kanteti

  • Header row in ALV Grid, based on the data in the table

    Hi All,
    I have a requirement wherein, based on the data in the table used for ALV, i need to add rows as sort of header in the ALV display.
    For e.g. my table has
    Appl No.  Item  Material  Desc.           Cost                 -> Column Heading
    1             10     400        Excavation    10.00               -> Data
    1             20     400        Footing         10.00
    2             10     400        Excavation    10.00
    2             20     400        Footing         10.00
    For every new Appl No., i need to add a row, or sort of header specifying the appl no. details. means
    Appl No.  Item  Material  Desc.           Cost
    Appli. No. 1                   Date: 01/01/1009                   -> my requirement
    1             10     400        Excavation    10.00
    1             20     400        Footing         10.00
    Appli. No. 2                   Date: 02/01/1009
    2             10     400        Excavation    10.00
    2             20     400        Footing         10.00
    Is this possible in ALV my any means? Currently i m using normal ALV Grid
    Regards,
    Janaki

    Hi..
         Try like this... I think u have Application number and date in ur table ... First get the total table data into internal table.. and to add the row
         *Declare the var1 as 0 and var2.
    loop at internal table
         *var1 = var1 +1
    when application number =var1
             concatenate : 'Appli. No.' (table- appli no field) 'Date:'  (table-date field) into var2.
    perform display(some name)
         *endloop.
         *form display...
              alv display part.. first give that var2 like eg.. wa_alv-field= 'var2'.
    end form.
        Hope this will help u .....
    Regards,
    Abaper

  • Check Box in Header of ALV GRID only............

    Hi Experts,
                   Can anyone help me out... in keeping the Check box at the Header Level.....
    This requirement is in the copy of the standard transaction "ME2N". 
    1. In ME2N when you click on the Chage Layout button of ALV grid
    and choose "Sorting" tabe.
    2. Add any 3 fields say 1. Vendor/Supply plant 2. Purchasing group and 3. Purchasing document in the Sort criteria and choose accending order radio button and check box in the sum .
    3. Now click on the Displayed Column tab and remove the above 3 fields from the Displayed colums and add it column set
    4. Now report shows the heirarchial one in the sorting manner.
    5. I want the Check Boxes at all levels both in the header and the item level.
    When I click on the Header level check box all the item level check box should get checked. When I add the check box in the field catalog I am able to see the check box in the item level only because only item level data appears in the internal table and Header level is displayed based on the ALV grid sorting option and that row records are unknown in the internal table.
    Is there some thing which I can do to get the check box at the header level retaining all the functionality of ME2N and ALV GRID.....
    It would be great help if some one solves me this issue... Points will be awarded.
    Br,
    Laxmi.

    Hi Bharath,
               Thanks for your response. Select ALL already existing... My requirement is not to get the whole report records selected at  particular level all items and header should get selected. Say for example  I have Vendor2 i.e,  vendor 1 and vendor2. So in the Vendor 1 i will have Purchasing group1 , Purchasing document 1 and say 10 items under Purchasing document. say same as like in Vendor2. So if Click on the Vendor1 all the sub items of it have to selected so that I can perform further action only for these items not for the enter items of the report.
    Br,
    Laxmi.

  • List header for alv grid using abap objects

    Hai all,
          I have displayed alv grid in container control using abap objects i.e. using method set_table_for_first_display.
    now i need to display list header for this alv grid.
    please help me how to create with a sample coding.
    Thanks and regards,
    Prabu S.

    Create a splitter using CL_GUI_EASY_SPLITTER_CONTAINER with a top and bottom half.  Put the alv grid in the bottom half.  Use cl_dd_document (documented in help.sap.com )  to build the header in the top half.  Use events on CL_GUI_ALV_GRID to handle the top-of-list printing.
    Or, if available, use CL_SALV_TABLE, and read the documentation on that.  When I needed a header for my report, that's what I did.  There's plenty of good documentation about if you'll search for it.
    matt

  • Header(S) and Item(S) in ALV Grid

    Hi All,
    Is it possible to have multiple headers and its corresponding item details in ALV Grid Display?
    The requirement is to convert the display of MB51 in ALV Grid. Is it possible in ALV Grid to have this kind of display?
    Best Regards,
    Kumar.

    Hi.
    When i execute MB51,it displays in a hierarchical ALV format.
    Just have a look on the following code to display the Item and
    Header details.
    TYPE-POOLS: SLIS.
    DATA: BEGIN OF I_VBAK OCCURS 0,
          VBELN LIKE VBAK-VBELN,
          ERNAM LIKE VBAK-ERNAM,
          ERDAT LIKE VBAK-ERDAT,
          AUDAT LIKE VBAK-AUDAT,
          VAR1,
          END OF I_VBAK.
    DATA: BEGIN OF I_VBAP OCCURS 0,
          VBELN LIKE VBAP-VBELN,
          POSNR LIKE VBAP-POSNR,
          MATNR LIKE VBAP-MATNR,
          CHARG LIKE VBAP-CHARG,
          END OF I_VBAP.
    DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          LAYOUT TYPE SLIS_LAYOUT_ALV,
          KEY TYPE SLIS_KEYINFO_ALV.
    DATA: IT_HEADER1 TYPE SLIS_T_LISTHEADER.
    DATA: WA_HEADER1 TYPE SLIS_LISTHEADER.
    DATA: IT_EVE1 TYPE SLIS_T_EVENT,
          WA_EVE1 TYPE SLIS_ALV_EVENT.
    SELECT VBELN ERNAM ERDAT AUDAT FROM VBAK
    INTO CORRESPONDING FIELDS OF TABLE I_VBAK
    UP TO 20 ROWS.
    SELECT VBELN POSNR MATNR CHARG FROM VBAP
    INTO CORRESPONDING FIELDS OF TABLE I_VBAP
    UP TO 20 ROWS.
    FLDCAT-FIELDNAME = 'VBELN'.
    FLDCAT-TABNAME = 'I_VBAK'.
    FLDCAT-REF_FIELDNAME = 'VBELN'.
    FLDCAT-REF_TABNAME = 'VBAK'.
    FLDCAT-SELTEXT_M = 'SALES DOC.'.
    FLDCAT-COL_POS = 0.
    FLDCAT-KEY = 'X'.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'ERNAM'.
    FLDCAT-TABNAME = 'I_VBAK'.
    FLDCAT-REF_FIELDNAME = 'ERNAM'.
    FLDCAT-REF_TABNAME = 'VBAK'.
    FLDCAT-SELTEXT_M = 'NAME OF PERSON'.
    FLDCAT-COL_POS = 1.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'ERDAT'.
    FLDCAT-TABNAME = 'I_VBAK'.
    FLDCAT-REF_FIELDNAME = 'ERDAT'.
    FLDCAT-REF_TABNAME = 'VBAK'.
    FLDCAT-SELTEXT_M = 'RECORD DATE'.
    FLDCAT-COL_POS = 2.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'AUDAT'.
    FLDCAT-TABNAME = 'I_VBAK'.
    FLDCAT-REF_FIELDNAME = 'AUDAT'.
    FLDCAT-REF_TABNAME = 'VBAK'.
    FLDCAT-SELTEXT_M = 'DOCUMENT DATE'.
    FLDCAT-COL_POS = 3.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'POSNR'.
    FLDCAT-TABNAME = 'I_VBAP'.
    FLDCAT-REF_FIELDNAME = 'POSNR'.
    FLDCAT-REF_TABNAME = 'VBAP'.
    FLDCAT-SELTEXT_M = 'SALES DOC ITEM'.
    FLDCAT-COL_POS = 4.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'MATNR'.
    FLDCAT-TABNAME = 'I_VBAP'.
    FLDCAT-REF_FIELDNAME = 'MATNR'.
    FLDCAT-REF_TABNAME = 'VBAP'.
    FLDCAT-SELTEXT_M = 'MATERIAL NO'.
    FLDCAT-COL_POS = 5.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    FLDCAT-FIELDNAME = 'CHARG'.
    FLDCAT-TABNAME = 'I_VBAP'.
    FLDCAT-REF_FIELDNAME = 'CHARG'.
    FLDCAT-REF_TABNAME = 'VBAP'.
    FLDCAT-SELTEXT_M = 'BATCH NUMBER'.
    FLDCAT-COL_POS = 6.
    APPEND FLDCAT.
    CLEAR FLDCAT.
    LAYOUT-EXPAND_FIELDNAME = 'VAR1'.
    KEY-HEADER01 = 'VBELN'.
    KEY-ITEM01 = 'VBELN'.
      CLEAR WA_EVE1.
      WA_EVE1-NAME = 'TOP_OF_PAGE'.
      WA_EVE1-FORM = 'TOP-OF-PAGE1'.
      APPEND WA_EVE1 TO IT_EVE1.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
       IS_LAYOUT                      = LAYOUT
       IT_FIELDCAT                    = FLDCAT[]
       IT_EVENTS                      = IT_EVE1[]
        I_TABNAME_HEADER               = 'I_VBAK'
        I_TABNAME_ITEM                 = 'I_VBAP'
        IS_KEYINFO                     = KEY
      TABLES
        T_OUTTAB_HEADER                = I_VBAK
        T_OUTTAB_ITEM                  = I_VBAP
    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.
    FORM TOP-OF-PAGE1.                                          "#EC CALLED
      WA_HEADER1-TYP = 'H'.
      WA_HEADER1-INFO = 'Hierarchical Display'.
      APPEND WA_HEADER1 TO IT_HEADER1.
      CLEAR WA_HEADER1.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_HEADER1[].
      REFRESH IT_HEADER1.
    ENDFORM.                    "TOP-OF-PAGE1
    Regards,
    Chandu.

  • Re: Increasing Column Header Length While Printing in ALV Grid

    Hi
    For some column headers in a report, the translations in Turkey are more than 40 characters, because of which while executing the report in TR language, the column header is getting truncated.
    So, I would like to know if we can increase the column header length while printing the ALV Grid(OO ALV) output.
    Or else, Is there any way where we can divide the column header into 2 rows.
    Please let me know.
    Thanks and Regards,
    Vishwa.

    Jose and Sivaram,
    Thanks for replying.
    The problem we have is with the column headers, there is a limit of 40 characters for the column header in ALV reports. So, increasing the outputlen also did not help.
    Regards,
    Vishwa.

Maybe you are looking for