Regarding Reuse_alv_commentary_write

Hi all,
I am having this much of requirement in out put as Top-Of-page.
I did this thing like below given code in classical report.
Now I am dling this in ALV.
Is it possible to get like this out put in ALV.
If, possible meand send the code for below requirement.
  ULINE.
  New-line no-scrolling.
  WRITE:/40 'PLANNER GROUP WISE TAT REPORT'.
  uline.
  New-line no-scrolling.
  WRITE:/39 'FROM:', S_ERDAT-LOW,
        58 'TO:' , S_ERDAT-HIGH.
  ULINE.
  New-line no-scrolling.
  WRITE:/ 'UNIT:',p_iwerk.
  uline.
  case 'X'.
      when p_ordno.
          New-line no-scrolling.
          write 45 'ALL ORDER NUMBERS.'.
      WHEN P_PEND.
        New-line no-scrolling.
        WRITE 45 'CURRENT.'.
      WHEN P_BFORD.
        New-line no-scrolling.
        WRITE 45 'BROUGHT FORWARD ORDERS.'.
      WHEN P_COMPL.
        New-line no-scrolling.
        WRITE 45 'COMPLETED.'.
  ENDCASE.
  ULINE.
Regards,
sarath

hi,
try this code,
*& Report  ZPROGRAM
REPORT  ZPROGRAM.
table declaration.
tables : zemployee, zdepartment,zproject.
*type-pools declaration
type-pools : slis , icon.
type specification
types : begin of ty_emp,
        empid type zempid,
        empname type zempname,
        empaddress type zempaddress,
        city type zcity,
        ponumber type zponumber,
        detid type zdeptid,
        end of ty_emp.
types : begin of ty_dept,
        detid type zdeptid,
        deptname type zdeptname,
        designation type zdesignation,
        projectid type zprojectid,
        end of ty_dept.
types : begin of ty_project,
        projectid type zprojectid,
        technology type ztechnology,
        clientname type zclientname,
        end of ty_project.
types : begin of ty_final,
        empid type zempid,
        empname type zempname,
        empaddress type zempaddress,
        city type zcity,
        ponumber type zponumber,
        detid type zdeptid,
        deptname type zdeptname,
        designation type zdesignation,
        projectid type zprojectid,
        technology type ztechnology,
        clientname type zclientname,
       average type p decimals 2,
        end of ty_final.
table type specification.
types : tt_emp type standard table of ty_emp,
        tt_dept type standard table of ty_dept,
        tt_project type standard table of ty_project,
        tt_final type standard table of ty_final.
work area creation.
data : wa_emp type ty_emp,
       wa_dept type ty_dept,
       wa_project type ty_project,
       wa_final type ty_final.
internal table declaration
data : itab_emp type tt_emp,
        itab_dept type tt_dept,
        itab_project type tt_project,
        itab_final type tt_final.
layout declaration
  data : gd_layout type slis_layout_alv.
assigning current program name.
  data : gd_repid like sy-repid.
         gd_repid = sy-repid.
fieldcatalog declaration.
  data : d_fieldcat type slis_t_fieldcat_alv,
         d_fieldcat_wa type slis_fieldcat_alv.
header declaration.
  data : t_header type slis_t_listheader,
         wa_header type slis_listheader,
         linecount(10) type c,
         line(10) type c.
selection-screen.
selection-screen : begin of block blk1 with frame title text-001.
select-options : s_empid for zemployee-empid.
parameters : p_dname like zdepartment-deptname.
parameters : p_proid like zproject-projectid.
selection-screen : begin of line.
parameters : p_rad1 radiobutton group r1.
selection-screen comment 3(10) text-002.
parameters : p_rad2 radiobutton group r1.
selection-screen comment 16(10) text-003.
selection-screen : end of line.
parameters : chk1 as checkbox.
selection-screen : end of block blk1.
end of selection screen.
start of selection.
select empid empname empaddress city ponumber detid from zemployee into corresponding fields of table itab_emp where empid in s_empid.
if not itab_emp is initial.
select detid deptname designation projectid from zdepartment into corresponding fields of table itab_dept for all entries in itab_emp where detid = itab_emp-detid .
if not itab_dept is initial.
select projectid technology clientname from zproject into corresponding fields of table itab_project for all entries in itab_dept where projectid = itab_dept-projectid.
endif.
endif.
*end of selection.
populating data into itab_final from itab_emp.
loop at itab_emp into wa_emp.
wa_final-empid = wa_emp-empid.
wa_final-empname = wa_emp-empname.
wa_final-empaddress = wa_emp-empaddress.
wa_final-ponumber = wa_emp-ponumber.
wa_final-city = wa_emp-city.
wa_final-detid = wa_emp-detid.
append wa_final to itab_final.
clear wa_final.
endloop.
*populating data into itab_final from itab_dept and itab_project
loop at itab_final into wa_final.
read table itab_dept into wa_dept with key detid = wa_final-detid.
if sy-subrc = 0.
wa_final-deptname = wa_dept-deptname.
wa_final-designation = wa_dept-designation.
wa_final-projectid = wa_dept-projectid.
modify itab_final from wa_final transporting deptname designation projectid .
endif.
read table itab_project into wa_project with key projectid = wa_final-projectid.
if sy-subrc = 0.
wa_final-technology = wa_project-technology.
wa_final-clientname = wa_project-clientname.
modify itab_final from wa_final transporting technology clientname.
endif.
endloop.
if p_rad1 = 'X' or chk1 = 'X'.
d_fieldcat_wa-fieldname = 'EMPID'.
d_fieldcat_wa-seltext_l = 'Employee Id'.
d_fieldcat_wa-emphasize = 'X'.
d_fieldcat_wa-col_pos = 1.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'EMPNAME'.
d_fieldcat_wa-seltext_l = 'Employee Name'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 2.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'EMPADDRESS'.
d_fieldcat_wa-seltext_l = 'Employee Address'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 3.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'CITY'.
d_fieldcat_wa-seltext_l = 'City'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 4.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'PONUMBER'.
d_fieldcat_wa-seltext_l = 'Postal Number'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 5.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'DETID'.
d_fieldcat_wa-seltext_l = 'Department Id'.
d_fieldcat_wa-emphasize = 'X'.
d_fieldcat_wa-col_pos = 6.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'DEPTNAME'.
d_fieldcat_wa-seltext_l = 'Department Name'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 7.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'DESIGNATION'.
d_fieldcat_wa-seltext_l = 'Designation'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 8.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'PROJECTID'.
d_fieldcat_wa-seltext_l = 'Project Id'.
d_fieldcat_wa-emphasize = 'X'.
d_fieldcat_wa-col_pos = 9.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'TECHNOLOGY'.
d_fieldcat_wa-seltext_l = 'technology'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 10.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'CLIENTNAME'.
d_fieldcat_wa-seltext_l = 'Client Name'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 11.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
endif.
if p_rad2 = 'X' or chk1 = 'X'.
refresh itab_emp.
d_fieldcat_wa-fieldname = 'DETID'.
d_fieldcat_wa-seltext_l = 'Department Id'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 6.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'DEPTNAME'.
d_fieldcat_wa-seltext_l = 'Department Name'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 7.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'DESIGNATION'.
d_fieldcat_wa-seltext_l = 'Designation'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 8.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'PROJECTID'.
d_fieldcat_wa-seltext_l = 'Project Id'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 9.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'TECHNOLOGY'.
d_fieldcat_wa-seltext_l = 'technology'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 10.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
d_fieldcat_wa-fieldname = 'CLIENTNAME'.
d_fieldcat_wa-seltext_l = 'Client Name'.
d_fieldcat_wa-emphasize = 'C710'.
d_fieldcat_wa-col_pos = 11.
append d_fieldcat_wa to d_fieldcat.
clear d_fieldcat_wa.
endif.
Grid display function module
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
   I_INTERFACE_CHECK                 = ' '
   I_BYPASSING_BUFFER                = ' '
   I_BUFFER_ACTIVE                   = ' '
    I_CALLBACK_PROGRAM                = gd_repid
    I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
   I_CALLBACK_USER_COMMAND           = ' '
    I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE '
   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
   I_CALLBACK_HTML_END_OF_LIST       = ' '
   I_STRUCTURE_NAME                  =
   I_BACKGROUND_ID                   = ' '
    I_GRID_TITLE                      = 'EMPLOYEE DETAILS'
   I_GRID_SETTINGS                   =
    IS_LAYOUT                         = gd_layout
    IT_FIELDCAT                       = d_fieldcat
   IT_EXCLUDING                      =
   IT_SPECIAL_GROUPS                 =
   IT_SORT                           =
   IT_FILTER                         =
   IS_SEL_HIDE                       =
   I_DEFAULT                         = 'X'
   I_SAVE                            = ' '
   IS_VARIANT                        =
   IT_EVENTS                         =
   IT_EVENT_EXIT                     =
   IS_PRINT                          =
   IS_REPREP_ID                      =
   I_SCREEN_START_COLUMN             = 0
   I_SCREEN_START_LINE               = 0
   I_SCREEN_END_COLUMN               = 0
   I_SCREEN_END_LINE                 = 0
   I_HTML_HEIGHT_TOP                 = 0
   I_HTML_HEIGHT_END                 = 0
   IT_ALV_GRAPHICS                   =
   IT_HYPERLINK                      =
   IT_ADD_FIELDCAT                   =
   IT_EXCEPT_QINFO                   =
   IR_SALV_FULLSCREEN_ADAPTER        =
IMPORTING
   E_EXIT_CAUSED_BY_CALLER           =
   ES_EXIT_CAUSED_BY_USER            =
   TABLES
     T_OUTTAB                          = itab_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.
set pf_status for creating client specified icons.
form set_pf_status using rt_extab type slis_t_extab.
set pf-status 'NEWSTATUS'.
endform.
populating data into header using top_of_page
form top_of_page.
wa_header-typ = 'H'.
wa_header-info = 'ALV REPORT'.
append wa_header to t_header.
clear wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Date :'.
Concatenate sy-datum+6(2) '.'
             sy-datum+4(2) '.'
             sy-datum(4) into wa_header-info.
  append wa_header to t_header.
  clear wa_header.
  wa_header-typ = 'S'.
wa_header-key = 'Time :'.
Concatenate sy-Uzeit(2) '.'
             sy-datum+2(2) '.'
             sy-datum+4(2) into wa_header-info.
  append wa_header to t_header.
  clear wa_header.
  describe table itab_final lines line.
  wa_header-typ = 'A'.
  linecount = line.
  Concatenate 'Total number of records :' linecount into wa_header-info separated by space.
  append wa_header to t_header.
  clear wa_header.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       = t_header
     I_LOGO                   = 'VMCADMIN'
    I_END_OF_LIST_GRID       =
    I_ALV_FORM               =
  endform.
*designing layout.
  form gd_layout.
  gd_layout-zebra = 'X'.
  gd_layout-edit = 'X'.
  gd_layout-no_hotspot = ''.
  gd_layout-no_colhead = ''.
  gd_layout-colwidth_optimize = 'X'.
  endform.
REward if useful.

Similar Messages

  • Regarding REUSE_ALV_COMMENTARY_WRITE FM

    Hi Friends
    can you please send me the sample code with paramers usage of
    REUSE_ALV_COMMENTARY_WRITE function module in 4.0B version

    hi
    *& Report  ZALVLOGO
    REPORT  ZALVLOGO.
    TYPE-POOLS : slis.
    *ALV Formatting tables /structures
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: gt_events TYPE slis_t_event.
    DATA: gs_layout TYPE slis_layout_alv.
    DATA: gt_page TYPE slis_t_listheader.
    DATA: gs_page TYPE slis_listheader.
    DATA: v_repid LIKE sy-repid.
    *ALV Formatting work area
    DATA: w_fieldcat TYPE slis_fieldcat_alv.
    DATA: w_events TYPE slis_alv_event.
    DATA: gt_bsid TYPE TABLE OF bsid WITH HEADER LINE.
    INITIALIZATION.
    PERFORM build_events.
    PERFORM build_page_header.
    START-OF-SELECTION.
    *perform build_comment. "top_of_page - in initialization at present
    SELECT * FROM bsid INTO TABLE gt_bsid UP TO 10 ROWS.
    *perform populate_for_fm using '1' '3' 'BUKRS' '8' 'GT_BSID' 'Whee'.
    *USING = Row, Column, Field name, display length, table name, heading
    *OR
    PERFORM build_fieldcat.
    gs_layout-zebra = 'X'.
    *top of page event does not work without I_callback_program
    v_repid = sy-repid.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    i_callback_program = v_repid
    i_structure_name = 'BSID'
    i_background_id = 'ALV_BACKGROUND'
    i_grid_title = 'This is the grid title'
    I_GRID_SETTINGS =
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    it_events = gt_events[]
    TABLES
    t_outtab = gt_bsid.
    Form..............: populate_for_fm
    Description.......: Populates fields for function module used in ALV
    FORM populate_for_fm USING p_row
    p_col
    p_fieldname
    p_len
    p_table
    p_desc.
    w_fieldcat-row_pos = p_row. "Row Position
    w_fieldcat-col_pos = p_col. "Column Position
    w_fieldcat-fieldname = p_fieldname. "Field name
    w_fieldcat-outputlen = p_len. "Column Lenth
    w_fieldcat-tabname = p_table. "Table name
    w_fieldcat-reptext_ddic = p_desc. "Field Description
    w_fieldcat-input = '1'.
    APPEND w_fieldcat TO gt_fieldcat.
    CLEAR w_fieldcat.
    ENDFORM. " populate_for_fm
    *& Form build_events
    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_user_command
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE slis_ev_user_command TO ls_event-form.
    APPEND ls_event TO gt_events.
    ENDIF.
    READ TABLE gt_events
    WITH KEY name = slis_ev_top_of_page
    INTO ls_event.
    IF sy-subrc = 0.
    MOVE slis_ev_top_of_page TO ls_event-form.
    APPEND ls_event TO gt_events.
    ENDIF.
    ENDFORM. " build_events
    *& Form USER_COMMAND
    When user command is called it uses 2 parameters. The itab
    passed to the ALV is in whatever order it currently is on screen.
    Therefore, you can read table itab index rs_selfield-tabindex to get
    all data from the table. You can also check r_ucomm and code
    accordingly.
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    READ TABLE gt_bsid INDEX rs_selfield-tabindex.
    error checking etc.
    SET PARAMETER ID 'KUN' FIELD gt_bsid-kunnr.
    CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
    ENDFORM. "user_command
    *& Form top_of_page
    Your own company logo can go here if it has been saved (OAOR)
    If the logo is larger than the size of the headings in gt_page,
    the window will not show full logo and will have a scroll bar. Thus,
    it is a good idea to have a standard ALV header if you are going to
    use logos in your top of page.
    FORM top_of_page.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
    it_list_commentary = gt_page
    i_logo = 'ENJOYSAP_LOGO'.
    ENDFORM. "top_of_page
    *& Form build_fieldcat
    *Many and varied fields are available here. Have a look at documentation
    *for FM REUSE_ALV_LIST_DISPLAY and REUSE_ALV_FIELDCATALOG_MERGE
    FORM build_fieldcat.
    w_fieldcat-fieldname = 'BUDAT'.
    w_fieldcat-seltext_m = 'Dte pst'.
    w_fieldcat-ddictxt(1) = 'M'.
    w_fieldcat-edit = 'x'.
    Can change the position of fields if you do not want them in order
    of the DDIC or itab
    w_fieldcat-row_pos = '1'.
    w_fieldcat-col_pos = '10'.
    APPEND w_fieldcat TO gt_fieldcat.
    CLEAR w_fieldcat.
    ENDFORM. " build_fieldcat
    *& Form build_page_header
    gt_page is used in top of page (ALV subroutine - NOT event)
    *H = Header, S = Selection, A = Action
    FORM build_page_header.
    For Headers, Key is not printed and is irrelevant. Will not cause
    a syntax error, but is not used.
    gs_page-typ = 'H'.
    gs_page-info = 'Header 1'.
    APPEND gs_page TO gt_page.
    gs_page-typ = 'H'.
    gs_page-info = 'Header 2'.
    APPEND gs_page TO gt_page.
    For Selections, the Key is printed (bold). It can be anything up to 20
    bytes. It gets printed in order of code here, not by key value.
    gs_page-typ = 'S'.
    gs_page-key = 'And the winner is:'.
    gs_page-info = 'Selection 1'.
    APPEND gs_page TO gt_page.
    gs_page-typ = 'S'.
    gs_page-key = 'Runner up:'.
    gs_page-info = 'Selection 2'.
    APPEND gs_page TO gt_page.
    For Action, Key is also irrelevant.
    gs_page-typ = 'A'.
    gs_page-info = 'Action goes here'.
    APPEND gs_page TO gt_page.
    ENDFORM. " build_page_header
    reward if u find useful
    regards
    Nagesh.Paruchuri

  • Regarding putting trafic lights in alv report

    Hi frnds,
                     I need to add Traffic lites to my program can any one help me how to do that.
    Below i m providing my code.
    <code>
    *ztest_alv
    *& Report  ZSAMPLEALV3                                                 *
    REPORT  ZSAMPLEALV3
            MESSAGE-ID Z00.
    TABLE DECLARATIONS
    TABLES : EKKO.        "Purchasing Document Header
    CONSTANTS DECLARATIONS
    CONSTANTS : C_EBELN(5) VALUE 'EBELN'.
    DATA DECLARATIONS
    DATA : V_FLAG,        "For Select Status
           V_DATA(50).    "To Store Data
    TYPE DECLARATIONS FOR ALV                                            *
    TYPE-POOLS : SLIS.
    *Type Declarations for Field Catalog for Basic List
    DATA : I_FLDCAT_HEAD  TYPE SLIS_T_FIELDCAT_ALV,
           WA_FLDCAT_HEAD TYPE SLIS_FIELDCAT_ALV.
    *Type Declarations for Field Catalog for Secondary List
    DATA : I_FLDCAT_ITEM  TYPE SLIS_T_FIELDCAT_ALV,
           WA_FLDCAT_ITEM TYPE SLIS_FIELDCAT_ALV.
    *Type Declarations for Displaying Images on Basic Grid
    DATA : I_COMMENT  TYPE SLIS_T_LISTHEADER,
           WA_COMMENT TYPE SLIS_LISTHEADER.
    *Type Declarations for Displaying Images on Secondary Grid
    DATA : I_COMMENT_SEC  TYPE SLIS_T_LISTHEADER,
           WA_COMMENT_SEC TYPE SLIS_LISTHEADER.
    *Type Declarations for ALV Events for Basic Grid
    DATA : I_EVENTS TYPE SLIS_T_EVENT,
           WA_EVENT LIKE LINE OF I_EVENTS.
    *Type Declarations for ALV Events for Secondary Grid
    DATA : I_EVENTS_SEC TYPE SLIS_T_EVENT,
           WA_EVENT_SEC LIKE LINE OF I_EVENTS.
    *Type Declarations for Layout Design
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    *Type Declarations for Linking the fields
    DATA : WA_KEYINFO TYPE SLIS_KEYINFO_ALV.
    Type declarations for coloring field
    DATA : wa_color type LVC_S_SCOL.
    DATA: IT_COLOR TYPE TABLE OF LVC_S_SCOL.
    INTERNAL TABLE DECLARATIONS
    *--Internal Table for Basic List
    DATA : BEGIN OF IT_FINAL_BAS OCCURS 0,
             EBELN LIKE EKKO-EBELN,        "Purchasing Document Number
             BUKRS LIKE EKKO-BUKRS,        "Company Code
             AEDAT LIKE EKKO-AEDAT,        "Date on which the record was created
             EKORG LIKE EKKO-EKORG,        "Purchasing Organization
             EKGRP LIKE EKKO-EKGRP,        "Purchasing group
             COLOR(3) ,                     "For applying color
           END OF IT_FINAL_BAS.
    *--Internal Table for Secondary List
    DATA : BEGIN OF IT_FINAL_SEC OCCURS 0,
             EBELN LIKE EKPO-EBELN,        "Purchasing Document Number
             MATNR LIKE EKPO-MATNR,        "Material Number
             TXZ01 LIKE EKPO-TXZ01,        "Material Desc
             WERKS LIKE EKPO-WERKS,        "Plant
             LGORT LIKE EKPO-LGORT,        "Location
             MATKL LIKE EKPO-MATKL,        "Material Group
             MENGE LIKE EKPO-MENGE,        "Purchase order quantity
             MEINS LIKE EKPO-MEINS,        "Order unit
             NETPR LIKE EKPO-NETPR,        "Net price in purchasing document (in document currency)
             NETWR LIKE EKPO-NETWR,        "Net order value in PO currency
             DUMMY LIKE ICON-ID,           "For placing Icon
             COLOR(3) ,                     "For applying color
           END OF IT_FINAL_SEC.
    *--Internal Table for Secondary List with selected records
    DATA : BEGIN OF I_ITEM_DISPLAY OCCURS 0,
             EBELN LIKE EKPO-EBELN,        "Purchasing Document Number
             MATNR LIKE EKPO-MATNR,        "Material Number
             TXZ01 LIKE EKPO-TXZ01,        "Material Desc
             WERKS LIKE EKPO-WERKS,        "Plant
             LGORT LIKE EKPO-LGORT,        "Location
             MATKL LIKE EKPO-MATKL,        "Material Group
             MENGE LIKE EKPO-MENGE,        "Purchase order quantity
             MEINS LIKE EKPO-MEINS,        "Order unit
             NETPR LIKE EKPO-NETPR,        "Net price in purchasing document (in document currency)
             NETWR LIKE EKPO-NETWR,        "Net order value in PO currency
             DUMMY LIKE ICON-ID,           "For placing Icon
             COLOR(3) ,                     "For applying color
           END OF I_ITEM_DISPLAY.
    SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.
    SELECT-OPTIONS: S_EBELN FOR EKKO-EBELN.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
    SELECTION-SCREEN : BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TEXT-003.
    PARAMETERS: P_DISP RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN : BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TEXT-005.
    PARAMETERS: P_UPD RADIOBUTTON GROUP RAD1.
    SELECTION-SCREEN : END OF LINE.
    SELECTION-SCREEN END OF BLOCK B2.
    Event : INITIALIZATION
    INITIALIZATION.
      MOVE 'Developed by'(001) TO V_DATA.
    Event : AT SELECTION SCREEN
    AT SELECTION-SCREEN.
      PERFORM VALIDATE_EBELN.
    Event : START-OF-SELECTION
    START-OF-SELECTION.
    *--Getting the Data
      PERFORM GET_DATA.
    *--Generating the Field catalog for basic and secondary grid
      PERFORM GET_FLDCAT.
    *--Generating the Layout for basic and secondary grid
      PERFORM GET_LAYOUT.
    *--Generating the key infor to link Basic grid to Secondary grid
      PERFORM GET_KEYINFO.
    *--Generating the Events for Basic and Secondary Grid
      PERFORM GET_EVENTS.
    *--Displaying data only
      IF P_DISP = 'X'.
    PERFORM DISPLAY_DATA.
    ELSE .
    PERFORM UPDATE_DATA.
    ENDIF.
    Event : END-OF-SELECTION
    END-OF-SELECTION.
    *&      Form  DISPLAY_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_DATA .
    IF V_FLAG EQ 'X'.
    *--Generating Basic List
        PERFORM DISP_BASIC_LIST.
    ELSE.
    IF SY-SUBRC NE 0.
        MESSAGE I010 WITH 'No Data Found To Display'(002).
      ENDIF.
    ENDFORM.                    " DISPLAY_DATA
         SUB-ROUTINES
    *&      Form  VALIDATE_EBELN
          Validating the PO No
    FORM VALIDATE_EBELN .
      SELECT EBELN
      UP TO 1 ROWS
      INTO (EKKO-EBELN)
      FROM EKKO
      WHERE EBELN IN S_EBELN.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        MESSAGE I010 WITH 'Invalid PO No'(003) S_EBELN-LOW 'To'(004) S_EBELN-HIGH.
      ENDIF.
    ENDFORM.                    " VALIDATE_EBELN
    *&      Form  GET_DATA
          Getting Basic List and Secondary List Data
    FORM GET_DATA .
    *--Getting Basic List Data
      SELECT EBELN                  "PO No
             BUKRS                  "Company Code
             AEDAT                  "Creation Date
             EKORG                  "Purch Org
             EKGRP                  "Purch Group
       INTO TABLE IT_FINAL_BAS
       FROM EKKO
       WHERE EBELN IN S_EBELN.
    *--Getting Secondary List Data
      IF SY-SUBRC EQ 0.
        SELECT EBELN                "PO No
               MATNR                "Material No
               TXZ01                "Material Desc
               WERKS                "Plant
               LGORT                "Location
               MATKL                "Material Group
               MENGE                "PO Qty
               MEINS                "Unit
               NETPR                "Net Price
               NETWR                "Net Value
          INTO TABLE IT_FINAL_SEC
          FROM EKPO
          WHERE EBELN IN S_EBELN.
      ENDIF.
    IF SY-SUBRC EQ 0.
       V_FLAG = 'X'.
    ELSE.
       V_FLAG = SPACE.
    ENDIF.
    ENDFORM.                    " GET_DATA
    *&      Form  GET_FLDCAT
          Generating the Field Catalog
    FORM GET_FLDCAT .
    *--Generating the Field Catalog for Basic List
    WA_FLDCAT_HEAD-REPTEXT_DDIC = 'Status'.
    WA_FLDCAT_HEAD-FIELDNAME = 'LIGHT'.
    WA_FLDCAT_HEAD-COL_POS = '1'.
    WA_FLDCAT_HEAD-JUST = 'C'.
    WA_FLDCAT_HEAD-OUTPUTLEN = '4'.
    WA_FLDCAT_HEAD-ICON           = 'X'.
    APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
    CLEAR WA_FLDCAT_HEAD .
      WA_FLDCAT_HEAD-FIELDNAME = 'EBELN'.
      WA_FLDCAT_HEAD-COL_POS = '2'.
      WA_FLDCAT_HEAD-JUST = 'C'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '12'.
      WA_FLDCAT_HEAD-SELTEXT_M  = 'PO Number'(006).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      WA_FLDCAT_HEAD-REF_TABNAME = ' '.
      WA_FLDCAT_HEAD-HOTSPOT = 'X'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      CLEAR WA_FLDCAT_HEAD .
      WA_FLDCAT_HEAD-FIELDNAME = 'BUKRS'(007).
      WA_FLDCAT_HEAD-COL_POS = '3'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '12'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'Company Code'(008).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'AEDAT'(009).
      WA_FLDCAT_HEAD-COL_POS = '4'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '10'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Date'(010).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'EKORG'(011).
      WA_FLDCAT_HEAD-COL_POS = '5'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '6'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Org'(012).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      WA_FLDCAT_HEAD-EDIT = 'X'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
      WA_FLDCAT_HEAD-FIELDNAME = 'EKGRP'(013).
      WA_FLDCAT_HEAD-COL_POS = '6'.
      WA_FLDCAT_HEAD-OUTPUTLEN = '8'.
      WA_FLDCAT_HEAD-SELTEXT_M = 'PO Group'(014).
      WA_FLDCAT_HEAD-DDICTXT = 'M'.
      WA_FLDCAT_HEAD-DO_SUM = 'X'.
      APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.
    *--Generating the Field Catalog for secondary List
      WA_FLDCAT_ITEM-FIELDNAME = 'EBELN'.
      WA_FLDCAT_ITEM-COL_POS = '1'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '12'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'PO Number'(006).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
    WA_FLDCAT_ITEM-REF_TABNAME = ' '.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MATNR'(015).
      WA_FLDCAT_ITEM-COL_POS = '2'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '18'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Item Number'(016).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
    WA_FLDCAT_ITEM-REF_TABNAME = ' '.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'TXZ01'(017).
      WA_FLDCAT_ITEM-COL_POS = '3'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '40'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Item Desc'(018).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'WERKS'(019).
      WA_FLDCAT_ITEM-COL_POS = '4'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '6'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Plant'(020).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'LGORT'(021).
      WA_FLDCAT_ITEM-COL_POS = '5'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '9'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Location'(022).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MATKL'(023).
      WA_FLDCAT_ITEM-COL_POS = '6'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '10'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Mat Group'(024).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MENGE'(025).
      WA_FLDCAT_ITEM-COL_POS = '7'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '17'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'PO Qty'(026).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'MEINS'(027).
      WA_FLDCAT_ITEM-COL_POS = '8'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '3'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Unit'(028).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'NETPR'(029).
      WA_FLDCAT_ITEM-COL_POS = '9'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '14'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Net Price'(037).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'NETWR'(030).
      WA_FLDCAT_ITEM-COL_POS = '10'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '16'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Net Value'(031).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
      WA_FLDCAT_ITEM-FIELDNAME = 'DUMMY'(038).
      WA_FLDCAT_ITEM-COL_POS = '11'.
      WA_FLDCAT_ITEM-JUST = 'C'.
      WA_FLDCAT_ITEM-OUTPUTLEN = '3'.
      WA_FLDCAT_ITEM-SELTEXT_M  = 'Status'(039).
      WA_FLDCAT_ITEM-DDICTXT = 'M'.
      WA_FLDCAT_ITEM-ICON = 'X'.
      APPEND WA_FLDCAT_ITEM TO I_FLDCAT_ITEM.
    ENDFORM.                    " GET_FLDCAT
    *&      Form  DISP_BASIC_LIST
          Generating the Basic List
    FORM DISP_BASIC_LIST .
    **--Applying the color to record in Basic List
        SORT IT_FINAL_BAS BY BUKRS.
         LOOP AT IT_FINAL_BAS.
            IF IT_FINAL_BAS-BUKRS LE '1000'.
              IT_FINAL_BAS-COLOR = 'C21'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '1000' AND IT_FINAL_BAS-BUKRS LE '2000'.
              IT_FINAL_BAS-COLOR = 'C41'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '2000' AND IT_FINAL_BAS-BUKRS LE '3000'.
              IT_FINAL_BAS-COLOR = 'C71'.
            ELSEIF IT_FINAL_BAS-BUKRS GT '3000'.
              IT_FINAL_BAS-COLOR = 'C51'.
            ELSE.
              IT_FINAL_BAS-COLOR = 'C61'.
            ENDIF.
              MODIFY IT_FINAL_BAS INDEX SY-TABIX.
           ENDLOOP.
    *--Generating the Grid output
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
        I_INTERFACE_CHECK                 = ' '
        I_BYPASSING_BUFFER                = ' '
        I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                = 'ZTEST_ALV'
        I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = ' '
        I_CALLBACK_TOP_OF_PAGE            = ' '
        I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
        I_CALLBACK_HTML_END_OF_LIST       = ' '
        I_STRUCTURE_NAME                  =
          I_BACKGROUND_ID                   = 'PLAIN_BACKGROUND'
        I_GRID_TITLE                      =
        I_GRID_SETTINGS                   =
          IS_LAYOUT                         = WA_LAYOUT
          IT_FIELDCAT                       = I_FLDCAT_HEAD
        IT_EXCLUDING                      =
        IT_SPECIAL_GROUPS                 =
        IT_SORT                           =
        IT_FILTER                         =
        IS_SEL_HIDE                       =
        I_DEFAULT                         = 'X'
        I_SAVE                            = ' '
        IS_VARIANT                        =
          IT_EVENTS                         = I_EVENTS
        IT_EVENT_EXIT                     =
        IS_PRINT                          =
        IS_REPREP_ID                      =
        I_SCREEN_START_COLUMN             = 0
        I_SCREEN_START_LINE               = 0
        I_SCREEN_END_COLUMN               = 0
        I_SCREEN_END_LINE                 = 0
        IT_ALV_GRAPHICS                   =
        IT_HYPERLINK                      =
        IT_ADD_FIELDCAT                   =
        IT_EXCEPT_QINFO                   =
        I_HTML_HEIGHT_TOP                 =
        I_HTML_HEIGHT_END                 =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           =
        ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = IT_FINAL_BAS
       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.                    " DISP_BASIC_LIST
    *&      Form  GET_EVENTS
          Getting the ALV Events
    FORM GET_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = I_EVENTS
       EXCEPTIONS
         LIST_TYPE_WRONG       = 1
         OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *--Calling the User Defined sub-routines for ALV Events
      IF NOT I_EVENTS[] IS INITIAL.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND_HEADER'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
       READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
       WA_EVENT-FORM = 'FRM_TOP_OF_PAGE'.
       MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'END_OF_LIST'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND_FOOTER'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
        READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
        WA_EVENT-FORM = 'GENERATE_USERCOMMAND3'.
        MODIFY I_EVENTS FROM WA_EVENT INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " GET_EVENTS
    *&      Form  GENERATE_USERCOMMAND_HEADER
          Displaying Header-Text and Logo on Grid
    FORM GENERATE_USERCOMMAND_HEADER.
      CLEAR I_COMMENT[].
      WA_COMMENT-TYP = 'H'.
      WA_COMMENT-INFO = 'General Purchase Order Info'(032).
      APPEND WA_COMMENT TO I_COMMENT.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = I_COMMENT
          I_LOGO             = 'ENJOYSAP_LOGO'.
        I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND
    *FORM FRM_TOP_OF_PAGE.
    write :/ text-005 intensified on.
    write :/ text-006 , sy-sysid,14 sy-mandt.
    write :/ text-007 , sy-uname.
    write :/ text-008 , sy-datum.
    write :/ text-009 , sy-uzeit.
    skip.
    *ENDFORM.
    *&      Form  GENERATE_USERCOMMAND_FOOTER
          Displaying Footer-Text
    FORM GENERATE_USERCOMMAND_FOOTER .
      CLEAR I_COMMENT[].
      WA_COMMENT-TYP = 'S'.
      WA_COMMENT-KEY = V_DATA.
      WA_COMMENT-INFO = 'kaka'(033).
      APPEND WA_COMMENT TO I_COMMENT.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = I_COMMENT
         I_LOGO                   = ''
          I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_FOOTER
    *&      Form  GENERATE_USERCOMMAND3
          Getting the F-Code and Calling Secondary List
    -->  P_UCOMM        LIKE SY-UCOMM
    -->  P_SELFIELD     TYPE SLIS_SELFIELD
    FORM GENERATE_USERCOMMAND3 USING P_UCOMM LIKE SY-UCOMM
                                     P_SELFIELD TYPE SLIS_SELFIELD.
       CASE P_UCOMM.
        WHEN '&IC1'.   "DOUBLE CLICK Func-Code
          READ TABLE IT_FINAL_BAS INDEX P_SELFIELD-TABINDEX.
          REFRESH I_ITEM_DISPLAY.
    *--Applying the color to record in Secondary List
          LOOP AT IT_FINAL_SEC WHERE EBELN = IT_FINAL_BAS-EBELN.
            IF IT_FINAL_SEC-NETPR EQ 0.
              IT_FINAL_SEC-DUMMY = '@0A@'.
              IT_FINAL_SEC-COLOR = 'C61'.
            ELSEIF IT_FINAL_SEC-NETPR GT 0 AND IT_FINAL_SEC-NETPR LE 200.
              IT_FINAL_SEC-DUMMY = '@09@'.
              IT_FINAL_SEC-COLOR = 'C41'.
            ELSEIF IT_FINAL_SEC-NETPR GT 200 AND IT_FINAL_SEC-NETPR LE 1000.
              IT_FINAL_SEC-DUMMY = '@08@'.
              IT_FINAL_SEC-COLOR = 'C71'.
            ELSEIF IT_FINAL_SEC-NETPR GT 1000.
              IT_FINAL_SEC-DUMMY = '@6P@'.
              IT_FINAL_SEC-COLOR = 'C51'.
            ENDIF.
              MODIFY IT_FINAL_SEC INDEX SY-TABIX.
            MOVE-CORRESPONDING IT_FINAL_SEC TO I_ITEM_DISPLAY.
            APPEND I_ITEM_DISPLAY.
            CLEAR I_ITEM_DISPLAY.
          ENDLOOP.
    *--Getting the ALV Events of Secondary List
          PERFORM GET_EVENTS_SEC.
    *--Generating the ALV Secondary Grid output
          CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
            I_INTERFACE_CHECK              = ' '
            I_BYPASSING_BUFFER             =
            I_BUFFER_ACTIVE                = ' '
              I_CALLBACK_PROGRAM             = 'ZTEST'
            I_CALLBACK_PF_STATUS_SET       = ' '
            I_CALLBACK_USER_COMMAND        = ' '
            I_STRUCTURE_NAME               =
              I_BACKGROUND_ID                = 'PLAIN_BACKGROUND'
              IS_LAYOUT                      = WA_LAYOUT
              IT_FIELDCAT                    = I_FLDCAT_ITEM
            IT_EXCLUDING                   =
            IT_SPECIAL_GROUPS              =
            IT_SORT                        =
            IT_FILTER                      =
            IS_SEL_HIDE                    =
            I_DEFAULT                      = 'X'
            I_SAVE                         = ' '
            IS_VARIANT                     =
              IT_EVENTS                      = I_EVENTS_SEC
            IT_EVENT_EXIT                  =
            IS_PRINT                       =
            IS_REPREP_ID                   =
            I_SCREEN_START_COLUMN          = 0
            I_SCREEN_START_LINE            = 0
            I_SCREEN_END_COLUMN            = 0
            I_SCREEN_END_LINE              = 0
          IMPORTING
            E_EXIT_CAUSED_BY_CALLER        =
            ES_EXIT_CAUSED_BY_USER         =
            TABLES
              T_OUTTAB                       = I_ITEM_DISPLAY
            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.
      ENDCASE.
    ENDFORM.                    " GENERATE_USERCOMMAND3
    *&      Form  GET_LAYOUT
          Generating the Layout
    FORM GET_LAYOUT .
      WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.           "OPTIMIZING FIELD WIDTH
      WA_LAYOUT-ZEBRA = 'X'.                       "PUTTING ZEBRA COLORS
      WA_LAYOUT-INFO_FIELDNAME = 'COLOR'(034).     "APPLYING COLORS TO ROWS
    ENDFORM.                    " GET_LAYOUT
    *&      Form  GET_KEYINFO
          Getting Key info
    FORM GET_KEYINFO .
    *--Linking the Basic List to Secondary List
      WA_KEYINFO-HEADER01 = C_EBELN.
      WA_KEYINFO-ITEM01 = C_EBELN.
    ENDFORM.                    " GET_KEYINFO
    *&      Form  GET_EVENTS_SEC
          Getting Secondary List Events
    FORM GET_EVENTS_SEC .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
      EXPORTING
        I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = I_EVENTS_SEC
       EXCEPTIONS
         LIST_TYPE_WRONG       = 1
         OTHERS                = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *--Calling user-defined sub-routines for Secondary List
      IF NOT I_EVENTS_SEC[] IS INITIAL.
        READ TABLE I_EVENTS_SEC INTO WA_EVENT_SEC WITH KEY NAME = 'TOP_OF_PAGE'.
        WA_EVENT_SEC-FORM = 'GENERATE_USERCOMMAND_H_SEC'.
        MODIFY I_EVENTS_SEC FROM WA_EVENT_SEC INDEX SY-TABIX.
        READ TABLE I_EVENTS_SEC INTO WA_EVENT_SEC WITH KEY NAME = 'END_OF_LIST'.
        WA_EVENT_SEC-FORM = 'GENERATE_USERCOMMAND_F_SEC'.
        MODIFY I_EVENTS_SEC FROM WA_EVENT_SEC INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " GET_EVENTS_SEC
    *&      Form  GENERATE_USERCOMMAND_H_SEC
       Displaying Header-Text and Logo on Grid For Secondary List
    FORM GENERATE_USERCOMMAND_H_SEC.
      CLEAR I_COMMENT_SEC[].
      WA_COMMENT_SEC-TYP = 'H'.
      WA_COMMENT_SEC-INFO = 'Purchase Order Info'(035).
      APPEND WA_COMMENT_SEC TO I_COMMENT_SEC.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = I_COMMENT_SEC
          I_LOGO             = 'ENJOYSAP_LOGO'.
        I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_H_SEC
    *&      Form  GENERATE_USERCOMMAND_F_SEC
          Displaying Footer-Text for Secondary List
    FORM GENERATE_USERCOMMAND_F_SEC.
      CLEAR I_COMMENT_SEC[].
      WA_COMMENT_SEC-TYP = 'S'.
      WA_COMMENT_SEC-KEY = V_DATA.
      WA_COMMENT_SEC-INFO = 'kak1'(036).
      APPEND WA_COMMENT_SEC TO I_COMMENT_SEC.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = I_COMMENT_SEC
         I_LOGO                   = ''
          I_END_OF_LIST_GRID       = 'X'.
    ENDFORM.                    " GENERATE_USERCOMMAND_F_SEC
    *&      Form  UPDATE_DATA
          text
    -->  p1        text
    <--  p2        text
    *form UPDATE_DATA .
    *CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                = ' '
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      = I_GRID_TITLE
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
      IS_LAYOUT                         = IS_LAYOUT
      IT_FIELDCAT                       = IT_FIELDCAT
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
      IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
      IT_EVENTS                         = IT_EVENTS
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
    TABLES
       t_outtab                          = t_outtab
    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.                    " UPDATE_DATA
    </code>
    regards,
    sanjay

    Hi,
    Please refer to the code below:
    REPORT ALV_LIGHTS.* Published at SAPTechnical.COMTYPES: BEGIN OF ty_alv,
            lights(1) TYPE c, "Exception, Holding the value of the lights
            text(20) TYPE c,  "some text
           END OF ty_alv.DATA: gs_alv TYPE ty_alv,
          gt_alv TYPE TABLE OF ty_alv,
          gr_alv TYPE REF TO cl_salv_table,
          gr_columns TYPE REF TO cl_salv_columns_table.START-OF-SELECTION.
      gs_alv-lights = '1'.    "Color red
      gs_alv-text = 'RED SIGNAL'.
      APPEND gs_alv TO gt_alv.  gs_alv-lights = '2'.    "Color yellow
      gs_alv-text = 'YELLOW SIGNAL'.
      APPEND gs_alv TO gt_alv.  gs_alv-lights = '3'.    "Color green
      gs_alv-text = 'GREEN SIGNAL'.
      APPEND gs_alv TO gt_alv.  CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = gr_alv
        CHANGING
          t_table      = gt_alv.  gr_columns = gr_alv->get_columns( ).  gr_columns->set_exception_column( value = 'LIGHTS' ).  CALL METHOD gr_alv->display.
    Thanks,
    Sriram Ponna.

  • REUSE_ALV_COMMENTARY_WRITE not writing the the the hearder Lines in ECC 6.0

    Hi Experts,
    I am using 'REUSE_ALV_COMMENTARY_WRITE' to write top of paGe in ALV display.
    But it only display blank space in the header.
    Any  suggestions?
    here is the code:
    FORM top_of_page.                                           "#EC CALLED
      CLEAR : wa_commentary,
              it_commentary,
              it_commentary[].
      MOVE sy-datum TO lv_date.
      WRITE lv_date USING EDIT MASK '__.__.____' TO lv_date1.
      CONCATENATE text-006 text-010 lv_date1 INTO lv_header_info SEPARATED BY space.
      MOVE co_h            TO wa_commentary-typ.
      MOVE lv_header_info  TO wa_commentary-info.
      APPEND wa_commentary TO it_commentary.
      SHIFT so_matnr-high LEFT DELETING LEADING '0'.
      SHIFT so_matnr-low  LEFT DELETING LEADING '0'.
      IF so_matnr-high NE space.
        CONCATENATE text-011 text-010 so_matnr-low text-016 so_matnr-high INTO lv_header_info SEPARATED BY space.
      ELSE.
        CONCATENATE text-011 text-010 so_matnr-low INTO lv_header_info SEPARATED BY space.
      ENDIF.
      MOVE co_s            TO wa_commentary-typ.
      MOVE lv_header_info  TO wa_commentary-info.
      APPEND wa_commentary TO it_commentary.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = it_commentary.
    ENDFORM. "top_of_page
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
          EXPORTING
            i_callback_program     = lv_repid
            it_fieldcat            = it_fieldcat
            i_callback_top_of_page = 'TOP_OF_PAGE'
          TABLES
            t_outtab               = it_sapnodiff
          EXCEPTIONS
            program_error          = 1
            OTHERS                 = 2.
    Regards
    Saroj

    Hi,
    This should work. Please try
    Thanks!
    Sandeep
    TYPE-POOLS: SLIS.
    DATA      : TBL_FCAT TYPE SLIS_FIELDCAT_ALV OCCURS 0 WITH HEADER LINE,
                TBL_SORTFIELDS TYPE SLIS_T_SORTINFO_ALV,
                G_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: FLD_CAT TYPE SLIS_FIELDCAT_ALV.
    DATA: T_EVENTS TYPE SLIS_T_EVENT.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM     = SY-REPID
                I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
                IS_LAYOUT              = G_LAYOUT
                IT_FIELDCAT            = TBL_FCAT[]
           TABLES
                T_OUTTAB               = TABLE_REPORT
           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 BUILD_EVENT .
      DATA: WA_EVENTS LIKE LINE OF T_EVENTS.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           IMPORTING
                ET_EVENTS       = T_EVENTS
           EXCEPTIONS
                LIST_TYPE_WRONG = 1
                OTHERS          = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        READ TABLE T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                                                      INTO WA_EVENTS.
        IF SY-SUBRC = 0.
          WA_EVENTS-FORM = 'TOP_OF_PAGE'.
          MODIFY T_EVENTS FROM WA_EVENTS INDEX SY-TABIX TRANSPORTING FORM.
        ENDIF.
      ENDIF.
    ENDFORM.                    " build_event
    FORM TOP_OF_PAGE.
      DATA: IT_COMMENTARY TYPE SLIS_T_LISTHEADER,
            WA_IT_COMMENTARY TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
      DATA : L_BDATE(10) TYPE C,
      L_EDATE(10) TYPE C.
      WA_IT_COMMENTARY-INFO = SY-TITLE.
      WA_IT_COMMENTARY-TYP = 'H'.
      APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
      CLEAR: L_BDATE, EDATE.
      WRITE SY-DATUM TO L_BDATE MM/DD/YYYY.
      WRITE SY-UZEIT TO L_EDATE USING EDIT MASK '__:__:__'.
      CONDENSE L_EDATE.
      CONCATENATE 'System Date/System time'(026) L_BDATE '/' L_EDATE INTO
      WA_IT_COMMENTARY-INFO SEPARATED BY SPACE.
      WA_IT_COMMENTARY-TYP = 'S'.
      APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = IT_COMMENTARY.
    Edited by: sandeep reddy on Jun 4, 2010 1:06 AM

  • URGENT: REGARDING POSTING DATE AND DELETION OF ZEROS IN ALV REPORT

    Hi,
      I had made a report in which i have to display 'POSTING DATE' (iseg-budat) when we execute the report i.e. it should be displayed as  PERIOD :- _______  to _______ .
    2nd problem is i had displayed the material no. ,but there are zeros which are displaying in dere ,i want to remove dem ... example, if the mat.no. is  2321 ,it is displaying 000002321. i want to remove these zeros.
    Its request to all of u dat plz help me as fast as possible as it is most urgent to me and if any body provide me help he or sh e will be definately rewarded..
    Regards,
    ric.s

    Here i am giving you one of the ALV reports i have generated. Check this program. I hope it will be helpful to you.
    REPORT  ZFI_ASSIGNED_FUNDS_FINAL.
    TABLES: FMIT,FMCIT,FPOS,IFMEISA1,FMFCTRT,BSEG,ZREV_BUDGET.
    TYPE-POOLS: SLIS.
    *ALV data declarations
    DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
          GD_SORT      TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
          GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
          GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
          GD_REPID     LIKE SY-REPID.
    *For ALV top of page
    DATA : IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    *For ALV Events
    DATA : IT_EVENT1 TYPE SLIS_T_EVENT.
    *For ALV Events
    DATA : IT_EVENT TYPE SLIS_ALV_EVENT.
    *For top of page heading
    DATA: IT_LINE TYPE SLIS_LISTHEADER.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER : RADIO RADIOBUTTON GROUP R1.
    IF RADIO EQ 'X'.
      SELECT-OPTIONS: FIPEX  FOR FPOS-FIPEX,                  " SELECTION FOR FUNDS CENTER & COMMITMENT ITEM
                      RFISTL FOR FMIT-RFISTL.
    ENDIF.
    PARAMETER: RADIO1 RADIOBUTTON GROUP R1.
    IF RADIO1 EQ 'X'.
      SELECT-OPTIONS : HKONT FOR BSEG-HKONT,                 " SELECTION FOR COST CENTER & G/L ACCOUNT
                       KOSTL FOR ZREV_BUDGET-KOSTL.
    ENDIF.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: PERDE  FOR IFMEISA1-PERDE DEFAULT '01' TO '12' OBLIGATORY.
    PARAMETER :     RYEAR  LIKE FMIT-RYEAR OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B2.
    DATA: BEGIN OF IT_TAB OCCURS 0,
             FIKRS LIKE FMFCTR-FIKRS,
             FICTR LIKE CSKS-KOSTL,
             CTR_OBJNR LIKE FMFCTR-CTR_OBJNR,
             RFISTL LIKE FMIT-RFISTL,
             OBJNR LIKE BPPE-OBJNR,
          END OF IT_TAB.
    DATA: BEGIN OF IT_TAB1 OCCURS 0,
             CO_OBJNR LIKE BPIJ-CO_OBJNR,
             POSIT LIKE BPPE-POSIT,
             FIPEX LIKE FMPOSIT-FIPEX,
             FICTR LIKE FMFCTR-FICTR,
             KSTAR LIKE COSP-KSTAR,
             RFISTL LIKE FMIT-RFISTL,
             OBJNR1 LIKE BPPE-OBJNR,
          END OF IT_TAB1.
    DATA: BEGIN OF IT_FMIT OCCURS 0,
            RYEAR LIKE FMIT-RYEAR,
            FIKRS LIKE FMIT-FIKRS,
            RFISTL LIKE ZREV_BUDGET-KOSTL,
            RFIPEX LIKE ZREV_BUDGET-KSTAR,
            HSL01 LIKE FMIT-HSL01,
            HSL02 LIKE FMIT-HSL02,
            HSL03 LIKE FMIT-HSL03,
            HSL04 LIKE FMIT-HSL04,
            HSL05 LIKE FMIT-HSL05,
            HSL06 LIKE FMIT-HSL06,
            HSL07 LIKE FMIT-HSL07,
            HSL08 LIKE FMIT-HSL08,
            HSL09 LIKE FMIT-HSL09,
            HSL10 LIKE FMIT-HSL10,
            HSL11 LIKE FMIT-HSL11,
            HSL12 LIKE FMIT-HSL12,
            HSL13 LIKE FMIT-HSL13,
            HSL14 LIKE FMIT-HSL14,
            HSL15 LIKE FMIT-HSL15,
            HSL16 LIKE FMIT-HSL16,
         END OF IT_FMIT.
    DATA: BEGIN OF IT_FMIT1 OCCURS 0,
            RYEAR LIKE FMIT-RYEAR,
            FIKRS LIKE FMIT-FIKRS,
            RFISTL LIKE ZREV_BUDGET-KOSTL,
            RFIPEX LIKE FMPG-FIPEX,
            TOTAL LIKE FMIT-TSL01,
            TOTAL1 LIKE FMIT-TSL01,
            OBJNR LIKE BPPE-OBJNR,
            POSIT LIKE BPPE-POSIT,
         END OF IT_FMIT1.
    DATA: BEGIN OF IT_BPPE OCCURS 0,
            OBJNR LIKE BPPE-OBJNR,
            POSIT LIKE BPPE-POSIT,
            GJAHR LIKE BPPE-GJAHR,
            WLP01 LIKE BPPE-WLP01,
            WLP02 LIKE BPPE-WLP02,
            WLP03 LIKE BPPE-WLP03,
            WLP04 LIKE BPPE-WLP04,
            WLP05 LIKE BPPE-WLP05,
            WLP06 LIKE BPPE-WLP06,
            WLP07 LIKE BPPE-WLP07,
            WLP08 LIKE BPPE-WLP08,
            WLP09 LIKE BPPE-WLP09,
            WLP10 LIKE BPPE-WLP10,
            WLP11 LIKE BPPE-WLP11,
            WLP12 LIKE BPPE-WLP12,
          END OF IT_BPPE.
    DATA: BEGIN OF IT_BPPE1 OCCURS 0,
            OBJNR LIKE BPPE-OBJNR,
            POSIT LIKE BPPE-POSIT,
            GJAHR LIKE BPPE-GJAHR,
            RFISTL LIKE FMIT-RFISTL,
            FIPEX LIKE FPOS-FIPEX,
            TOTAL2 LIKE BPPE-WLP01,
          END OF IT_BPPE1.
    DATA: BEGIN OF IT_CSKS OCCURS 0,
           KOKRS LIKE CSKS-KOKRS,
           KOSTL LIKE CSKS-KOSTL,
           BUKRS LIKE CSKS-BUKRS,
           OBJNR LIKE CSKS-OBJNR,
         END OF IT_CSKS.
    DATA: BEGIN OF IT_COSP OCCURS 0,
           OBJNR LIKE COSP-OBJNR,
           GJAHR LIKE COSP-GJAHR,
           KSTAR LIKE COSP-KSTAR,
           BEKNZ LIKE COSP-BEKNZ,
           WKG001 LIKE COSP-WKG001,
           WKG002 LIKE COSP-WKG002,
           WKG003 LIKE COSP-WKG003,
           WKG004 LIKE COSP-WKG004,
           WKG005 LIKE COSP-WKG005,
           WKG006 LIKE COSP-WKG006,
           WKG007 LIKE COSP-WKG007,
           WKG008 LIKE COSP-WKG008,
           WKG009 LIKE COSP-WKG009,
           WKG010 LIKE COSP-WKG010,
           WKG011 LIKE COSP-WKG011,
           WKG012 LIKE COSP-WKG012,
         END OF IT_COSP.
    DATA: BEGIN OF IT_COSP2 OCCURS 0,
           OBJNR LIKE COSP-OBJNR,
           GJAHR LIKE COSP-GJAHR,
           KSTAR LIKE COSP-KSTAR,
           FIPEX LIKE FMPG-FIPEX,
           TOTAL LIKE COSP-WKG001,
           TOTAL1 LIKE COSP-WKG001,
           OBJNR1 LIKE BPPE-OBJNR,
           POSIT LIKE BPPE-POSIT,
         END OF IT_COSP2.
    IF RADIO EQ 'X'.
      DATA: BEGIN OF IT_FINAL OCCURS 0,
             FIKRS LIKE FMIT-FIKRS,
             RFISTL LIKE FMIT-RFISTL,
             RFIPEX LIKE FMIT-RFIPEX,
             TEXT LIKE FMCIT-TEXT1,
             ALLOC LIKE FMIT-TSL16,
             USED LIKE FMIT-TSL16,
             REMAIN LIKE FMIT-TSL16,
             BEZEICH LIKE FMFCTRT-BEZEICH,
           END OF IT_FINAL.
    ENDIF.
    IF RADIO1 EQ 'X'.
      DATA: BEGIN OF IT_FINAL1 OCCURS 0,
              GJAHR LIKE ZREV_BUDGET-GJAHR,
              KOSTL LIKE ZREV_BUDGET-KOSTL,
              KSTAR LIKE ZREV_BUDGET-KSTAR,
              TOTAL1 LIKE COSP-WKG001,
              TOTAL3 LIKE COSP-WKG001,
              TEXT LIKE CSKU-KTEXT,
              VARIANCE LIKE COSP-WKG001,
              BEZEICH LIKE FMFCTRT-BEZEICH,
            END OF IT_FINAL1.
    ENDIF.
    DATA: BEGIN OF IT_FISTL OCCURS 0,
           RFISTL LIKE FMIT-RFISTL,
           BEZEICH LIKE FMFCTRT-BEZEICH,
          END OF IT_FISTL.
    DATA: BEGIN OF IT_HKONT OCCURS 0,
           KSTAR LIKE CSKU-KSTAR,
           KTEXT LIKE CSKU-KTEXT,
          END OF IT_HKONT.
    DATA: PERIOD1 TYPE I,
          PERIOD2 TYPE I,
          PERIOD3 TYPE I,
          PERIO TYPE I.
    DATA: BEZEICH LIKE FMFCTRT-BEZEICH.
    CONSTANTS: C_00 TYPE MONAT VALUE '00',
               C_13 TYPE MONAT VALUE '13'.
    DATA : IT_RETURN LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
    DATA: FIPEX1 LIKE COSP-KSTAR.
    A T - S E L E C T I O N  S C R E E N
    AT SELECTION-SCREEN.
      LOOP AT PERDE.
        IF  PERDE-LOW >= C_13 OR PERDE-HIGH >= C_13 .
          MESSAGE E022(ZA)  WITH 'Enter Period values from 1 to 12'.
          EXIT.
        ENDIF.
      ENDLOOP.
      IF NOT PERDE-LOW IS INITIAL.
        PERIOD1 = PERDE-LOW.
      ENDIF.
      IF NOT PERDE-HIGH IS INITIAL.
        PERIOD2 = PERDE-HIGH.
        PERIOD3 = PERIOD2 - PERIOD1.
        PERIOD3 = PERIOD3 + 1.
      ELSE.
        PERIOD3 = 1.
      ENDIF.
      PERIO = PERIOD1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR RFISTL-LOW.
      SELECT FICTR BEZEICH INTO TABLE IT_FISTL FROM FMFCTRT
                                               WHERE SPRAS EQ 'EN'
                                               AND   FIKRS EQ 'NFFM'.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'RFISTL'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_FISTL
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO RFISTL-LOW.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR RFISTL-HIGH.
      SELECT FICTR BEZEICH INTO TABLE IT_FISTL FROM FMFCTRT
                                               WHERE SPRAS EQ 'EN'
                                               AND   FIKRS EQ 'NFFM'.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'RFISTL'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_FISTL
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO RFISTL-HIGH.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR HKONT-LOW.
      SELECT KSTAR KTEXT INTO TABLE IT_HKONT FROM CSKU WHERE SPRAS EQ 'EN'.
      SORT IT_HKONT BY KSTAR.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'HKONT'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_HKONT
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO HKONT-LOW.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR HKONT-HIGH.
      SELECT  KSTAR KTEXT INTO TABLE IT_HKONT FROM CSKU WHERE SPRAS EQ 'EN'.
      SORT IT_HKONT BY KSTAR.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'HKONT'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_HKONT
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO HKONT-HIGH.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR KOSTL-LOW.
      SELECT FICTR BEZEICH INTO TABLE IT_FISTL FROM FMFCTRT
                                               WHERE SPRAS EQ 'EN'
                                               AND   FIKRS IN KOSTL.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'KOSTL'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_FISTL
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO KOSTL-LOW.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR KOSTL-HIGH.
      SELECT FICTR BEZEICH INTO TABLE IT_FISTL FROM FMFCTRT
                                               WHERE SPRAS EQ 'EN'
                                               AND   FIKRS IN KOSTL.
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          RETFIELD   = 'KOSTL'
          VALUE_ORG  = 'S'
        TABLES
          VALUE_TAB  = IT_FISTL
          RETURN_TAB = IT_RETURN.
      IF SY-SUBRC = 0.
        READ TABLE IT_RETURN INDEX 1.
        MOVE IT_RETURN-FIELDVAL TO KOSTL-HIGH.
      ENDIF.
    *START-OF-SELECTION
    START-OF-SELECTION.
      IF RADIO EQ 'X'.                     " FOR FUNDS CENTER AND COMMITMENT ITEM
        PERFORM GET_DATA.
        PERFORM PROCESS_DATA.
      ENDIF.
      IF RADIO1 EQ 'X'.                    " FOR COST CENTER AND G/L ACCOUNT
        PERFORM GET_DATA1.
        PERFORM PROCESS_DATA1.
      ENDIF.
    *END OF SELECTION
      PERFORM BUILD_LAYOUT.
      PERFORM BUILD_EVENTS.
      IF RADIO EQ 'X'.
        PERFORM BUILD_FIELDCATALOG.
        PERFORM BUILD_SORT.
        PERFORM DISPLAY_ALV_REPORT.
      ENDIF.
      IF RADIO1 EQ 'X'.
        PERFORM BUILD_FIELDCATALOG1.
        PERFORM BUILD_SORT1.
        PERFORM DISPLAY_ALV_REPORT1.
      ENDIF.
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DATA .
      SELECT FIKRS FICTR CTR_OBJNR INTO TABLE IT_TAB FROM FMFCTR
                                                     WHERE FIKRS EQ 'NFFM'
                                                     AND   FICTR IN RFISTL.
      SELECT CO_OBJNR POSIT INTO TABLE IT_TAB1 FROM BPIJ
                                               FOR ALL ENTRIES IN IT_TAB
                                               WHERE CO_OBJNR EQ IT_TAB-CTR_OBJNR.
      LOOP AT IT_TAB1.
        SELECT SINGLE FIPEX INTO IT_TAB1-FIPEX FROM FMPOSIT WHERE FIKRS EQ 'NFFM'
                                               AND   POSIT EQ IT_TAB1-POSIT
                                               AND   FIPEX IN FIPEX.
        IF SY-SUBRC EQ '0'.
          MODIFY IT_TAB1.
        ELSE.
          DELETE IT_TAB1.
        ENDIF.
      ENDLOOP.
      SELECT OBJNR
             POSIT
             GJAHR
             WLP01
             WLP02
             WLP03
             WLP04
             WLP05
             WLP06
             WLP07
             WLP08
             WLP09
             WLP10
             WLP11
             WLP12
             INTO TABLE IT_BPPE
             FROM BPPE
             FOR ALL ENTRIES IN IT_TAB1
             WHERE OBJNR EQ IT_TAB1-CO_OBJNR
             AND   POSIT EQ IT_TAB1-POSIT
             AND   GJAHR EQ RYEAR
             AND   VORGA IN ('KBFR','KBUE','KBUS').
      LOOP AT IT_BPPE.
        MOVE-CORRESPONDING IT_BPPE TO IT_BPPE1.
        IT_BPPE1-RFISTL = IT_BPPE1-OBJNR+6(4).
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_BPPE1-RFISTL
          IMPORTING
            OUTPUT = IT_BPPE1-RFISTL.
        CALL FUNCTION 'FM_FIPEX_GET_FROM_POSIT'
          EXPORTING
            I_FIKRS = 'NFFM'
            I_POSIT = IT_BPPE1-POSIT
          IMPORTING
            E_FIPEX = IT_BPPE1-FIPEX.
        PERIOD1 = PERIO.
        DO PERIOD3 TIMES.
          CASE PERIOD1.
            WHEN 1.
              IT_BPPE1-TOTAL2 =  IT_BPPE1-TOTAL2 + IT_BPPE-WLP01.
            WHEN 2.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP02.
            WHEN 3.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP03.
            WHEN 4.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP04.
            WHEN 5.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP05.
            WHEN 6.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP06.
            WHEN 7.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP07.
            WHEN 8.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP08.
            WHEN 9.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP09.
            WHEN 10.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP10.
            WHEN 11.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP11.
            WHEN 12.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP12.
          ENDCASE.
          IF PERIOD2 >= PERIOD1.
            PERIOD1 = PERIOD1 + 1.
          ENDIF.
        ENDDO.
        COLLECT IT_BPPE1.
        CLEAR PERIOD1.
        CLEAR IT_BPPE1.
      ENDLOOP.
      SELECT RYEAR
             FIKRS
             RFISTL
             RFIPEX
             HSL01
             HSL02
             HSL03
             HSL04
             HSL05
             HSL06
             HSL07
             HSL08
             HSL09
             HSL10
             HSL11
             HSL12
             HSL13
             HSL14
             HSL15
             HSL16
             INTO TABLE IT_FMIT FROM FMIT
             FOR ALL ENTRIES IN IT_BPPE1
             WHERE RYEAR EQ RYEAR
             AND   FIKRS EQ 'NFFM'
            AND   RFIPEX EQ IT_BPPE1-FIPEX
             AND  RFIPEX IN FIPEX
             AND   RFISTL EQ IT_BPPE1-RFISTL.
      LOOP AT IT_FMIT.
        MOVE-CORRESPONDING IT_FMIT TO IT_FMIT1.
        PERIOD1 = PERIO.
        DO PERIOD3 TIMES.
          CASE PERIOD1.
            WHEN 1.
              IT_FMIT1-TOTAL =  IT_FMIT1-TOTAL + IT_FMIT-HSL01.
            WHEN 2.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL02.
            WHEN 3.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL03.
            WHEN 4.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL04.
            WHEN 5.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL05.
            WHEN 6.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL06.
            WHEN 7.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL07.
            WHEN 8.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL08.
            WHEN 9.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL09.
            WHEN 10.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL10.
            WHEN 11.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL11.
            WHEN 12.
              IT_FMIT1-TOTAL = IT_FMIT1-TOTAL + IT_FMIT-HSL12.
          ENDCASE.
          IF PERIOD2 >= PERIOD1.
            PERIOD1 = PERIOD1 + 1.
          ENDIF.
        ENDDO.
        IT_FMIT1-TOTAL1 = IT_FMIT1-TOTAL * -1 .
        COLLECT IT_FMIT1.
        CLEAR PERIOD1.
        CLEAR IT_FMIT1.
      ENDLOOP.
    ENDFORM.                    " GET_DATA
    *&      Form  PROCESS_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM PROCESS_DATA .
      SORT IT_FMIT1 BY FIKRS RFISTL RFIPEX.
      SORT IT_BPPE1 BY RFISTL FIPEX.
      LOOP AT IT_BPPE1.
        IT_FINAL-RFISTL = IT_BPPE1-RFISTL.
        IT_FINAL-RFIPEX = IT_BPPE1-FIPEX.
        IT_FINAL-ALLOC   = IT_BPPE1-TOTAL2.
        READ TABLE IT_FMIT1 WITH KEY RFISTL = IT_BPPE1-RFISTL  RFIPEX = IT_BPPE1-FIPEX.
        IF SY-SUBRC EQ 0.
          IT_FINAL-USED   = IT_FMIT1-TOTAL1.
        ENDIF.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_FMIT1-RFIPEX
          IMPORTING
            OUTPUT = IT_FMIT1-RFIPEX.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_FMIT1-RFISTL
          IMPORTING
            OUTPUT = IT_FMIT1-RFISTL.
    Changes made on 13/11/2007  *******************************
       SELECT SINGLE TEXT1 INTO IT_FINAL-TEXT FROM FMCIT WHERE SPRAS EQ 'EN'
                                                         AND   FIPEX EQ  IT_FMIT1-RFIPEX.
        SELECT SINGLE TEXT1 INTO IT_FINAL-TEXT FROM FMCIT WHERE SPRAS EQ 'EN'
                                                          AND   FIPEX EQ  IT_BPPE1-FIPEX.
    Changes made on 13/11/2007  *******************************
        SELECT SINGLE BEZEICH INTO IT_FINAL-BEZEICH FROM FMFCTRT
                                                    WHERE SPRAS EQ 'EN'
                                                    AND   FICTR EQ IT_FMIT1-RFISTL.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_FINAL-RFIPEX
          IMPORTING
            OUTPUT = IT_FINAL-RFIPEX.
        IT_FINAL-REMAIN = IT_FINAL-ALLOC - IT_FINAL-USED.
        APPEND IT_FINAL.
        CLEAR IT_FINAL.
      ENDLOOP.
    SORT IT_FINAL BY FIKRS RFISTL RFIPEX.
       LOOP AT IT_FMIT1.
        READ TABLE IT_FINAL WITH KEY RFISTL = IT_FMIT1-RFISTL RFIPEX = IT_FMIT1-RFIPEX.
        IF SY-SUBRC NE 0.
          IT_FINAL-RFISTL = IT_FMIT1-RFISTL.
          IT_FINAL-RFIPEX = IT_FMIT1-RFIPEX.
          IT_FINAL-USED   = IT_FMIT1-TOTAL1.
        IT_FINAL-ALLOC   = '0'.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              INPUT  = IT_FMIT1-RFIPEX
            IMPORTING
              OUTPUT = IT_FMIT1-RFIPEX.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
            EXPORTING
              INPUT  = IT_FMIT1-RFISTL
            IMPORTING
              OUTPUT = IT_FMIT1-RFISTL.
          SELECT SINGLE TEXT1 INTO IT_FINAL-TEXT FROM FMCIT WHERE SPRAS EQ 'EN'
                                                            AND   FIPEX EQ  IT_FMIT1-RFIPEX.
          SELECT SINGLE BEZEICH INTO IT_FINAL-BEZEICH FROM FMFCTRT
                                                      WHERE SPRAS EQ 'EN'
                                                      AND   FICTR EQ IT_FMIT1-RFISTL.
          IT_FINAL-REMAIN = IT_FINAL-ALLOC - IT_FINAL-USED.
          APPEND IT_FINAL.
          CLEAR IT_FINAL.
        ELSE.
          DELETE IT_FMIT1.
        ENDIF.
      ENDLOOP.
      SORT IT_FINAL BY FIKRS RFISTL RFIPEX.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  GET_DATA1
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DATA1 .
      SELECT KOKRS KOSTL BUKRS OBJNR INTO TABLE IT_CSKS
                                     FROM CSKS
                                     WHERE KOKRS EQ '1000'
                                     AND   KOSTL IN KOSTL
                                     AND   BUKRS EQ 'NFCL'.
      SELECT OBJNR
             GJAHR
             KSTAR
             BEKNZ
             WKG001
             WKG002
             WKG003
             WKG004
             WKG005
             WKG006
             WKG007
             WKG008
             WKG009
             WKG010
             WKG011
             WKG012
             FROM COSP
             INTO TABLE IT_COSP
             FOR ALL ENTRIES IN IT_CSKS
             WHERE OBJNR EQ IT_CSKS-OBJNR
             AND   GJAHR EQ RYEAR
             AND   KSTAR IN HKONT.
      LOOP AT IT_COSP.
        MOVE-CORRESPONDING IT_COSP TO IT_COSP2.
        PERIOD1 = PERIO.
        DO PERIOD3 TIMES.
          CASE PERIOD1.
            WHEN 1.
              IT_COSP2-TOTAL =  IT_COSP2-TOTAL + IT_COSP-WKG001.
            WHEN 2.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG002.
            WHEN 3.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG003.
            WHEN 4.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG004.
            WHEN 5.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG005.
            WHEN 6.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG006.
            WHEN 7.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG007.
            WHEN 8.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG008.
            WHEN 9.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG009.
            WHEN 10.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG010.
            WHEN 11.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG011.
            WHEN 12.
              IT_COSP2-TOTAL = IT_COSP2-TOTAL + IT_COSP-WKG012.
          ENDCASE.
          IF PERIOD2 >= PERIOD1.
            PERIOD1 = PERIOD1 + 1.
          ENDIF.
        ENDDO.
        IT_COSP2-OBJNR1 = IT_COSP2-OBJNR+10(6).
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_COSP2-OBJNR1
          IMPORTING
            OUTPUT = IT_COSP2-OBJNR1.
        CONCATENATE 'FSNFFM' IT_COSP2-OBJNR1 INTO IT_COSP2-OBJNR1.
        IT_COSP2-FIPEX = IT_COSP2-KSTAR.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_COSP2-FIPEX
          IMPORTING
            OUTPUT = IT_COSP2-FIPEX.
        CALL FUNCTION 'FM_POSIT_GET_FROM_FIPEX'
          EXPORTING
          I_FIKRS                = 'NFFM'
          I_FIPEX                = IT_COSP2-FIPEX
      I_FLG_BUFFER_ALL       =
       IMPORTING
       E_POSIT                = IT_COSP2-POSIT
    TABLES
      T_FMPOSIT              =
        EXCEPTIONS
          INPUT_ERROR            = 1
          DATA_NOT_FOUND         = 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.
        CONDENSE IT_COSP2-OBJNR1.
        CONDENSE IT_COSP2-POSIT.
        COLLECT IT_COSP2.
        CLEAR PERIOD1.
        CLEAR IT_COSP2.
      ENDLOOP.
      SORT IT_COSP2 BY OBJNR KSTAR.
      SELECT OBJNR
             POSIT
             GJAHR
             WLP01
             WLP02
             WLP03
             WLP04
             WLP05
             WLP06
             WLP07
             WLP08
             WLP09
             WLP10
             WLP11
             WLP12
             INTO TABLE IT_BPPE
             FROM BPPE
             FOR ALL ENTRIES IN IT_COSP2
             WHERE OBJNR EQ IT_COSP2-OBJNR1
             AND   POSIT EQ IT_COSP2-POSIT
             AND   GJAHR EQ RYEAR
             AND   VORGA IN ('KBFR','KBUE','KBUS').
      LOOP AT IT_BPPE.
        MOVE-CORRESPONDING IT_BPPE TO IT_BPPE1.
        PERIOD1 = PERIO.
        DO PERIOD3 TIMES.
          CASE PERIOD1.
            WHEN 1.
              IT_BPPE1-TOTAL2 =  IT_BPPE1-TOTAL2 + IT_BPPE-WLP01.
            WHEN 2.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP02.
            WHEN 3.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP03.
            WHEN 4.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP04.
            WHEN 5.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP05.
            WHEN 6.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP06.
            WHEN 7.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP07.
            WHEN 8.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP08.
            WHEN 9.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP09.
            WHEN 10.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP10.
            WHEN 11.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP11.
            WHEN 12.
              IT_BPPE1-TOTAL2 = IT_BPPE1-TOTAL2 + IT_BPPE-WLP12.
          ENDCASE.
          IF PERIOD2 >= PERIOD1.
            PERIOD1 = PERIOD1 + 1.
          ENDIF.
        ENDDO.
        COLLECT IT_BPPE1.
        CLEAR PERIOD1.
        CLEAR IT_BPPE1.
      ENDLOOP.
    ENDFORM.                                                    " GET_DATA1
    *&      Form  PROCESS_DATA1
          text
    -->  p1        text
    <--  p2        text
    FORM PROCESS_DATA1 .
      LOOP AT IT_COSP2.
        IT_FINAL1-GJAHR = IT_COSP2-GJAHR.
        IT_FINAL1-KSTAR = IT_COSP2-KSTAR.
        IT_FINAL1-TOTAL1 = IT_COSP2-TOTAL.
        SELECT SINGLE KOSTL FROM CSKS INTO IT_FINAL1-KOSTL WHERE KOKRS = '1000'
                                                            AND BUKRS EQ 'NFCL'
                                                            AND OBJNR = IT_COSP2-OBJNR.
        READ TABLE IT_BPPE1 WITH KEY OBJNR = IT_COSP2-OBJNR1 POSIT = IT_COSP2-POSIT.
        IF SY-SUBRC EQ 0.
          IT_FINAL1-TOTAL3 = IT_BPPE1-TOTAL2.
        ENDIF.
        SELECT SINGLE KTEXT INTO IT_FINAL1-TEXT FROM CSKU WHERE SPRAS EQ 'EN'
                                                          AND  KSTAR EQ  IT_COSP2-KSTAR.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_FINAL1-KOSTL
          IMPORTING
            OUTPUT = IT_FINAL1-KOSTL.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            INPUT  = IT_FINAL1-KSTAR
          IMPORTING
            OUTPUT = IT_FINAL1-KSTAR.
        SELECT SINGLE BEZEICH INTO IT_FINAL1-BEZEICH FROM FMFCTRT
                                                    WHERE SPRAS EQ 'EN'
                                                    AND   FICTR EQ IT_FINAL1-KOSTL.
        IT_FINAL1-VARIANCE = IT_FINAL1-TOTAL3 - IT_FINAL1-TOTAL1.
        APPEND IT_FINAL1.
        CLEAR IT_FINAL1.
      ENDLOOP.
      SORT IT_FINAL1 BY KOSTL KSTAR.
      DELETE IT_FINAL1 WHERE KOSTL IS INITIAL.
    ENDFORM.                    " PROCESS_DATA1
    *&      Form  BUILD_FIELDCATALOG
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELDCATALOG .
      FIELDCATALOG-FIELDNAME   = 'RFISTL'.
      FIELDCATALOG-SELTEXT_M   = 'Funds Center'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'BEZEICH'.
      FIELDCATALOG-SELTEXT_M   = 'Fund Center Description'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'RFIPEX'.
      FIELDCATALOG-SELTEXT_M   = 'Commitment Item'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'TEXT'.
      FIELDCATALOG-SELTEXT_M   = 'Commitment Item Description'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'ALLOC'.
      FIELDCATALOG-SELTEXT_M   = 'Allocated Budget'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'USED'.
      FIELDCATALOG-SELTEXT_M   = 'Used Budget'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'REMAIN'.
      FIELDCATALOG-SELTEXT_M   = 'Remaining Budget'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_FIELDCATALOG1
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELDCATALOG1 .
      FIELDCATALOG-FIELDNAME   = 'KOSTL'.
      FIELDCATALOG-SELTEXT_M   = 'Cost Center'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'BEZEICH'.
      FIELDCATALOG-SELTEXT_M   = 'Cost Center Description'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'KSTAR'.
      FIELDCATALOG-SELTEXT_M   = 'G/L Account'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'TEXT'.
      FIELDCATALOG-SELTEXT_M   = 'G/L Account Description'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'TOTAL3'.
      FIELDCATALOG-SELTEXT_M   = 'Planned amount'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'TOTAL1'.
      FIELDCATALOG-SELTEXT_M   = 'Actuals'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
      FIELDCATALOG-FIELDNAME   = 'VARIANCE'.
      FIELDCATALOG-SELTEXT_M   = 'Variance'.
      FIELDCATALOG-DO_SUM      = 'X'.
      APPEND FIELDCATALOG TO FIELDCATALOG.
      CLEAR  FIELDCATALOG.
    ENDFORM.                    " BUILD_FIELDCATALOG1
    *&      Form  BUILD_LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_LAYOUT .
      GD_LAYOUT-NO_INPUT          = 'X'.
      GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  BUILD_SORT
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_SORT .
      DATA: GT_SORT TYPE SLIS_SORTINFO_ALV.
      GT_SORT-UP = 'X'.
      GT_SORT-FIELDNAME = 'RFISTL'.
      GT_SORT-TABNAME  = 'IT_FINAL'.
      GT_SORT-SUBTOT  = 'X'.
      APPEND GT_SORT TO GD_SORT.
      CLEAR GT_SORT.
      GT_SORT-UP = 'X'.
      GT_SORT-FIELDNAME = 'BEZEICH'.
      GT_SORT-TABNAME  = 'IT_FINAL'.
      APPEND GT_SORT TO GD_SORT.
      CLEAR GT_SORT.
    ENDFORM.                    " BUILD_SORT
    *&      Form  BUILD_SORT1
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_SORT1 .
      DATA: GT_SORT TYPE SLIS_SORTINFO_ALV.
      GT_SORT-UP = 'X'.
      GT_SORT-FIELDNAME = 'KOSTL'.
      GT_SORT-TABNAME  = 'IT_FINAL'.
      GT_SORT-SUBTOT  = 'X'.
      APPEND GT_SORT TO GD_SORT.
      CLEAR GT_SORT.
      GT_SORT-UP = 'X'.
      GT_SORT-FIELDNAME = 'BEZEICH'.
      GT_SORT-TABNAME  = 'IT_FINAL'.
      APPEND GT_SORT TO GD_SORT.
      CLEAR GT_SORT.
    ENDFORM.                    " BUILD_SORT1
    *&      Form  BUILD_EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_EVENTS .
      IT_EVENT-NAME = 'TOP_OF_PAGE'.
      IT_EVENT-FORM = 'TOP_OF_PAGE'.
      APPEND IT_EVENT TO IT_EVENT1.
    CLEAR IT_EVENT.
    ENDFORM.                    " BUILD_EVENTS
    *&      Form TOP_OF_PAGE
          ALV TOP-OF-PAGE
    FORM TOP_OF_PAGE.                                           "#EC CALLED
      REFRESH : IT_LIST_TOP_OF_PAGE.
      CLEAR : IT_LINE.
      IT_LINE-TYP  = 'H'.
      IT_LINE-INFO = TEXT-001.
      APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
      CLEAR IT_LINE.
      IF RADIO EQ 'X'.
        IT_LINE-TYP  = 'S'.
        IT_LINE-INFO  = TEXT-101.
        IF NOT FIPEX-LOW IS INITIAL.
          CONCATENATE TEXT-101 '-' FIPEX-LOW INTO IT_LINE-INFO SEPARATED BY SPACE.
          IF NOT FIPEX-HIGH IS INITIAL.
            CONCATENATE TEXT-101 '-' FIPEX-LOW 'to' FIPEX-HIGH INTO IT_LINE-INFO SEPARATED BY SPACE.
          ENDIF.
        ENDIF.
        APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
        CLEAR IT_LINE-INFO.
        IT_LINE-INFO = TEXT-102.
        IF NOT RFISTL-LOW IS INITIAL.
          CONCATENATE TEXT-102 '-' RFISTL-LOW INTO IT_LINE-INFO SEPARATED BY SPACE.
          IF NOT RFISTL-HIGH IS INITIAL.
            CONCATENATE TEXT-102 '-' RFISTL-LOW 'to' RFISTL-HIGH INTO IT_LINE-INFO SEPARATED BY SPACE.
          ENDIF.
        ENDIF.
        APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
      ENDIF.
      IF RADIO1 EQ 'X'.
        CLEAR IT_LINE-INFO.
        IT_LINE-INFO = TEXT-105.
        IF NOT KOSTL-LOW IS INITIAL.
          CONCATENATE TEXT-105 '-' KOSTL-LOW INTO IT_LINE-INFO SEPARATED BY SPACE.
          IF NOT KOSTL-HIGH IS INITIAL.
            CONCATENATE TEXT-105 '-' KOSTL-LOW 'to' KOSTL-HIGH INTO IT_LINE-INFO SEPARATED BY SPACE.
          ENDIF.
        ENDIF.
        APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
        CLEAR IT_LINE-INFO.
        IT_LINE-INFO = TEXT-106.
        IF NOT HKONT-LOW IS INITIAL.
          CONCATENATE TEXT-106 '-' HKONT-LOW INTO IT_LINE-INFO SEPARATED BY SPACE.
          IF NOT HKONT-HIGH IS INITIAL.
            CONCATENATE TEXT-106 '-' HKONT-LOW 'to' HKONT-HIGH INTO IT_LINE-INFO SEPARATED BY SPACE.
          ENDIF.
        ENDIF.
        APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
      ENDIF.
      CLEAR IT_LINE-INFO.
      IT_LINE-INFO = TEXT-103.
      IF NOT PERDE-LOW IS INITIAL.
        CONCATENATE TEXT-103 '-' PERDE-LOW INTO IT_LINE-INFO SEPARATED BY SPACE.
        IF NOT PERDE-HIGH IS INITIAL.
          CONCATENATE TEXT-103 '-' PERDE-LOW 'to' PERDE-HIGH INTO IT_LINE-INFO SEPARATED BY SPACE.
        ENDIF.
      ENDIF.
      APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
      CLEAR IT_LINE-INFO.
      IT_LINE-INFO = TEXT-104.
      IF NOT RYEAR IS INITIAL.
        CONCATENATE TEXT-104 '-' RYEAR INTO IT_LINE-INFO SEPARATED BY SPACE.
      ENDIF.
      APPEND IT_LINE TO IT_LIST_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE.
    ENDFORM.                               "TOP_OF_PAGE
    *&      Form  DISPLAY_ALV_REPORT
          text
    -->  p1        text
    <--  p2        text
    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'
          IS_LAYOUT              = GD_LAYOUT
          IT_EVENTS              = IT_EVENT1[]
          IT_FIELDCAT            = FIELDCATALOG[]
          IT_SORT                = GD_SORT[]
        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.
    ENDFORM.                    "DISPLAY_ALV_REPORT
    *&      Form  DISPLAY_ALV_REPORT1
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_ALV_REPORT1 .
      GD_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM     = GD_REPID
          I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
          IS_LAYOUT              = GD_LAYOUT
          IT_EVENTS              = IT_EVENT1[]
          IT_FIELDCAT            = FIELDCATALOG[]
          IT_SORT                = GD_SORT[]
        TABLES
          T_OUTTAB               = IT_FINAL1
        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-MSG

  • Urgent: regarding ALV  report display problem

    hi,
    There are 3 problems:-
    1.) I had made a ALV report in which i have to display 'POSTING DATE' (iseg-budat) when we execute the report i.e. it should be displayed as  PERIOD :- _______  to _______ on alv report ..
    2.)the 2nd problem is dat when i use the '  wa_fieldcat-no_zero = 'X'.  It eliminates all the leading zeros which are present which is okay when i it displays material no.. but the problem is dat it also deletes the other fields where the values are to be zeros.
    i had used this FM:-
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
       INPUT = ITS1-MATNR
       IMPORTING
       OUTPUT = ITS1-MATNR.
    so that only matnr field are to be 0's.
    3.) I want to delete the rows which use to contain the values 0's as there are no calculations are performing as these are displayed .
    ANYbody having solution of this problem ,plzzzz provide the soluion of it as it is most urgent to me and dat person will definately rewarded.
    regards,
    ric.s

    hi kiran,
    thanks for ur response. here is d code which i am using it and plzz help me to figure out where i have to make changes:-
    REPORT  ZTEST03.
    TABLES: ISEG,MARA.
    TYPE-POOLS : SLIS.
    INTERNAL TABLE FOR INVENTORY STOCK *****************
    DATA: BEGIN OF ITS1 OCCURS 0,
          MATNR LIKE ISEG-MATNR,
          MEINS LIKE ISEG-MEINS,
          MENGE LIKE ISEG-MENGE,
          WRTZL LIKE ISEG-WRTZL,
          BUCHM LIKE ISEG-BUCHM,
          WRTBM LIKE ISEG-WRTBM,
          WERKS LIKE ISEG-WERKS,
          BUDAT LIKE ISEG-BUDAT,
          MTART LIKE MARA-MTART,
          ITEMDESC LIKE MAKT-MAKTX,
          DIFFQTY LIKE ISEG-BUCHM,
          DIFFVALUE LIKE ISEG-WRTBM,
          END OF ITS1.
    data: t_heading type slis_t_listheader.
    SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
    *********PARAMETERS*********
    PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
    *********SELECTION SCREEN OPTIONS*********
    SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT,
                     M_TYPE  FOR MARA-MTART,
                     IT_M FOR MARA-MATNR.
    *********DEFINING VARIABLES*********
      SELECTION-SCREEN END OF BLOCK par1.
    TOP-OF-PAGE.
         PERFORM PG_HEADER.
    START-OF-SELECTION.
    SELECT DISTINCT A~MATNR A~MEINS A~MENGE A~WRTZL A~BUCHM A~WRTBM A~WERKS A~BUDAT B~MTART
       FROM ISEG AS A INNER JOIN MARA AS B ON B~MATNR = A~MATNR
         INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE B~MATNR = A~MATNR  AND B~MEINS = A~MEINS AND A~WERKS = PLANT AND A~BUDAT IN R_DATE AND B~MTART IN M_TYPE AND B~MATNR IN IT_M.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
      EXPORTING
       INPUT = ITS1-MATNR
       IMPORTING
       OUTPUT = ITS1-MATNR.
      SORT ITS1 BY MATNR.
      DELETE ADJACENT DUPLICATES  FROM  ITS1 WHERE MENGE = 0 AND BUCHM = 0.
    LOOP AT ITS1.
         ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
         ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
         SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
         MODIFY ITS1.
    ENDLOOP.
    PERFORM PRN_SMSTOCK_ALV.
    WRITING DATA FROM D TABLES**********
    FORM PG_HEADER.
    WRITE : 'PHYSICAL INVENTORY AUDIT REPORT             PLANT : ', PLANT.
    ENDFORM.
    *&      Form  PRN_SMSTOCK_ALV
          text
    -->  p1        text
    <--  p2        text
    form PRN_SMSTOCK_ALV .
    data: w_title   type lvc_title,
          w_repid   type syrepid,
          w_comm    type slis_formname,
          w_status  type slis_formname,
          x_layout  type slis_layout_alv,
          t_event    type slis_t_event,
          t_fieldcat type slis_t_fieldcat_alv,
          t_sort     type slis_t_sortinfo_alv.
    refresh t_fieldcat.
    refresh t_event.
    refresh t_sort.
    clear x_layout.
    clear w_title.
      perform set_fieldcat2 using:
    1  'MTART'     'MTART'     'MARA'  '15'  space 'MATERIAL TYPE'        space  space  space space space space space space SPACE t_fieldcat 'L' 'C',
    2  'MATNR'     'MATNR'     'MARA'  '13'  space 'MATERIAL NO. '        space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    3  'ITEMDESC'  'MAKTX'     'MAKT'  '25'  space 'MATERIAL DESCRIPTION' space  space  space space space space space space SPACE t_fieldcat 'L' 'C',
    4  'MEINS'     'MEINS'     'MARA'  '5'   space 'UOM'                  space  space  space space space space space space SPACE t_fieldcat 'C' 'C',
    5  'MENGE'     'MENGE'     'ISEG'  '13'  space 'ORG.INV.QTY'          space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    6  'WRTZL'     'WRTZL'     'ISEG'  '13'  space 'ORG.INV.VALUE'        space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    7  'BUCHM'     'BUCHM'     'ISEG'  '13'  space 'PHY.INV.QTY'          space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    8  'WRTBM'     'WRTBM'     'ISEG'  '13'  space 'PHY.INV.VALUE'        space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    9  'DIFFQTY'   'MENGE'     'ISEG'  '13'  space 'DIFF.INV.QTY'         space  space  space space space space space space SPACE t_fieldcat 'R' 'C',
    10 'DIFFVALUE' 'WRTZL'     'ISEG'  '13'  space 'DIFF.INV.VALUE'       space  space  space space space space space space SPACE t_fieldcat SPACE 'P'.
    x_layout-zebra = 'X'.
    perform set_top_page_heading using t_heading t_event.
    perform set_events using t_event.
      w_status = ''.
      w_repid = sy-repid.
      w_comm   = 'USER_COMMAND'.
      call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
          i_callback_program       = w_repid
          it_fieldcat              = t_fieldcat
          i_Callback_top_of_page   = 'Top-of-page'
          is_layout                = x_layout
          it_sort                  = t_sort
          i_callback_pf_status_set = w_status
          i_callback_user_command  = w_comm
          i_save                   = 'X'
          it_events                = t_event
          i_grid_title             = w_title
          tables
          t_outtab                 = ITS1
        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.
    FORM set_fieldcat2 USING
          p_colpos p_fieldname p_ref_fieldname p_ref_tabname
          p_outputlen p_noout
          p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
          p_hotspot p_showasicon p_checkbox p_edit
          p_dosum
          t_fieldcat TYPE slis_t_fieldcat_alv
          P_JUST
          P_FTYPE.
      DATA: wa_fieldcat TYPE slis_fieldcat_alv.
      CLEAR wa_fieldcat.
    General settings
      wa_fieldcat-fieldname = p_fieldname.
    wa_fieldcat-no_zero = 'X'.
      wa_fieldcat-col_pos = p_colpos.
      wa_fieldcat-no_out = p_noout.
      wa_fieldcat-hotspot = p_hotspot.
      wa_fieldcat-checkbox = p_checkbox.
      wa_fieldcat-icon = p_showasicon.
      wa_fieldcat-do_sum = p_dosum.
    Set output length.
      IF NOT p_outputlen IS INITIAL.
        wa_fieldcat-outputlen = p_outputlen.
      ENDIF.
    Set text headers.
    IF NOT p_seltext_m IS INITIAL.
        wa_fieldcat-seltext_m = p_seltext_m.
    ENDIF.
    IF NOT p_seltext_l IS INITIAL.
        wa_fieldcat-seltext_l = p_seltext_l.
    ENDIF.
    IF NOT p_seltext_s IS INITIAL.
        wa_fieldcat-seltext_s = p_seltext_s.
    ENDIF.
      IF NOT p_reptext_ddic IS INITIAL.
        wa_fieldcat-reptext_ddic = p_reptext_ddic.
      ENDIF.
    IF NOT p_ddictxt IS INITIAL.
        wa_fieldcat-ddictxt = p_ddictxt.
    ENDIF.
      IF NOT P_JUST IS INITIAL.
        WA_FIELDCAT-JUST = P_JUST.
      ENDIF.
    Set as editable or not.
      IF NOT p_edit IS INITIAL.
        wa_fieldcat-input     = 'X'.
        wa_fieldcat-edit     = 'X'.
      ENDIF.
      APPEND wa_fieldcat TO t_fieldcat.
    ENDFORM.                   "set_fieldcat2
    ======================== Subroutines called by ALV ================
    *&      Form  top_of_page
          Called on top_of_page ALV event.
          Prints the heading.
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
         exporting
              it_list_commentary = t_heading.
    ENDFORM.
    form set_top_page_heading using t_heading type slis_t_listheader
                                    t_events  type slis_t_event.
    data: x_heading type slis_listheader,
          x_event   type line of slis_t_event.
    Report title
      clear t_heading[].
      clear x_heading.
      x_heading-typ = 'H'.
      x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
      append x_heading to t_heading.
    Plant Name
    clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'PLANT: '.
      x_heading-info = its1-werks.
      append x_heading to t_heading.
    Posting Date
    *clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'POSTING DATE: '.
    x_heading-info = ITS1-BUDAT.
    append x_heading to t_heading.
    Control Date
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'CONTROL No: '.
    x_heading-info = its1-werks.
    append x_heading to t_heading.
    Control date
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'CONTROL DATE: '.
    x_heading-info = its1-werks.
    append x_heading to t_heading.
    User who is running the report
    clear x_heading.
    x_heading-typ = 'S'.
    x_heading-key = 'User: '.
    x_heading-info = sy-uname.
    append x_heading to t_heading.
    Date of execution
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'Date: '.
      write sy-datum to x_heading-info.
      append x_heading to t_heading.
    Time of execution
      clear x_heading.
      x_heading-typ = 'S'.
      x_heading-key = 'Time: '.
      write sy-uzeit to x_heading-info.
      append x_heading to t_heading.
    Top of page event
      x_event-name = slis_ev_top_of_page.
      x_event-form = 'TOP_OF_PAGE'.
      append x_event to t_events.
    endform.
    form set_events using t_events type slis_t_event.
    data: x_event   type line of slis_t_event.
    endform.
    plzzz help me out as it is most urgent to me.
    regards,
    ric.s

  • Alv grid display regarding

    hi all,
    i have an issue in which i fetch data from mkpf and mseg tables into my final internal table everytin is fine and i want to display the data in alv and download it to excel sheet so the problem is while im running the prog im gettin an error in reuse_alv_list_display the code is as follows:
    it_final_tab is my final internal table
    wt_fieldcat is for building field catalog
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM     = wlv_repid
       IS_LAYOUT                         = wls_layout
       IT_FIELDCAT                       = wt_fieldcat[]
       I_DEFAULT                         = 'X'
       I_SAVE                               = 'X'
       IT_EVENTS                         = wlt_events[]
    TABLES
        T_OUTTAB                          = it_final_tab[]
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    the error is "field string is not yet set". its eatin  my brain so can any one plz help me out. Point are rewarded for correct solution
    thanks in advance
    anupama.

    Hi Anupama,
    Fieldcatalog information through your internal table wt_fieldcat[]
    is not being passed properly. That is causing the problem.
    Can I have ur fullcode so that we can check it out. Otherwise refer sample code on ALV grid.
    REPORT  zvenkat_alv_grid.
    TABLES:t001.
    "Types
    TYPES:
          BEGIN OF t_1001,
            bukrs TYPE t001-bukrs,
            butxt TYPE t001-butxt,
            ort01 TYPE t001-ort01,
            land1 TYPE t001-land1,
          END OF t_1001.
    "Work area
    DATA:
          w_t001 TYPE t_1001.
    "Internal table
    DATA:
          i_t001 TYPE STANDARD TABLE OF t_1001.
    " ALV Declarations
    * Types Pools
    TYPE-POOLS:
       slis.
    * Types
    TYPES:
       t_fieldcat         TYPE slis_fieldcat_alv,
       t_events           TYPE slis_alv_event,
       t_layout           TYPE slis_layout_alv.
    * Workareas
    DATA:
       w_fieldcat         TYPE t_fieldcat,
       w_events           TYPE t_events,
       w_layout           TYPE t_layout.
    * Internal Tables
    DATA:
       i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
       i_events           TYPE STANDARD TABLE OF t_events.
    *&    start of selection
    START-OF-SELECTION.
      PERFORM get_data.
    *&    end-of-selection.
    END-OF-SELECTION.
      PERFORM build_fieldcatlog.
      PERFORM build_events.
      PERFORM build_layout.
      PERFORM list_display.
    *&      Form  get_data
    FORM get_data .
      SELECT bukrs
             butxt
             ort01
             land1
        FROM t001
        INTO TABLE i_t001
        UP TO 30 ROWS.
    ENDFORM.                    " get_data
    *&      Form  build_fieldcatlog
    FORM build_fieldcatlog .
      CLEAR:w_fieldcat,i_fieldcat[].
      PERFORM build_fcatalog USING:
               'BUKRS' 'I_T001' 'BUKRS',
               'BUTXT' 'I_T001' 'BUTXT',
               'ORT01' 'I_T001' 'ORT01',
               'LAND1' 'I_T001' 'LAND1'.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  BUILD_FCATALOG
    FORM build_fcatalog USING l_field l_tab l_text.
      w_fieldcat-fieldname      = l_field.
      w_fieldcat-tabname        = l_tab.
      w_fieldcat-seltext_m      = l_text.
      APPEND w_fieldcat TO i_fieldcat.
      CLEAR w_fieldcat.
    ENDFORM.                    " build_fieldcatlog
    *&      Form  build_events
    *       text
    FORM build_events.
      CLEAR :
            w_events, i_events[].
      w_events-name = 'TOP_OF_PAGE'."Event Name
      w_events-form = 'TOP_OF_PAGE'."Callback event subroutine
      APPEND w_events TO i_events.
      CLEAR  w_events.
    ENDFORM.                    "build_events
    *&      Form  build_layout
    FORM build_layout .
      w_layout-colwidth_optimize = 'X'.
      w_layout-zebra             = 'X'.
    ENDFORM.                    " build_layout
    *&      Form  list_display
    FORM list_display .
      DATA:
            l_program TYPE sy-repid.
      l_program = sy-repid.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = l_program
          is_layout          = w_layout
          it_fieldcat        = i_fieldcat
          it_events          = i_events
        TABLES
          t_outtab           = i_t001
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " list_display
    *&      Form  top_of_page
    FORM top_of_page.
      DATA :
       li_header TYPE slis_t_listheader,
       w_header  LIKE LINE OF li_header.
      DATA:
            l_date TYPE char10.
      WRITE sy-datum TO l_date.
      w_header-typ  = 'H'.
      CONCATENATE sy-repid ':' 'From Date' l_date INTO w_header-info SEPARATED BY space.
      APPEND w_header TO li_header.
      CLEAR w_header.
      w_header-typ  = 'S'.
      w_header-info = sy-title.
      APPEND w_header TO li_header.
      CLEAR w_header.
      w_header-typ  = 'A'.
      w_header-info = sy-uname.
      APPEND w_header TO li_header.
      CLEAR w_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = li_header.
    ENDFORM.                    "top_of_page
    I hope that it helps you.
    Regards,
    Venkat.O

  • Regarding logo in alv

    Hi Everyone,
    I want to print a logo in the alv grid display.
    I have used the "reuse_alv_commentary_write" fm.
    The logo is also displaying at the right top corner.
    But I want to get it printed at the left top corner.
    please give me a solution. this is urgent
    With Thanks and Best Regards
    V.Ravishankar

    Hi Ravi,
           You can do that. Try like this,
       Concatenate the Logo name with ASCII values of the Spaces following it(LOGO NAME) and put it in an Field which you are going to pass to that function Module <b>reuse_alv_commentary_write[\b]. ASCII Value for Space can be entered as ALT+255. place around five to 10 spaces and then try it must work i hope.
    Thanks and Regards,
    Prashanth

  • Regarding Total in ALV

    Hi all,
       I am using alv to display Currency fields in a tax return report.........I want to display the sum of a perticular column or all the columns when i press the total button from alv selecting the required columns. But its coming only for first two columns not for all. Please help.
    Regards.

    Hi,
    This ALV program have all the basic report requirements such as page heading, page no, sub-total and a grand total.
    * This is a basic ALV with the followings:-
    * - Page Heading
    * - Page No
    * - Sub-Total
    * - Grand Total
    REPORT ZALV.
    TYPE-POOLS: SLIS.
    DATA: G_REPID LIKE SY-REPID,
    GS_PRINT            TYPE SLIS_PRINT_ALV,
    GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
    GT_EVENTS           TYPE SLIS_T_EVENT,
    GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
    GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
    GT_FIELDCAT         TYPE SLIS_T_FIELDCAT_ALV,
    FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,
    COL_POS TYPE I.
    DATA: BEGIN OF ITAB,
      FIELD1(5) TYPE C,
      FIELD2(5) TYPE C,
      FIELD3(5) TYPE P DECIMALS 2,
    END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB1.
    DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
      INCLUDE STRUCTURE ITAB.
    DATA: END OF ITAB_FIELDCAT.
    * Print Parameters
    PARAMETERS:
                P_PRINT  AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE
                P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO
                P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE
                P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE
                P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO
                P_RESERV TYPE I.                  "NO OF FOOTER LINE
    INITIALIZATION.
    G_REPID = SY-REPID.
    PERFORM PRINT_BUILD    USING GS_PRINT.      "Print PARAMETERS
    START-OF-SELECTION.
    * TEST DATA
    MOVE 'TEST1' TO ITAB1-FIELD1.
    MOVE 'TEST1' TO ITAB1-FIELD2.
    MOVE '10.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    MOVE 'TEST2' TO ITAB1-FIELD1.
    MOVE 'TEST2' TO ITAB1-FIELD2.
    MOVE '20.00' TO ITAB1-FIELD3.
    APPEND ITAB1.
    DO 50 TIMES.
      APPEND ITAB1.
    ENDDO.
    END-OF-SELECTION.
    PERFORM BUILD.
    PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
    PERFORM COMMENT_BUILD  CHANGING GT_LIST_TOP_OF_PAGE.
    PERFORM CALL_ALV.
    FORM BUILD.
    * DATA FIELD CATALOG
    * Explain Field Description to ALV
    DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD1'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    *FIELDCAT_LN-NO_OUT    = 'X'.  "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
    FIELDCAT_LN-KEY       = ' '.   "SUBTOTAL KEY
    FIELDCAT_LN-NO_OUT    = ' '.
    FIELDCAT_LN-SELTEXT_L = 'HEAD1'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME = 'FIELD2'.
    FIELDCAT_LN-TABNAME   = 'ITAB1'.
    FIELDCAT_LN-NO_OUT    = 'X'.
    FIELDCAT_LN-SELTEXT_L = 'HEAD2'.
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    CLEAR FIELDCAT_IN.
    FIELDCAT_LN-FIELDNAME     = 'FIELD3'.
    FIELDCAT_LN-TABNAME       = 'ITAB1'.
    FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
    FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "<- REF TABLE IN THE DICTIONNARY
    FIELDCAT_LN-NO_OUT        = ' '.
    FIELDCAT_LN-DO_SUM        = 'X'.   "SUM UPON DISPLAY
    APPEND FIELDCAT_LN TO GT_FIELDCAT.
    * DATA SORTING AND SUBTOTAL
    DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD1'.
    GS_SORT-SPOS      = 1.
    GS_SORT-UP        = 'X'.
    GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    CLEAR GS_SORT.
    GS_SORT-FIELDNAME = 'FIELD2'.
    GS_SORT-SPOS      = 2.
    GS_SORT-UP        = 'X'.
    *GS_SORT-SUBTOT    = 'X'.
    APPEND GS_SORT TO GT_SORT.
    ENDFORM.
    FORM CALL_ALV.
    * ABAP List Viewer
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    * I_INTERFACE_CHECK = ' '
    * I_BYPASSING_BUFFER =
    * I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = G_REPID
    * I_CALLBACK_PF_STATUS_SET = ' '
    * I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME = 'ITAB1'
    IS_LAYOUT =  GS_LAYOUT
    IT_FIELDCAT = GT_FIELDCAT[]
    * IT_EXCLUDING =
    * IT_SPECIAL_GROUPS =
      IT_SORT = GT_SORT[]
    * IT_FILTER =
    * IS_SEL_HIDE =
    * I_DEFAULT = 'X'
    * I_SAVE = ' '
    * IS_VARIANT =
      IT_EVENTS = GT_EVENTS[]
    * IT_EVENT_EXIT =
      IS_PRINT = GS_PRINT
    * IS_REPREP_ID =
    * I_SCREEN_START_COLUMN = 0
    * I_SCREEN_START_LINE = 0
    * I_SCREEN_END_COLUMN = 0
    * I_SCREEN_END_LINE = 0
    * IMPORTING
    * E_EXIT_CAUSED_BY_CALLER =
    * ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = ITAB1
    EXCEPTIONS
    PROGRAM_ERROR = 1
    OTHERS = 2.
    ENDFORM.
    * HEADER FORM
    FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
    CONSTANTS:
    GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    *GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = LT_EVENTS.
      READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO LT_EVENTS.
      ENDIF.
    * define END_OF_PAGE event
    * READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE
    *                          INTO LS_EVENT.
    * IF SY-SUBRC = 0.
    *   MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
    *   APPEND LS_EVENT TO LT_EVENTS.
    * ENDIF.
    ENDFORM.
    FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
      DATA: GS_LINE TYPE SLIS_LISTHEADER.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'H'.
      GS_LINE-INFO = 'HEADER 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      CLEAR GS_LINE.
      GS_LINE-TYP  = 'S'.
      GS_LINE-KEY  = 'STATUS 1'.
      GS_LINE-INFO = 'INFO 1'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
      GS_LINE-KEY  = 'STATUS 2'.
      GS_LINE-INFO = 'INFO 2'.
      APPEND GS_LINE TO GT_TOP_OF_PAGE.
    * CLEAR GS_LINE.
    * GS_LINE-TYP  = 'A'.
    * GS_LINE-INFO = 'ACTION'.
    * APPEND GS_LINE TO  GT_TOP_OF_PAGE.
    ENDFORM.
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
      WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.
    ENDFORM.
    FORM END_OF_PAGE.
      WRITE at (sy-linsz) sy-pagno CENTERED.
    ENDFORM.
    * PRINT SETTINGS
    FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.
      LS_PRINT-PRINT              = P_PRINT.  "PRINT IMMEDIATE
      LS_PRINT-NO_PRINT_SELINFOS  = P_NOSINF. "NO SELECTION INFO
      LS_PRINT-NO_COVERPAGE       = P_NOCOVE. "NO COVER PAGE
      LS_PRINT-NO_NEW_PAGE        = P_NONEWP.
      LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO
      LS_PRINT-RESERVE_LINES      = P_RESERV.
    ENDFORM.
    *END OF ZALV PROGRAM
    Regards
    Sudheer

  • Regarding alv output

    Hi all,
              My user command is not working in my program.
               When i am clicking in any value on any filed its not working out. I have debuuged also i m not getting.
    <code>
    *& Report  ZVEN_PRA
    REPORT  zven_pra
            NO STANDARD PAGE HEADING
            MESSAGE-ID zven.
    *&Internal table declarations
    DATA:BEGIN OF it_ekko OCCURS 0,
         ebeln TYPE ekko-ebeln, "po number
         bukrs TYPE ekko-bukrs, "company code
         bstyp TYPE ekko-bstyp, "po category
         lifnr TYPE ekko-lifnr, "vendor no
         ekorg TYPE ekko-ekorg, "pur org
         ekgrp TYPE ekko-ekgrp, "pur group
         END OF it_ekko.
    DATA:BEGIN OF it_ekpo OCCURS 0,
          ebelp TYPE ekpo-ebelp,"item of po number
          matnr TYPE ekpo-matnr,"material no
          werks TYPE ekpo-werks,"plant
          menge TYPE ekpo-menge,"po qty
          meins TYPE ekpo-meins,"order unit
          netwr TYPE ekpo-netwr,"net order value
          END OF it_ekpo.
    DATA:v_field(50) TYPE c,
         v_value TYPE ekko-ebeln.
    DATA:v_bukrs TYPE ekko-bukrs.
    TYPE-POOLS:slis.
    DATA:it_fcat TYPE slis_t_fieldcat_alv,
         wa_fcat TYPE slis_fieldcat_alv,
         layout TYPE slis_layout_alv,
         it_header TYPE slis_t_listheader,
         wa_header TYPE slis_listheader.
    DATA : it_event TYPE slis_t_event.
    DATA:it_fcat2 TYPE slis_t_fieldcat_alv,
         wa_fcat2 TYPE slis_fieldcat_alv,
         gs_selfield TYPE slis_selfield,
          g_exit(1) TYPE c,
          gs_private TYPE slis_data_caller_exit.
    *to store the variants.
    data:ws_x_variant like disvariant,
         ws_variant like disvariant,
         ws_save type c,
         ws_exit type c.
    CONSTANTS :
    c_top_of_page  TYPE slis_formname VALUE 'TOP_OF_PAGE',
    c_usercommand  TYPE slis_formname VALUE 'USER_COMMAND',
    c_pf_status    TYPE slis_formname VALUE 'PF_STATUS_SET'.
    DATA:IT_HEADER TYPE SLIS_T_LISTHEADER.
    *&Selection-Screen  declarations
    TABLES:ekko.
    SELECTION-SCREEN BEGIN OF BLOCK e WITH FRAME TITLE text-002.
    SELECT-OPTIONS:s_bukrs FOR ekko-bukrs,
                   s_lifnr FOR ekko-lifnr.
    SELECTION-SCREEN END OF BLOCK e.
    *validate the company code
    AT SELECTION-SCREEN.
      PERFORM validate_code.
    START-OF-SELECTION.
      PERFORM get_data_ekko.
      PERFORM build_field_catalog.
    END-OF-SELECTION.
      PERFORM get_layout.
      PERFORM fill_event.
      perform fill_variant.
      PERFORM print_data_ekko.
    *&      Form  get_data_ekko
          text
    FORM get_data_ekko .
      SELECT ebeln
             bukrs
             bstyp
             lifnr
             ekorg
             ekgrp
        FROM ekko
        INTO TABLE it_ekko
        WHERE bukrs IN s_bukrs
        AND lifnr IN s_lifnr.
      IF sy-subrc = 0.
        SORT it_ekko BY ebeln.
      ENDIF.
    ENDFORM.                    " get_data_ekko
    *&      Form  print_data_ekko
          text
    FORM print_data_ekko .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = TOP_1
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
      I_BACKGROUND_ID                   = ' '
         i_grid_title                      = 'ALVREPORT'
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
        is_layout                         = layout
         it_fieldcat                       = it_fcat[]
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
      IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
         it_events                         = it_event[]
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
        TABLES
          t_outtab                          = it_ekko
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
    *loop at it_ekko.
    *write:/ it_ekko-ebeln hotspot on,15 it_ekko-bukrs,25 it_ekko-bstyp,
        35 it_ekko-lifnr,45 it_ekko-ekorg,55 it_ekko-ekgrp.
    hide it_ekko-ebeln.
    *endloop.
    ENDFORM.                    " print_data_ekko
    *&      Form  get_data_ekpo
          text
    FORM get_data_ekpo .
      IF NOT it_ekko[] IS INITIAL.
        SELECT ebelp
               matnr
               werks
               menge
               meins
               netwr
          FROM ekpo
          INTO TABLE it_ekpo
          WHERE ebeln = it_ekko-ebeln.
      ENDIF.
    ENDFORM.                    " get_data_ekpo
    *&      Form  validate_code
          text
    FORM validate_code .
      IF NOT s_bukrs[] IS INITIAL.
        SELECT SINGLE bukrs
               INTO v_bukrs
               FROM ekko
               WHERE bukrs IN s_bukrs.
        IF sy-subrc <> 0.
          MESSAGE e001. "invalid company code
        ENDIF.
      ENDIF.
    ENDFORM.                    " validate_code
    *&      Form  build_field_catalog
          text
    FORM build_field_catalog .
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
    wa_fcat-emphasize = 'C112'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'EBELN'.
      wa_fcat-col_pos = '1'.
      wa_fcat-seltext_l = 'PO NUMBER'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
      wa_fcat-emphasize = 'C212'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'BUKRS'.
      wa_fcat-col_pos = '2'.
      wa_fcat-seltext_l = 'COM CODE'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
      wa_fcat-emphasize = 'C312'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'BSTYP'.
      wa_fcat-col_pos = '3'.
      wa_fcat-seltext_l = 'PO CATEGORY'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
    wa_fcat-emphasize = 'C412'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'LIFNR'.
      wa_fcat-col_pos = '4'.
      wa_fcat-seltext_l = 'VENDOR NUMBER'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
    wa_fcat-emphasize = 'C512'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'EKORG'.
      wa_fcat-col_pos = '5'.
      wa_fcat-seltext_l = 'PO ORGAN'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    *CLEAR IT_FCAT.
    wa_fcat-emphasize = 'C612'.
      wa_fcat-tabname = 'IT_EKKO'.
      wa_fcat-fieldname = 'EBGRP'.
      wa_fcat-col_pos = '6'.
      wa_fcat-seltext_l = 'PO GROUP'.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    ENDFORM.                    " build_field_catalog
    *&      Form  get_layout
          text
    FORM get_layout .
      layout-zebra = 'X'.
    ENDFORM.                    " get_layout
    *&      Form  get_headerin_alv
          text
         -->P_IT_HEADER  text
    FORM top_of_page .
      DATA:it_header TYPE slis_t_listheader,
           wa_header TYPE slis_listheader.
      CLEAR wa_header.
      wa_header-typ = 'H'.
      wa_header-info = 'venkatakrishna'.
      APPEND wa_header TO it_header.
      CLEAR wa_header.
      wa_header-typ = 'S'.
      wa_header-info = 'SOFTWARE ENGINEER'.
      APPEND wa_header TO it_header.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_header
      I_LOGO                   = I_LOGO
      I_END_OF_LIST_GRID       = I_END_OF_LIST_GRID
      I_ALV_FORM               = I_ALV_FORM
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  user_command
          text
         -->RF_UCOMM     text
         -->RS_SELFIELD  text
    FORM user_command USING rf_ucomm    TYPE sy-ucomm
                            rs_selfield TYPE slis_selfield.
      CASE rf_ucomm.
        WHEN '&IC1'.
          READ TABLE it_ekko INDEX rs_selfield-tabindex.
          IF sy-subrc = 0.
            PERFORM get_data_ekpo.
        PERFORM PRINT_DATA_EKPO.
            PERFORM build_field_catalog2.
            PERFORM print_field_data.
          ENDIF.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELD_CATALOG2
          text
    FORM build_field_catalog2 .
      CLEAR: it_fcat,wa_fcat.
      CLEAR: wa_fcat2,it_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'EBELP'.
      wa_fcat2-col_pos = '1'.
      wa_fcat2-seltext_l = 'item of po number'.
      APPEND wa_fcat2 TO it_fcat2.
      CLEAR wa_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'MATNR'.
      wa_fcat2-col_pos = '2'.
      wa_fcat2-seltext_l = 'material no'.
      APPEND wa_fcat2 TO it_fcat2.
      CLEAR wa_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'WERKS'.
      wa_fcat2-col_pos = '3'.
      wa_fcat2-seltext_l = 'PLANT'.
      APPEND wa_fcat2 TO it_fcat2.
      CLEAR wa_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'MENGE'.
      wa_fcat2-col_pos = '4'.
      wa_fcat2-seltext_l = 'PO QTY'.
      APPEND wa_fcat2 TO it_fcat2.
      CLEAR wa_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'MEINS'.
      wa_fcat2-col_pos = '5'.
      wa_fcat2-seltext_l = 'ORDER UNIT'.
      APPEND wa_fcat2 TO it_fcat2.
      CLEAR wa_fcat2.
      wa_fcat2-tabname = 'IT_EKPO'.
      wa_fcat2-fieldname = 'NETWR'.
      wa_fcat2-col_pos = '6'.
      wa_fcat2-seltext_l = 'net order value'.
      APPEND wa_fcat2 TO it_fcat2.
    ENDFORM.                    " BUILD_FIELD_CATALOG2
    *&      Form  PRINT_FIELD_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM print_field_data .
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = sy-repid
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = 'EKPO'
      I_BACKGROUND_ID                   = ' '
         i_grid_title                      = 'INTERACTIVE REPORT'
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
      IS_LAYOUT                         = IS_LAYOUT
         it_fieldcat                       = it_fcat2
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
      IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
       IS_VARIANT                        = ws_x_variant
      IT_EVENTS                         = IT_EVENTS
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
        TABLES
          t_outtab                          = it_ekpo
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    *USE THE POPUP_TO_CONFIRM FUNCTION MODULE FOR SELECT
    CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
       EXPORTING
      I_TITLE                       = 'venkat'
      I_SELECTION                   = 'X'
      I_ALLOW_NO_SELECTION          = I_ALLOW_NO_SELECTION
      I_ZEBRA                       = 'X'
      I_SCREEN_START_COLUMN         = 0
      I_SCREEN_START_LINE           = 0
      I_SCREEN_END_COLUMN           = 0
      I_SCREEN_END_LINE             = 0
      I_CHECKBOX_FIELDNAME          = I_CHECKBOX_FIELDNAME
      I_LINEMARK_FIELDNAME          = I_LINEMARK_FIELDNAME
      I_SCROLL_TO_SEL_LINE          = 'X'
         i_tabname                     = 'EKPO'
        i_structure_name              = 'EKPO'
        it_fieldcat                   = it_fcat2
      IT_EXCLUDING                  = IT_EXCLUDING
      I_CALLBACK_PROGRAM            = I_CALLBACK_PROGRAM
      I_CALLBACK_USER_COMMAND       = I_CALLBACK_USER_COMMAND
      is_private                    = gs_private
    IMPORTING
        es_selfield                   = gs_selfield
        e_exit                        = g_exit
       TABLES
         t_outtab                      = IT_EKPO
    EXCEPTIONS
      PROGRAM_ERROR                 = 1
      OTHERS                        = 2
    ENDFORM.                    " PRINT_FIELD_DATA
    *&      Form  fill_event
          text
    -->  p1        text
    <--  p2        text
    FORM fill_event .
      DATA : st_event TYPE slis_alv_event.
    *- Clear.
      CLEAR : st_event, it_event[].
    *- Local variable
      DATA : l_tabix TYPE sy-tabix.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    *- Read event table
      READ TABLE it_event WITH KEY name = slis_ev_top_of_page
                           INTO st_event.
    *- Top of page event
    *- Clear
      CLEAR l_tabix.
      l_tabix = sy-tabix.
    *- Check subrc
      IF sy-subrc = 0.
        st_event-form = c_top_of_page.
    *- Modify
        MODIFY it_event FROM st_event INDEX l_tabix.
    *- Clear
        CLEAR st_event.
      ENDIF.
    *- User command event
    *- Read event table
      READ TABLE it_event WITH KEY name = slis_ev_user_command
                           INTO st_event.
    *- Clear
      CLEAR l_tabix.
      l_tabix = sy-tabix.
    *- Check subrc
      IF sy-subrc = 0.
        st_event-form = c_usercommand.
    *- Modify
        MODIFY it_event FROM st_event INDEX l_tabix.
    *- Clear
        CLEAR st_event.
      ENDIF.
    ENDFORM.                    " fill_event
    *&      Form  GET_HEADER
          text
    *&      Form  fill_variant
          text
    form fill_variant .
    ws_x_variant-report = 'ZVEN_PRA'.
    endform.                    " fill_variant
    </code>
    Thanks,
    suraj

    Thank u frnds i m getting it now.
    I M GETTING PROBLEM IN THIS PROGRAM AGAIN.
    <CODE>Report Z_50840_ALV
           Line-size  80
           Line-count 64
           Message-id ZZ
           No Standard Page Heading.
    Copyright statement                                                  *
    @ copyright 2007 by Intelligroup Inc.                                *
    Program Details                                                      *
    Program Name: Z_50840_ALV
    Date        : 19.07.2007
    Author      : Vasudevaraman V
    Description : Test Program
    Transport No:
    Change Log                                                           *
    Date        :
    Author      :
    Description :
    Transport No:
    Tables                                                               *
    Tables: vbrk.
    Type Pools                                                           *
    Type-Pools: SLIS.
    Variables                                                            *
    Data: GV_REPID TYPE SY-REPID.
    Structures                                                           *
    Data:   BEGIN OF GIT_VBRK OCCURS 0,
              VBELN LIKE VBRK-VBELN,  "Billing Document
              FKART LIKE VBRK-FKART,  "Billing Type
              KNUMV LIKE VBRK-KNUMV,  "Number of the document condition
              BUKRS LIKE VBRK-BUKRS,  "Company code
              NETWR LIKE VBRK-NETWR,  "Net value in document currency
              WAERK LIKE VBRK-WAERK,  "SD document currency in basic list
              END OF GIT_VBRK,
            GIT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
            WA_FCAT TYPE slis_fieldcat_alv,
            GIT_EVENTS TYPE SLIS_T_EVENT,
            WA_EVENTS TYPE SLIS_ALV_EVENT.
    Field Symbols                                                        *
    Field-symbols: <fs_xxxx>.
    Selection Screen                                                     *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN.
    PARAMETERS: LISTDISP RADIOBUTTON GROUP G1,
                GRIDDISP RADIOBUTTON GROUP G1 DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK B1.
    Initialization                                                       *
    Initialization.
      GV_REPID = SY-REPID.
    At Selection Screen                                                  *
    At selection-screen.
    Start Of Selection                                                   *
    Start-of-selection.
    SET PF-STATUS 'ABC'(001).
    PERFORM GET_BILLING_DETAILS.
    PERFORM FIELD_CATALOGUE.
    PERFORM GET_EVENTS.
    End Of Selection                                                     *
    End-of-selection.
    PERFORM DISPLAY_BILLING_DETAILS.
    Top Of Page                                                          *
    Top-of-page.
    End Of Page                                                          *
    End-of-page.
    *&      Form  GET_BILLING_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM GET_BILLING_DETAILS .
    SELECT VBELN
           FKART
           KNUMV
           BUKRS
           NETWR
           WAERK
         FROM VBRK
         INTO TABLE GIT_VBRK
         WHERE VBELN IN S_VBELN.
        IF SY-SUBRC = 0.
          SORT GIT_VBRK BY VBELN.
        ENDIF.
    ENDFORM.                    " GET_BILLING_DETAILS
    *&      Form  FIELD_CATALOGUE
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_CATALOGUE .
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
       I_PROGRAM_NAME               = GV_REPID
       I_INTERNAL_TABNAME           = 'GIT_VBRK'
      I_STRUCTURE_NAME             = I_STRUCTURE_NAME
      I_CLIENT_NEVER_DISPLAY       = 'X'
       I_INCLNAME                   = GV_REPID
       I_BYPASSING_BUFFER           = 'X'
       I_BUFFER_ACTIVE              = ' '
      CHANGING
        CT_FIELDCAT                  = GIT_FCAT
    EXCEPTIONS
       INCONSISTENT_INTERFACE       = 1
       PROGRAM_ERROR                = 2
       OTHERS                       = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " FIELD_CATALOGUE
    *&      Form  DISPLAY_BILLING_DETAILS
          text
    -->  p1        text
    <--  p2        text
    FORM DISPLAY_BILLING_DETAILS .
    IF LISTDISP = 'X'.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
       I_BYPASSING_BUFFER             = 'X'
       I_BUFFER_ACTIVE                = ' '
       I_CALLBACK_PROGRAM             = GV_REPID
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
      I_STRUCTURE_NAME               = I_STRUCTURE_NAME
      IS_LAYOUT                      = IS_LAYOUT
      IT_FIELDCAT                    = GIT_FCAT
      IT_EXCLUDING                   = IT_EXCLUDING
      IT_SPECIAL_GROUPS              = IT_SPECIAL_GROUPS
      IT_SORT                        = IT_SORT
      IT_FILTER                      = IT_FILTER
      IS_SEL_HIDE                    = IS_SEL_HIDE
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     = IS_VARIANT
      IT_EVENTS                      = GIT_EVENTS
      IT_EVENT_EXIT                  = IT_EVENT_EXIT
      IS_PRINT                       = IS_PRINT
      IS_REPREP_ID                   = IS_REPREP_ID
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      IR_SALV_LIST_ADAPTER           = IR_SALV_LIST_ADAPTER
      IT_EXCEPT_QINFO                = IT_EXCEPT_QINFO
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER         = ES_EXIT_CAUSED_BY_USER
      TABLES
        T_OUTTAB                       = GIT_VBRK
    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.
    ELSE.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
       I_BYPASSING_BUFFER                = 'X'
       I_BUFFER_ACTIVE                   = ' '
       I_CALLBACK_PROGRAM                = GV_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
       I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
      I_CALLBACK_TOP_OF_PAGE            = ' '
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  = I_STRUCTURE_NAME
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      = I_GRID_TITLE
      I_GRID_SETTINGS                   = I_GRID_SETTINGS
      IS_LAYOUT                         = IS_LAYOUT
       IT_FIELDCAT                       = GIT_FCAT
      IT_EXCLUDING                      = IT_EXCLUDING
      IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
      IT_SORT                           = IT_SORT
      IT_FILTER                         = IT_FILTER
      IS_SEL_HIDE                       = IS_SEL_HIDE
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        = IS_VARIANT
       IT_EVENTS                         = GIT_EVENTS
      IT_EVENT_EXIT                     = IT_EVENT_EXIT
      IS_PRINT                          = IS_PRINT
      IS_REPREP_ID                      = IS_REPREP_ID
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   = IT_ALV_GRAPHICS
      IT_HYPERLINK                      = IT_HYPERLINK
      IT_ADD_FIELDCAT                   = IT_ADD_FIELDCAT
      IT_EXCEPT_QINFO                   = IT_EXCEPT_QINFO
      IR_SALV_FULLSCREEN_ADAPTER        = IR_SALV_FULLSCREEN_ADAPTER
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           = E_EXIT_CAUSED_BY_CALLER
      ES_EXIT_CAUSED_BY_USER            = ES_EXIT_CAUSED_BY_USER
      TABLES
        T_OUTTAB                          = GIT_VBRK
    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.
    ENDIF.
    ENDFORM.                    " DISPLAY_BILLING_DETAILS
    *&      Form  GET_EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM GET_EVENTS .
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
       I_LIST_TYPE           = 0
    IMPORTING
       ET_EVENTS             = GIT_EVENTS
    EXCEPTIONS
       LIST_TYPE_WRONG       = 1
       OTHERS                = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT GIT_EVENTS INTO WA_EVENTS.
      CASE WA_EVENTS-NAME.
        WHEN 'USER_COMMAND'.
          WA_EVENTS-FORM = 'USER_COMMAND'.
          ENDCASE.
       MODIFY GIT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
    ENDLOOP.
    ENDFORM.                    " GET_EVENTS
    FORM USER_COMMAND.
      WRITE :/ 'USER_COMMAND'.
    ENDFORM.</CODE>.
    REGARDS,
    SURAJ

  • Trying to add header using REUSE_ALV_COMMENTARY_WRITE', it is showing blank

    Hi,
    I am trying to add header to my ALV grid report using the FM REUSE_ALV_COMMENTARY_WRITE'
    It is displaying a blank window.
    My code is
    *& Report  YGTSPRODUCT
    *& Author : Krishna Chaitanya Nandimandalam
    *& Desc :   Display Products by Product Characteristics
    REPORT  YGTSPRODUCT.
    *& Structure declarations
    type-pools : slis.
    TYPES  : BEGIN OF TY_CTSNUMC,
             GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    TYPE /SAPSLL/CTSNUMC-GUID_MOBJ,    "Primary Key as GUID in "RAW" Format
             STCTS        TYPE /SAPSLL/CTSNUMC-STCTS,        "Numbering Scheme for Customs Tariff System
             CCNGN        TYPE /SAPSLL/CTSNUMC-CCNGN,        "Number (Generic/Structured)
             CRTSP        TYPE /SAPSLL/PRGEN-CRTSP,         "UTC Time Stamp When Object Was Added
             CHTSP        TYPE /SAPSLL/PRGEN-CHTSP,          "UTC Time Stamp When Object Was Changed
           END OF TY_CTSNUMC.
    TEST --CREATING ANOTHER STUCTURE TO GET THE COMMON FIELD FOR GUID_PR
    TYPES : BEGIN OF TY_PRCTSC,
            GUID_PRCTSC  TYPE /SAPSLL/PRCTSC-GUID_PRCTSC,   "Primary Key as GUID in "RAW" Format
            GUID_PR      TYPE /SAPSLL/PRCTSC-GUID_PR,  "Primary Key as GUID in "RAW" Format
            STCTS        TYPE /SAPSLL/PRCTSC-STCTS,   "Numbering Scheme for Customs Tariff System
            GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
            END OF TY_PRCTSC.
    TYPES : BEGIN OF TY_PRGEN,
          GUID_PRGEN TYPE  /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
          GUID_PR    TYPE  /SAPSLL/PR-GUID_PR,       "Primary Key as GUID in "RAW" Format
          ATTR20A    TYPE  /SAPSLL/PRGEN-ATTR20A,    "Substance ID
          ATTR05A    TYPE  /SAPSLL/PRGEN-ATTR05A,    "Materail Type
          ATTR10A    TYPE  /SAPSLL/PRGEN-ATTR10A,    "Materail Group
          ATTR05B    TYPE  /SAPSLL/PRGEN-ATTR05B,    "Sub-Family
           END OF TY_PRGEN.
    TYPES : BEGIN OF TY_PNTPR,
           GUID_PR TYPE /SAPSLL/PR-GUID_PR,
           PRVSY TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
           GRVSY TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYSTEM GROUP
           END OF TY_PNTPR.
    *TYPES : D_PSUI TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA.  "PRODUCT STATUS
    *TYPES : BEGIN OF D_CORSTA,
           GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
           QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
           CHTSP TYPE /SAPSLL/CORSTA-CHTSP,
           END OF D_CORSTA.
    >PRODUCT STAUS
    *DATA  : BEGIN OF T_CORSTA OCCURS 0,
           GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
           QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
           END OF T_CORSTA.
    TYPES : BEGIN OF TY_PR,
            GUID_PR TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
            CRTSP   TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
            CHTSP   TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
            END OF TY_PR.
    TYPES : BEGIN OF TY_PRT,
           GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
           PRTXT   TYPE /SAPSLL/PRT-PRTXT,    "Materail description
            END OF TY_PRT.
    TYPES : BEGIN OF TY_FINAL,
    *T_PRCTSC
             GUID_PRCTSC  TYPE /SAPSLL/PRCTSC-GUID_PRCTSC,   "Primary Key as GUID in "RAW" Format
             GUID_PR      TYPE /SAPSLL/PRCTSC-GUID_PR,  "Primary Key as GUID in "RAW" Format
             STCTS        TYPE /SAPSLL/PRCTSC-STCTS,   "Numbering Scheme for Customs Tariff System
             GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
    *T_CTSNUMC
            GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    TYPE /SAPSLL/CTSNUMC-GUID_MOBJ,    "Primary Key as GUID in "RAW" Format
            STCTS        TYPE /SAPSLL/CTSNUMC-STCTS,        "Numbering Scheme for Customs Tariff System
             CCNGN        TYPE /SAPSLL/CTSNUMC-CCNGN,        "Number (Generic/Structured)
            CRTSP        TYPE /SAPSLL/PRGEN-CRTSP,         "UTC Time Stamp When Object Was Added
            CHTSP        TYPE /SAPSLL/PRGEN-CHTSP,          "UTC Time Stamp When Object Was Changed
    *T_PRGEN
             GUID_PRGEN TYPE  /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
            GUID_PR    TYPE  /SAPSLL/PR-GUID_PR,       "Primary Key as GUID in "RAW" Format
             ATTR20A    TYPE  /SAPSLL/PRGEN-ATTR20A,    "Substance ID
             ATTR05A    TYPE  /SAPSLL/PRGEN-ATTR05A,    "Materail Type
             ATTR10A    TYPE  /SAPSLL/PRGEN-ATTR10A,    "Materail Group
             ATTR05B    TYPE  /SAPSLL/PRGEN-ATTR05B,    "Sub-Family
    *T_PNTPR
            GUID_PR    TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
             PRVSY      TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
             GRVSY      TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYSTEM GROUP
    T_PR
           GUID_PR TYPE /SAPSLL/PR-GUID_PR,  "Primary Key as GUID in "RAW" Format
            CRTSP   TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
            CHTSP   TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
    *T_PRT
            GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
             PRTXT   TYPE /SAPSLL/PRT-PRTXT,    "Materail description
            END OF TY_FINAL.
    *& INTERNAL TABLE AND WORK AREA DECLARATIONS
    DATA :
          T_CTSNUMC TYPE STANDARD TABLE OF TY_CTSNUMC INITIAL SIZE 0,
          T_PRCTSC   TYPE STANDARD TABLE OF TY_PRCTSC INITIAL SIZE 0, "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
          T_PRGEN TYPE STANDARD TABLE OF TY_PRGEN INITIAL SIZE 0,
          T_PNTPR TYPE STANDARD TABLE OF TY_PNTPR INITIAL SIZE 0,
          T_PR TYPE STANDARD TABLE OF TY_PR INITIAL SIZE 0,
          T_PRT TYPE STANDARD TABLE OF TY_PRT INITIAL SIZE 0,
         T_CORSTA TYPE STANDARD TABLE OF D_CORSTA INITIAL SIZE 0,
          T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 0.
    DATA :
           WA_CTSNUMC TYPE TY_CTSNUMC,
           WA_PRCTSC   TYPE TY_PRCTSC,   "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
           WA_PRGEN   TYPE TY_PRGEN,
           WA_PNTPR  TYPE TY_PNTPR,
           WA_PR TYPE TY_PR,
           WA_PRT TYPE TY_PRT,
          WA_CORSTA TYPE D_CORSTA,
           WA_FINAL TYPE TY_FINAL.
    *& ALV DATA DECLARATIONS
    DATA : lt_fieldcat TYPE slis_t_fieldcat_alv,
           lw_fieldcat LIKE LINE OF lt_fieldcat,
           lt_fieldcat1 TYPE slis_t_fieldcat_alv,
           lw_fieldcat1 LIKE LINE OF lt_fieldcat,
           lt_listheader TYPE slis_t_listheader,
           lw_listheader LIKE LINE OF lt_listheader,       lt_events TYPE slis_t_event,
           lw_events LIKE LINE OF lt_events.
    *& DATA DECLARATIONS FOR SELECTION SCREEN
    DATA : G_STCTS   TYPE /SAPSLL/CTSNUMC-STCTS, "NUMBER SCHEME
           G_ATTR20A TYPE /SAPSLL/PRGEN-ATTR20A, "SUBSTANCE ID
           G_PRVSY   TYPE /SAPSLL/PNTPR-PRVSY,   "R3 MATERIAL NUMBER
           G_GRVSY   TYPE /SAPSLL/PNTPR-GRVSY,   "LOGICAL SYS GROUP
         G_QSTA    TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA, "PRODUCT STATUS
           G_CORSTA  TYPE /SAPSLL/CORSTA-QUAL_STA,  "PRODUCT STATUS
           G_CRTSP   TYPE /SAPSLL/PR-CRTSP,      "PRODUCT CREATED ON
           G_CHSTP   TYPE /SAPSLL/PR-CHTSP.      "PRODUCT CHANGED ON
    *& SELECTION-SCREEN DECLARATIONS
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS : S_STCTS FOR G_STCTS OBLIGATORY,      "NUMBER SCHEME
                     S_AT20A FOR G_ATTR20A,    "SUBSTANCE ID
                     S_PRVSY FOR G_PRVSY,      "R3 MATERIAL NUMBER
                     S_GRVSY FOR G_GRVSY,      "LOGICAL SYS GROUP
                    S_QSTA FOR G_QSTA,        "PRODUCT STATUS
                     S_CORSTA FOR G_CORSTA,    "PRODUCT STATUS
                     S_CRTSP FOR G_CRTSP,      "PRODUCT CREATED ON
                     S_CHSTP FOR G_CHSTP.      "PRODUCT CHANGED ON
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME. " TITLE. " TEXT-002.
    PARAMETERS : BOTH  RADIOBUTTON GROUP RG1,
                 EXICLASS RADIOBUTTON GROUP RG1.
    SELECTION-SCREEN END OF BLOCK B2.
    *& INITIALIZATION
    INITIALIZATION .
      CLEAR : WA_CTSNUMC,
              WA_PRCTSC,
              WA_PRGEN,
              WA_PNTPR,
              WA_PR,
              WA_PRT,
              WA_FINAL.
      REFRESH : T_CTSNUMC,
                T_PRCTSC,
                T_PRGEN,
                T_PNTPR,
                T_PR,
                T_PRT,
                T_FINAL.
    *&      START OF SELECTION
    START-OF-SELECTION.
      LW_EVENTS-NAME = 'TOP_OF_PAGE' .
      LW_EVENTS-FORM = 'SUB' .
      APPEND LW_EVENTS TO LT_EVENTS .  PERFORM LIST_HEADER.
    IF BOTH EQ 'X'.
      PERFORM VALIDATE_NSCHEME.
      PERFORM GET_DATA.
      PERFORM BUILD_FIELDCAT.
      PERFORM LIST_HEADER.
    PERFORM f_events CHANGING lt_events.
      PERFORM DISP_ALV_DATA.
    ENDIF.
    *&      Form  VALIDATE_NSCHEME
    *&            VALIDATE NUMBER SCHEME
    FORM VALIDATE_NSCHEME .
      DATA : L_STCTS TYPE /SAPSLL/CTSNUMC-STCTS.
      SELECT SINGLE STCTS FROM /SAPSLL/CTSNUMC INTO L_STCTS
            WHERE STCTS IN S_STCTS .
      IF SY-SUBRC <> 0.
        MESSAGE 'Invalid Numbering Scheme for Customs Tariff System'
               TYPE 'E'.
      ENDIF .
    ENDFORM.                    " VALIDATE_NSCHEME
    *&      Form  GET_DATA
         GET DATA INTO FINAL TABLE
    FORM GET_DATA .
      SELECT GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
             GUID_MOBJ    "Primary Key of Main Object
             STCTS        "Numbering Scheme for Customs Tariff System
             CCNGN        "Number (Generic/Structured)
             CRTSP        "UTC Time Stamp When Object Was Added
             CHTSP        "UTC Time Stamp When Object Was Changed
             FROM /SAPSLL/CTSNUMC
             INTO TABLE T_CTSNUMC
             WHERE STCTS IN S_STCTS.
    *DELETE ADJACENT DUPLICATES FROM T_CTSNUMC COMPARING GUID_CTSNUMC.
      IF T_CTSNUMC IS NOT INITIAL.
    GET GUID_PR FOR THE CORRESPONDING GUID_CTSNUMC
        SELECT GUID_PRCTSC  "Primary Key as GUID in "RAW" Format
               GUID_PR      "Primary Key as GUID in "RAW" Format
               STCTS        "Numbering Scheme for Customs Tariff System
               GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
               FROM /SAPSLL/PRCTSC
               INTO TABLE T_PRCTSC
               for all entries in t_ctsnumc
               WHERE GUID_CTSNUMC EQ T_CTSNUMC-GUID_CTSNUMC.
    IF T_PRCTSC IS NOT INITIAL.
    GET FIELDS FROM PRGEN BASED ON THE GUID_PR
        SELECT GUID_PRGEN "Primary Key as GUID in "RAW" Format
               GUID_PR    "Primary Key as GUID in "RAW" Format
               ATTR20A    "SUBSTANCE ID
               ATTR05A    "Materail Type
               ATTR10A    "Materail Group
               ATTR05B    "Sub-Family
               FROM /SAPSLL/PRGEN
               INTO TABLE T_PRGEN
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
    GET FIELDS FROM PNTPR BASED ON THE GUID_PR
        SELECT GUID_PR    "Primary Key as GUID in "RAW" Format
               PRVSY      "R3 MATERIAL NUMBER
               GRVSY      "LOGICAL SYSTEM GROUP
               FROM /SAPSLL/PNTPR
               INTO TABLE T_PNTPR
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
    GET CORSTA-QUAL_STA FOR STATUS CATEGORY BESED ON THE T_CTSNUMC-GUID_MOBJ
    *SELECT GUID_MOBJ
          QUAL_STA
          FROM /SAPSLL/CORSTA
          INTO TABLE T_CORSTA
          FOR ALL ENTRIES IN T_CTSNUMC
          WHERE GUID_MOBJ EQ T_CTSNUMC-GUID_MOBJ.
    MISSING FIELD >>>>>>>PRODUCT STATUS
    GET CRSTP CHSTP FROM PR BASED ON GUID_PR
        SELECT GUID_PR   "Primary Key as GUID in "RAW" Format
               CRTSP     "PRODUCT CREATED ON
               CHTSP     "PRODUCT CHANGED ON
               FROM /SAPSLL/PR
               INTO TABLE T_PR
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PR COMPARING GUID_PR.
    GET PRTXT FROM PRT BASED ON GUID_PR
        SELECT GUID_PR "Primary Key as GUID in "RAW" Format
               PRTXT   "MATERIAL DESCRIPTION
               FROM /SAPSLL/PRT
               INTO TABLE T_PRT
               FOR ALL ENTRIES IN T_PRCTSC
               WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
    *DELETE ADJACENT DUPLICATES FROM T_PRT COMPARING GUID_PR.
       ENDIF.
      ENDIF.
    FILLING DATA INTO T_FINAL
    REFRESH T_FINAL.
        LOOP AT T_PRCTSC INTO WA_PRCTSC.
          WA_FINAL-GUID_PRCTSC  = WA_PRCTSC-GUID_PRCTSC.
          WA_FINAL-GUID_PR      = WA_PRCTSC-GUID_PR.
          WA_FINAL-STCTS        = WA_PRCTSC-STCTS.
          WA_FINAL-GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
    READ TABLE T_CTSNUMC INTO WA_CTSNUMC WITH KEY GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
    IF SY-SUBRC = 0.
       WA_FINAL-GUID_CTSNUMC = WA_CTSNUMC-GUID_CTSNUMC.
         WA_FINAL-GUID_MOBJ    = WA_CTSNUMC-GUID_MOBJ.
       WA_FINAL-STCTS        = WA_CTSNUMC-STCTS.
         WA_FINAL-CCNGN        = WA_CTSNUMC-CCNGN.
       WA_FINAL-CRTSP        = WA_CTSNUMC-CRTSP.
       WA_FINAL-CHTSP        = WA_CTSNUMC-CHTSP.
    ENDIF.
        READ TABLE T_PRGEN INTO WA_PRGEN WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
          WA_FINAL-GUID_PRGEN = WA_PRGEN-GUID_PRGEN.
          WA_FINAL-GUID_PR    = WA_PRGEN-GUID_PR.
          WA_FINAL-ATTR20A    = WA_PRGEN-ATTR20A.
          WA_FINAL-ATTR05A    = WA_PRGEN-ATTR05A.
          WA_FINAL-ATTR10A    = WA_PRGEN-ATTR10A.
          WA_FINAL-ATTR05B    = WA_PRGEN-ATTR05B.
        ENDIF.
        READ TABLE T_PNTPR INTO WA_PNTPR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR    = WA_PNTPR-GUID_PR.
          WA_FINAL-PRVSY      = WA_PNTPR-PRVSY.
          WA_FINAL-GRVSY      = WA_PNTPR-GRVSY.
        ENDIF.
        READ TABLE T_PR INTO WA_PR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR = WA_PR-GUID_PR.
          WA_FINAL-CRTSP   = WA_PR-CRTSP.
          WA_FINAL-CHTSP   = WA_PR-CHTSP.
        ENDIF.
        READ TABLE T_PRT INTO WA_PRT WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
        IF SY-SUBRC = 0.
         WA_FINAL-GUID_PR = WA_PRT-GUID_PR.
          WA_FINAL-PRTXT   = WA_PRT-PRTXT.
        ENDIF.
        APPEND WA_FINAL TO T_FINAL.
       DELETE ADJACENT DUPLICATES FROM T_FINAL COMPARING ATTR20A.
        CLEAR WA_FINAL.
      ENDLOOP.
    ENDFORM.                    " GET_D
    *&      Form  BUILD_FIELDCAT
          text
    -->  p1        text
    <--  p2        text
    FORM BUILD_FIELDCAT .
    REFRESH LT_FIELDCAT.
      lw_fieldcat-col_pos = 1.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR20A'.
      lw_fieldcat-seltext_m = 'SUBSTANCE ID'.
      lw_fieldcat-outputlen = '15'.
      lw_fieldcat-FIX_COLUMN = 'X'.
    lw_fieldcat-KEY = 'X'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 2.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'PRVSY'.
      lw_fieldcat-seltext_m = 'R3 MAT NBR'.
      lw_fieldcat-outputlen = '14'.
      lw_fieldcat-FIX_COLUMN = 'X'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 3.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'PRTXT'.
      lw_fieldcat-seltext_m = 'MAT DESCRIPTION'.
      lw_fieldcat-outputlen = '19'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 4.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'GRVSY'.
      lw_fieldcat-seltext_m = 'LOGICAL SYS GRP'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 5.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'QUAL_STA'.
    lw_fieldcat-seltext_m = 'PRODUCT STATUS'.
      lw_fieldcat-outputlen = 'x'.
    APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 6.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'CRTSP'.
      lw_fieldcat-seltext_m = 'PRODUCT CREATED ON'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 7.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'CHTSP'.
      lw_fieldcat-seltext_m = 'PRODUCT CHANGED ON'.
      lw_fieldcat-outputlen = '21'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 8.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR05A'.
      lw_fieldcat-seltext_m = 'MATERIAL TYPE'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 9.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR10A'.
      lw_fieldcat-seltext_m = 'MATERIAL GRP'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
      lw_fieldcat-col_pos = 10.
      lw_fieldcat-tabname = 'T_FINAL'.
      lw_fieldcat-fieldname = 'ATTR05B'.
      lw_fieldcat-seltext_m = 'SUB-FAMILY'.
      lw_fieldcat-outputlen = '18'.
      APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 11.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 12.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    lw_fieldcat-col_pos = 13.
    lw_fieldcat-tabname = 'T_FINAL'.
    lw_fieldcat-fieldname = 'CCNGN'.
    lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
    APPEND lw_fieldcat TO lt_fieldcat.
    CLEAR LW_FIELDCAT.
    ENDFORM.                    " BUILD_FIELDCAT
    *&      Form  LIST_HEADER
          text
    -->  p1        text
    <--  p2        text
    FORM LIST_HEADER .
    DATA :  LT_LISTHEADER TYPE slis_t_listheader,
            LW_LISTHEADER LIKE LINE OF lt_listheader.
      LW_LISTHEADER-TYP = 'H'.
      LW_LISTHEADER-INFO = 'DISPLAY PRODUCTS BY PRODUCT CHARACTERISTIC'.
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'TIME' .
      LW_LISTHEADER-INFO = SY-UZEIT .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'DATE' .
      LW_LISTHEADER-INFO = SY-DATUM .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
      LW_LISTHEADER-TYP = 'S' .
      LW_LISTHEADER-KEY = 'CLIENT' .
      LW_LISTHEADER-INFO = SY-MANDT .
      APPEND LW_LISTHEADER TO LT_LISTHEADER.
    ENDFORM.                    " LIST_HEADER
    *&      Form  DISP_ALV_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM DISP_ALV_DATA .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_BUFFER_ACTIVE                   = ' '
        I_CALLBACK_PROGRAM                = 'I_REPID'
      I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE1'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = 'GTS Substance- Product Classification Report'.
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
        IT_FIELDCAT                       = LT_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
        IT_EVENTS                         = LT_EVENTS
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = T_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.
    ENDFORM.                    " DISP_ALV_DATA
    FORM SUB.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = LT_LISTHEADER.
      I_LOGO                   =*
      I_END_OF_LIST_GRID       =*
      I_ALV_FORM               =*
    ENDFORM.
    Any suggestions and help will be appreciated!
    Regards,
    Kittu

    Hi Ram,
    When I had put a Break point on the FM Reuse_alv_grid_display
    The parameter IT_EVENTS is not getting populated and it is not calling the FORM SUB.
    But LT_EVENTS is holding the data 'TOP_OF_PAGE' and the form name as SUB.
    FORM DISP_ALV_DATA .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_BUFFER_ACTIVE                   = ' '
        I_CALLBACK_PROGRAM                = 'I_REPID'
      I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE1'
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = 'GTS Substance- Product Classification Report'.
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
        IT_FIELDCAT                       = LT_FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
        IT_EVENTS                         = LT_EVENTS
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = T_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.
    ENDFORM.                    " DISP_ALV_DATA
    FORM SUB.
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
      EXPORTING
        IT_LIST_COMMENTARY       = LT_LISTHEADER.
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =
    ENDFORM.
    Any suggestions will be apprectiated.
    Regards,
    Kittu

  • Regarding Header(top-of-page) in ALV Report

    Dear All,
    I am displaying name and address of company on the top of alv report and after that alv grid is displaying.
    e.g.
    'XYZ' LTD.
    ADDRESS1,PINCODE1.
    ACCOUNTING DOC.NO. DOC TYPE G/L ACCT. AMOUNT
    123456 DD 6353 444400
    123457 DD 6334 455500
    Issue : Header is coming on all the pages I want it to come only on first page.
    I am using REUSE_ALV_COMMENTARY_WRITE function for top of page.
    Pls , suggest any suitable suggestion.
    Thanks & regards,
    Sandip Sonar

    Hi,
    check the below code
    call function 'REUSE_ALV_GRID_DISPLAY'
    exporting
      i_callback_program = i_repid
      it_fieldcat = header
      is_layout = gt_layout
      i_callback_top_of_page = 'TOP-OF-PAGE1'
      i_grid_title = xyz
      it_sort = gt_sort[]
      i_default = 'X'
      i_save = 'U'
      is_variant = gt_variant
      it_events = gt_events
    tables
      t_outtab = t_output.
    form top-of-page1.
    data: header type slis_t_listheader,
          wa     type slis_listheader,
         flag(1).
    if flag is initial.
    TITLE AREA
    wa-typ = 'S'.
    wa-info = text-h04.
    append wa to header.
    wa-typ = 'S'.
    write sy-datum to wa-info mm/dd/yyyy.
    concatenate text-h03 wa-info into wa-info separated by space.
    append wa to header.
    wa-typ = 'S'.
    concatenate text-h02 sy-uname into wa-info separated by space.
    append wa to header.
    wa-typ = 'S'.
    concatenate text-h01 sy-repid into wa-info separated by space.
    append wa to header.
    ********" LOGO
    call function 'REUSE_ALV_COMMENTARY_WRITE'
    exporting
    it_list_commentary = header
    i_logo = 'ENJOYSAP_LOGO'.
    *********" LOGO
    flag = 'x'.
    endif.
    endform.
    Edited by: sateesh kumar on Nov 30, 2009 10:47 AM

  • HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE'

    HELLO THERE ,
    CAN ANYBODY TELL ME HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE' ?
    I HAVE TRIED THROUGH THE TRANSCATION 'OAOR' AND 'OAER' , BUT I'M UNABLE TO DO IT. SO CAN ANYBODY PLZ TELL ME ANY OTHER WAY?
    REGARDS.

    Hello NEON BLUE,
    First step first upload u r log in the sap system using the below steps.
    1.  Goto the transaction OAER
    2.  Enter the class name as 'PICTURES'
    3.  Enter the class type as 'OT'
    4.  Enter the object key as the name of the logo you wish to give
    5.  Execute
    6.  Then in the new screen select Standard doc. types in bottom window
         Click on the Screen icon 
         Now, it will ask for the file path where you have to upload the logo
    7.  Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
    call the FM
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            IT_LIST_COMMENTARY       = Y_I_LISTHEADER[]
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
      I_ALV_FORM               =

  • Regarding ALV GRID

    Hi all,
    i am having one issue regarding ALV GRID.
    my issue is after executin  report O/P in grid format is ok,
    but the same format i want to display when u click print preview or when u execute it in back ground,
    it is displaying as same as ALV LIST,

    hi use the coding like this,
    here i am calling hirarchial from list check this....
    *& Report  ZZZ00
    REPORT  ZPR_02.
    TYPE-POOLS: SLIS.
    TABLES:pa0002,pa0008.
    data:begin of it_pa0002 occurs 0,
         checkbox,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         end of it_pa0002.
    data:begin of it_pa00021 occurs 0,
         pernr like pa0002-pernr,
         begda like pa0002-begda,
         endda like pa0002-endda,
         vorna like pa0002-vorna,
         nachn like pa0002-nachn,
         expand TYPE xfeld value 'X',
         end of it_pa00021.
    data:begin of it_pa0008 occurs 0,
         pernr like pa0008-pernr,
         begda like pa0008-begda,
         endda like pa0008-endda,
         ANSAL like pa0008-ANSAL,
         LGA01 like pa0008-LGA01,
         BET01 LIKE PA0008-BET01,
         end of it_pa0008.
    DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
          IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
          IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
          WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
          WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
          IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
          IT_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENTS TYPE SLIS_ALV_EVENT,
          IT_HEADER TYPE SLIS_T_LISTHEADER,
          WA_HEADER TYPE SLIS_LISTHEADER,
          wa_keyinfo TYPE slis_keyinfo_alv.
    CONSTANTS:c VALUE 'X'.
    SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
    START-OF-SELECTION.
      SET PF-STATUS 'DATA' .
      PERFORM GET_DATA.
      PERFORM BUILD_FIELD_CAT.
      PERFORM GET_EVENTS.
      PERFORM DISPLAY_DATA.
    *&      Form  get_data
          text
    FORM GET_DATA .
      SELECT pernr
             begda
             endda
             vorna
             nachn
             FROM pa0002
             INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
             WHERE pernr IN S_pernr.
    ENDFORM.                    " get_data
    *&      Form  build_field_cat
          text
    FORM BUILD_FIELD_CAT .
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'PERNR'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'VORNA'.
      wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat-tabname = 'PA0002'.
      WA_FIELD_CAT-FIELDNAME = 'NACHN'.
        wa_field_cat-ref_tabname = 'IT_PA0002'.
      WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT.
        wa_field_cat1-tabname = 'PA0002'.
      WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
        wa_field_cat1-ref_tabname = 'IT_PA00021'.
      WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
      APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
      CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'PERNR'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
        APPEND wa_field_cat1 TO it_field_cat1.
       CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BEGDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'begindate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ENDDA'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'enddate'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'ANSAL'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'LGA01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
        wa_field_cat1-tabname = 'PA0008'.
        wa_field_cat1-fieldname = 'BET01'.
          wa_field_cat-ref_tabname = 'IT_PA0008'.
        wa_field_cat1-REPTEXT_DDIC = 'Amount'.
        APPEND wa_field_cat1 TO it_field_cat1.
        CLEAR WA_FIELD_CAT1.
    ENDFORM.                    " build_field_cat
    *&      Form  display_data
          text
    FORM DISPLAY_DATA .
    it_layout-box_fieldname = 'CHECKBOX'.
    it_layout-EDIT = 'X'.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM             = SY-REPID
          I_CALLBACK_PF_STATUS_SET       = 'PF_STATUS'
          I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
          IT_FIELDCAT                    = IT_FIELD_CAT
          IS_LAYOUT                      = IT_LAYOUT
          IT_EVENTS                      = IT_EVENTS
        TABLES
          T_OUTTAB           = IT_pa0002.
    ENDFORM.                    " display_data
    *&      Form  get_events
          text
    FORM GET_EVENTS .
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       IMPORTING
         ET_EVENTS             = IT_EVENTS .
      READ TABLE IT_EVENTS INTO WA_EVENTS
                           WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
      IF SY-SUBRC = 0.
        WA_EVENTS-FORM = 'TOP_OF_PAGE'.
        MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
      ENDIF.
    ENDFORM.                    " get_events
    *&      Form  top_of_page
          text
    FORM TOP_OF_PAGE.
      WA_HEADER-TYP = 'H'.
      WA_HEADER-INFO = 'EMPLOYEE DATA'.
      APPEND WA_HEADER TO IT_HEADER.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_HEADER
    ENDFORM. "top_of_page
    *&      Form  GUI_SET
    FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
      SET PF-STATUS 'DATA' .
    ENDFORM.                    "GUI_SET
    *&      Form  USER_COMMAND
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
                            R_SELFIELD TYPE SLIS_SELFIELD.
    DATA:V_PERNR LIKE PA0002-PERNR.
      CASE R_UCOMM.
        WHEN 'DET'.
    DATA: V_FLAG.
      clear : v_flag.
    LOOP AT IT_PA0002.
         if it_PA0002-checkbox =  'X'.
                   v_flag = 'X'.
              v_pernr = IT_PA0002-PERNR.
    SELECT  PERNR
            BEGDA
            ENDDA
            VORNA
            NACHN
            FROM PA0002
            INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
            WHERE PERNR = V_PERNR.
    SORT IT_PA00021 BY PERNR.
    DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
    READ TABLE IT_PA00021 INDEX 1.
    SELECT PERNR
           BEGDA
           ENDDA
           ANSAL
           LGA01
           BET01
           FROM PA0008
           INTO TABLE IT_PA0008
           FOR ALL ENTRIES IN IT_PA00021
           WHERE PERNR = IT_PA00021-PERNR.
              if not it_PA0008[] Is initial.
              SORT IT_PA0008 BY PERNR.
             delete adjacent duplicates from  it_PA0008 comparing pernr.
              READ TABLE IT_PA0008 INDEX 1.
              endif.
            endif.
         enddo.
      it_layout1-group_change_edit = c.
      it_layout1-colwidth_optimize = c.
      it_layout1-zebra             = c.
      it_layout1-detail_popup      = c.
      it_layout1-get_selinfos      = c.
      it_layout-expand_fieldname  = 'EXPAND'.
      wa_keyinfo-header01 = 'PERNR'.
      wa_keyinfo-item01 = 'PERNR'.
    IF NOT V_FLAG IS INITIAL.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
      EXPORTING
       I_CALLBACK_PROGRAM             = SY-REPID
        IS_LAYOUT                      = IT_LAYOUT1
       IT_FIELDCAT                    =  IT_FIELD_CAT1
        I_TABNAME_HEADER               = 'PA0002'
        I_TABNAME_ITEM                 = 'PA0008'
        IS_KEYINFO                     = wa_keyinfo
        TABLES
        T_OUTTAB_HEADER                = IT_PA00021
        T_OUTTAB_ITEM                  = IT_PA0008.
    ENDIF.
    CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
    ENDLOOP.
    WHEN 'BACK'.
    EXIT.
    ENDCASE.
    ENDFORM.                    "USER_COMMAND
    reward points if useful,
    venkat.

  • Regarding totals  and sub totals text in alv

    Hi all,
    i am displaying Totals and subtotals ......but i want to display the text before the the Totals and Subtotals.
    Please help me in regarding this..
    Thanks in advance,
    S.Gangi reddy.

    hi,
    check this report.
    *& Report  ZGM_ALV_SUBTOTAL_TEXT                                       *
    *& Author :
    *& Date :
    *& Description :
    *& Modification History
    REPORT  ZGM_ALV_SUBTOTAL_TEXT                   .
    *& Table declaration
    TABLES: ekko.
    *& Type pool declaration
    TYPE-POOLS: slis. " Type pool for ALV
    *& Selection screen
    SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
    *& Type declaration
    Type declaration for internal table to store EKPO data
    TYPES: BEGIN OF x_data,
           ebeln  TYPE char30,  " Document no.
           ebelp  TYPE ebelp,   " Item no
           matnr  TYPE matnr,   " Material no
           matnr1 TYPE matnr,   " Material no
           werks  TYPE werks_d, " Plant
           werks1 TYPE werks_d, " Plant
           ntgew  TYPE entge,   " Net weight
           gewe   TYPE egewe,   " Unit of weight                          
           END OF x_data.
    *& Internal table declaration
    DATA:
      i_ekpo TYPE STANDARD TABLE OF x_data INITIAL SIZE 0,
    Internal table for storing field catalog information
      i_fieldcat TYPE slis_t_fieldcat_alv,
    Internal table for Top of Page info. in ALV Display
      i_alv_top_of_page TYPE slis_t_listheader,
    Internal table for ALV Display events
      i_events TYPE slis_t_event,
    Internal table for storing ALV sort information
      i_sort TYPE  slis_t_sortinfo_alv,
      i_event TYPE slis_t_event.
    *& Work area declaration
    DATA:
      wa_ekko TYPE x_data,
      wa_layout     TYPE slis_layout_alv,
      wa_events         TYPE slis_alv_event,
      wa_sort TYPE slis_sortinfo_alv.
    *& Constant declaration
    CONSTANTS:
       c_header   TYPE char1
                  VALUE 'H',                    "Header in ALV
       c_item     TYPE char1
                  VALUE 'S'.
    *& Start-of-selection event
    START-OF-SELECTION.
    Select data from ekpo
      SELECT ebeln " Doc no
             ebelp " Item
             matnr " Material
             matnr " Material
             werks " Plant
             werks " Plant
             ntgew " Quantity
             gewei " Unit
             FROM ekpo
             INTO TABLE i_ekpo
             WHERE ebeln IN s_ebeln
             AND ntgew NE '0.00'.  IF sy-subrc = 0.
        SORT i_ekpo BY ebeln ebelp matnr .
      ENDIF.
    To build the Page header
      PERFORM sub_build_header. "* To prepare field catalog
      PERFORM sub_field_catalog. "* Perform to populate the layout structure
      PERFORM sub_populate_layout."* Perform to populate the sort table.
      PERFORM sub_populate_sort."* Perform to populate ALV event
      PERFORM sub_get_event.
      END-OF-SELECTION.
    * Perform to display ALV report
      PERFORM sub_alv_report_display.
    *&      Form  sub_build_header
          To build the header
          No Parameter
    FORM sub_build_header .
    Local data declaration
      DATA: l_system     TYPE char10 ,          "System id
            l_r_line     TYPE slis_listheader,  "Hold list header
            l_date       TYPE char10,           "Date
            l_time       TYPE char10,           "Time
            l_success_records TYPE i,           "No of success records
            l_title(300) TYPE c.                " Title
    Title  Display
      l_r_line-typ = c_header.               " header
      l_title = 'Test report'(001).
      l_r_line-info = l_title.
      APPEND l_r_line TO i_alv_top_of_page.
      CLEAR l_r_line.
    * Run date Display
      CLEAR l_date.
      l_r_line-typ  = c_item.                " Item
      WRITE: sy-datum  TO l_date MM/DD/YYYY.
      l_r_line-key = 'Run Date :'(002).
      l_r_line-info = l_date.
      APPEND l_r_line TO i_alv_top_of_page.
      CLEAR: l_r_line,
             l_date.ENDFORM.                    " sub_build_header
    *&      Form  sub_field_catalog
          Build Field Catalog
          No Parameter
    FORM sub_field_catalog .
    Build Field Catalog
      PERFORM sub_fill_alv_field_catalog USING:     '01' '01' 'EBELN'
      'I_EKPO' 'L'
         'Doc No'(003) ' ' ' ' ' ' ' ',     '01' '02' 'EBELP' 'I_EKPO' 'L'
         'Item No'(004) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR' 'I_EKPO' 'L'
         'Material No'(005) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR1' 'I_EKPO'
         'L'
         'Material No'(005) ' ' ' ' ' ' ' ',
         '01' '04' 'WERKS' 'I_EKPO' 'L'
         'Plant'(006) 'X' 'X' ' ' ' ',     '01' '04' 'WERKS1' 'I_EKPO' 'L'
         'Plant'(006) ' ' ' ' ' ' ' ',     '01' '05' 'NTGEW' 'I_EKPO' 'R'
         'Net Weight'(007) ' ' ' ' 'GEWE' 'I_EKPO'.ENDFORM.
    " sub_field_catalog*&----
    *&     Form  sub_fill_alv_field_catalog
    *&     For building Field Catalog
    *&     p_rowpos   Row position
    *&     p_colpos   Col position
    *&     p_fldnam   Fldname
    *&     p_tabnam   Tabname
    *&     p_justif   Justification
    *&     p_seltext  Seltext
    *&     p_out      no out
    *&     p_tech     Technical field
    *&     p_qfield   Quantity field
    *&     p_qtab     Quantity table
    FORM sub_fill_alv_field_catalog  USING  p_rowpos    TYPE sycurow
                                            p_colpos    TYPE sycucol
                                            p_fldnam    TYPE fieldname
                                            p_tabnam    TYPE tabname
                                            p_justif    TYPE char1
                                            p_seltext   TYPE dd03p-scrtext_l
                                            p_out       TYPE char1
                                            p_tech      TYPE char1
                                            p_qfield    TYPE slis_fieldname
                                            p_qtab      TYPE slis_tabname.
                                           Local declaration for field
                                           catalog
      DATA: wa_lfl_fcat    TYPE  slis_fieldcat_alv.
      wa_lfl_fcat-row_pos        =  p_rowpos.     "Row
      wa_lfl_fcat-col_pos        =  p_colpos.     "Column
      wa_lfl_fcat-fieldname      =  p_fldnam.     "Field Name
      wa_lfl_fcat-tabname        =  p_tabnam.     "Internal Table Name
      wa_lfl_fcat-just           =  p_justif.     "Screen Justified
      wa_lfl_fcat-seltext_l      =  p_seltext.    "Field Text
      wa_lfl_fcat-no_out         =  p_out.        "No output
      wa_lfl_fcat-tech           =  p_tech.       "Technical field
      wa_lfl_fcat-qfieldname     =  p_qfield.     "Quantity unit
      wa_lfl_fcat-qtabname       =  p_qtab .
      "Quantity table
      IF p_fldnam = 'NTGEW'.
        wa_lfl_fcat-do_sum  = 'X'.
      ENDIF.
      APPEND wa_lfl_fcat TO i_fieldcat.
      CLEAR wa_lfl_fcat.
    ENDFORM.
    " sub_fill_alv_field_catalog*&----
    *&      Form  sub_populate_layout
          Populate ALV layout
          No Parameter
    FORM sub_populate_layout .  CLEAR wa_layout.
      wa_layout-colwidth_optimize = 'X'.
    " Optimization of Col width
    ENDFORM. " sub_populate_layout*&----
    *&      Form  sub_populate_sort
          Populate ALV sort table
          No Parameter
    FORM sub_populate_sort .
    Sort on material
      wa_sort-spos = '01' .
      wa_sort-fieldname = 'MATNR'.
      wa_sort-tabname = 'I_EKPO'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.
      APPEND wa_sort TO i_sort .
      CLEAR wa_sort.
    Sort on plant
      wa_sort-spos = '02'.
      wa_sort-fieldname = 'WERKS'.
      wa_sort-tabname = 'I_EKPO'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.
      APPEND wa_sort TO i_sort .
      CLEAR wa_sort.
    ENDFORM.
    " sub_populate_sort*&----
    *&      Form  sub_get_event
          Get ALV grid event and pass the form name to subtotal_text
          event
          No Parameter
    FORM sub_get_event .
      CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE
    'SUBTOTAL_TEXT'.  DATA: l_s_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 4
        IMPORTING
          et_events       = i_event
        EXCEPTIONS
          list_type_wrong = 0
          OTHERS          = 0.
    Subtotal
      READ TABLE i_event  INTO l_s_event
                        WITH KEY name = slis_ev_subtotal_text.
      IF sy-subrc = 0.
        MOVE c_formname_subtotal_text TO l_s_event-form.
        MODIFY i_event FROM l_s_event INDEX sy-tabix.
      ENDIF.ENDFORM.
    " sub_get_event*&----
    *&      Form  sub_alv_report_display
          For ALV Report Display
          No Parameter
    FORM sub_alv_report_display .
      DATA: l_repid TYPE syrepid .
      l_repid = sy-repid .
    This function module for displaying the ALV
    report
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = l_repid
          i_callback_top_of_page   = 'SUB_ALV_TOP_OF_PAGE'
          is_layout                = wa_layout
          it_fieldcat              = i_fieldcat
          it_sort = i_sort
          it_events                = i_event
          i_default                = 'X'
          i_save                   = 'A'
        TABLES
          t_outtab                 = i_ekpo
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
       MESSAGE i000 WITH 'Error in ALV report display'(055).
      ENDIF.
      ENDFORM.
    " sub_alv_report_display*&----
          FORM sub_alv_top_of_page
          Call ALV top of page
          No parameter
    FORM sub_alv_top_of_page.                                   "#EC CALLED*
    *To write header for the ALV
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = i_alv_top_of_page.
    ENDFORM.
    "alv_top_of_page*&----
    *&      Form  subtotal_text
          Build subtotal text
          P_total  Total
          p_subtot_text Subtotal text info
    FORM subtotal_text CHANGING
                   p_total TYPE any
                   p_subtot_text TYPE slis_subtot_text.
    Material level sub total
      IF p_subtot_text-criteria = 'MATNR'.
        p_subtot_text-display_text_for_subtotal
        = 'Material level total'(009).
      ENDIF.
    Plant level sub total
      IF p_subtot_text-criteria = 'WERKS'.
        p_subtot_text-display_text_for_subtotal = 'Plant level total'(010).
      ENDIF.
    ENDFORM.                    "subtotal_textSelection screen:
    \[removed by moderator\]
    Edited by: Jan Stallkamp on Sep 3, 2008 6:17 PM

Maybe you are looking for