Hi
see this report , you can understand very easily
REPORT ztest_alv_logo. 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
<b>Rewar difu sefull</b>
Dear Sam the following program lines can serve u as they r related to top-of-page for alv_grid_display.
*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.
----
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. "#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.
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
Rewards if useful.
Add a comment