Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV Problem

Former Member
0 Kudos

Hi all,

I m doing this alv program but i m unable to get top of page, end of list.

Plz suggest what can be done.

Below i m giving my code.

<code>&----


*& 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.

************************************************************************

  • 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.

************************************************************************

  • 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.

************************************************************************

  • Event : END-OF-SELECTION

************************************************************************

END-OF-SELECTION.

IF V_FLAG EQ 'X'.

*--Generating Basic List

PERFORM DISP_BASIC_LIST.

ELSE.

MESSAGE I010 WITH 'No Data Found To Display'(002).

ENDIF.

*///////////////////////////////////////////////////////////////////////

************************************************************************

  • 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-FIELDNAME = 'EBELN'(005).

WA_FLDCAT_HEAD-COL_POS = '1'.

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 = '2'.

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 = '3'.

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 = '4'.

WA_FLDCAT_HEAD-OUTPUTLEN = '6'.

WA_FLDCAT_HEAD-SELTEXT_M = 'PO Org'(012).

WA_FLDCAT_HEAD-DDICTXT = 'M'.

APPEND WA_FLDCAT_HEAD TO I_FLDCAT_HEAD.

WA_FLDCAT_HEAD-FIELDNAME = 'EKGRP'(013).

WA_FLDCAT_HEAD-COL_POS = '5'.

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 Basic List

WA_FLDCAT_ITEM-FIELDNAME = 'EBELN'(005).

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

  • 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'.

  • 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 = 'Z_SAMPLE_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 = '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 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 = 'Sathish Borancha'(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 = 'ZSAMPLEALV3'

  • 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 = 'Rajesh'(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

</code>

Regards,

Karthik

6 REPLIES 6

Former Member
0 Kudos

Hi,

Check the following link

/people/community.user/blog/2007/05/07/alignment-of-data-in-top-of-page-in-alv-grid

Reward if helpful.

Former Member
0 Kudos

Hi,

See following link :

http://www.sap-img.com/abap/sample-alv-heading-in-alv.htm

http://www.sap-img.com/abap/alv-logo.htm

Reward points if helpful.

Regards.

Srikanta Gope

Former Member
0 Kudos

Check this code....

&----


*& Report ZALV *

*& *

&----


*& *

*& *

&----


Report ZALV .

TABLES: ekko.

type-pools: slis. "ALV Declarations

*Data Declaration

*----


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

************************************************************************

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform build_events.

perform build_print_params.

perform display_alv_report.

&----


*& Form BUILD_FIELDCATALOG

&----


  • Build Fieldcatalog for ALV Report

----


form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

&----


*& Form BUILD_LAYOUT

&----


  • Build layout for ALV grid report

----


form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

&----


*& Form DISPLAY_ALV_REPORT

&----


  • Display report using ALV grid

----


form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

tables

t_outtab = it_ekko

exceptions

program_error = 1

others = 2.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

endform. " DISPLAY_ALV_REPORT

&----


*& Form DATA_RETRIEVAL

&----


  • Retrieve data form EKPO table and populate itab it_ekko

----


form data_retrieval.

select ebeln ebelp statu aedat matnr menge meins netpr peinh

up to 10 rows

from ekpo

into table it_ekko.

endform. " DATA_RETRIEVAL

----


  • Form TOP-OF-PAGE *

----


  • ALV Report Header *

----


Form top-of-page.

*ALV Header declarations

data: t_header type slis_t_listheader,

wa_header type slis_listheader,

t_line like wa_header-info,

ld_lines type i,

ld_linesc(10) type c.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'EKKO Table Report'.

append wa_header to t_header.

clear wa_header.

  • Date

wa_header-typ = 'S'.

wa_header-key = 'Date: '.

CONCATENATE sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) INTO wa_header-info. "todays date

append wa_header to t_header.

clear: wa_header.

  • Total No. of Records Selected

describe table it_ekko lines ld_lines.

ld_linesc = ld_lines.

concatenate 'Total No. of Records Selected: ' ld_linesc

into t_line separated by space.

wa_header-typ = 'A'.

wa_header-info = t_line.

append wa_header to t_header.

clear: wa_header, t_line.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = t_header.

  • i_logo = 'Z_LOGO'.

endform.

----


  • FORM USER_COMMAND *

----


  • --> R_UCOMM *

  • --> RS_SELFIELD *

----


FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.

&----


*& Form BUILD_EVENTS

&----


  • Build events table

----


form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

&----


*& Form BUILD_PRINT_PARAMS

&----


  • Setup print parameters

----


form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

&----


*& Form END_OF_PAGE

&----


form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

&----


*& Form END_OF_LIST

&----


form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Regards,

Pavan

Former Member
0 Kudos

hi,

Check this code

REPORT ZMK_EX_GRID_ALV .

************************************************************************

  • TABLES AND DATA DECLARATION.

************************************************************************

*TABLES: mara,makt.",marc.

data syrepid like sy-repid.

data sydatum(10). " LIKE sy-datum.

data sypagno(3) type n.

  • WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE

  • GROUP (TYPE-POOLS--------->SLIS)

type-pools : slis.

************************************************************************

  • INTERNAL TABLE DECLARATION.

************************************************************************

  • INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE

data: begin of t_mara occurs 0,

matnr like mara-matnr,

meins like mara-meins,

mtart like mara-mtart,

matkl like mara-matkl,

end of t_mara.

  • INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE

data : begin of t_marc occurs 0,

matnr like mara-matnr,

werks like marc-werks,

minbe like marc-minbe.

data: end of t_marc.

  • INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE.

data : begin of t_makt occurs 0,

matnr like mara-matnr,

maktx like makt-maktx,

spras like makt-spras,

end of t_makt.

  • INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES.

data: begin of itab1 occurs 0,

matnr like mara-matnr,

meins like mara-meins,

maktx like makt-maktx,

spras like makt-spras,

werks like marc-werks,

minbe like marc-minbe,

end of itab1.

  • THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT

  • AND THE LAYOUT FOR THE ALV.

  • HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE

  • WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT

  • OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION.

  • THIS IS DONE TO MAKE THE CODE SIMPLER.

  • OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP

  • PROGRAMS.

  • IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR

  • MORE TABLES AND CREATE A STRUCTURE

  • IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS

  • LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC.

data: fieldcatalog type slis_t_fieldcat_alv with header line,

fieldlayout type slis_layout_alv.

  • DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE

  • TOP-OF-PAGE ETC.

data : eventstab type slis_t_event with header line.

  • DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE

data : heading type slis_t_listheader with header line.

data : heading1 type slis_t_listheader with header line.

data : heading2 type slis_t_listheader with header line.

data : heading3 type slis_t_listheader with header line.

data : heading4 type slis_t_listheader with header line.

data : heading5 type slis_t_listheader with header line.

data : heading6 type slis_t_listheader with header line.

data : heading7 type slis_t_listheader with header line.

data : heading8 type slis_t_listheader with header line.

  • STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY.

data : colorstruct type slis_coltypes.

************************************************************************

  • INITIALIZATION. *

************************************************************************

initialization.

syrepid = sy-repid.

sypagno = sy-pagno.

clear fieldcatalog.

************************************************************************

  • START-OF-SELECTION. *

************************************************************************

start-of-selection.

  • SUBROUTINE TO POPULATE THE COLORSTRUCT

perform fill_colorstruct using colorstruct.

  • SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE

perform populate_fieldcatalog.

  • SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE

  • INTERNAL TABLE.

perform selectdata_and_sort.

  • SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE.

perform populate_layout using fieldlayout.

  • SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.

perform merge_fieldcatalog.

  • SUBROUTINE TO POPULATE THE EVENTSTAB.

perform fill_eventstab tables eventstab.

  • SUBROUTINE TO POPULATE THE HEADING TABLES.

perform fill_headingtable tables heading using 'HEADING'.

perform fill_headingtable tables heading1 using 'HEADING1'.

perform fill_headingtable tables heading2 using 'HEADING2'.

perform fill_headingtable tables heading3 using 'HEADING3'.

perform fill_headingtable tables heading4 using 'HEADING4'.

perform fill_headingtable tables heading5 using 'HEADING5'.

perform fill_headingtable tables heading6 using 'HEADING6'.

perform fill_headingtable tables heading7 using 'HEADING7'.

perform fill_headingtable tables heading8 using 'HEADING8'.

  • SUBROUTINE TO DISPLAY THE LIST.

perform display_alv_list.

************************************************************************

  • FORMS

************************************************************************

  • IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES

  • OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND

  • COLUMN JUSTIFICATION.

form populate_fieldcatalog.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATNR' 'X' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MEINS' ' '.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MAKTX' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MTART' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATKL' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'SPRAS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'WERKS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MINBE' ' ' .

endform. " POPULATE_FIELDCATALOG

----


  • FORM FILL_FIELDS_OF_FIELDCATALOG *

----


  • ........ *

----


  • --> FIELDCATALOG *

  • --> P_TABNAME *

  • --> P_FIELDNAME *

  • --> P_KEY *

  • --> P_KEY *

----


form fill_fields_of_fieldcatalog tables fieldcatalog

structure fieldcatalog

using p_tabname

p_fieldname

p_key.

  • p_no_out.

fieldcatalog-tabname = p_tabname.

fieldcatalog-fieldname = p_fieldname.

fieldcatalog-key = p_key.

fieldcatalog-emphasize = '1234'.

*fieldcatalog-no_out = p_no_out.

append fieldcatalog.

endform. " FILL_FIELDSOFFIELDCATALOG

----


  • FORM POPULATE_LAYOUT *

----


  • ........ *

----


  • --> FIELDLAYOUT *

----


form populate_layout using fieldlayout type slis_layout_alv.

fieldlayout-f2code = '&ETA' .

fieldlayout-zebra = 'X'.

  • FOR THE WINDOW TITLE.

fieldlayout-window_titlebar = 'ALV with Events'.

fieldlayout-colwidth_optimize = 'X'.

fieldlayout-no_vline = ' '.

*fieldlayout-no_input = 'X'.

fieldlayout-confirmation_prompt = ''.

fieldlayout-key_hotspot = 'X'.

  • This removes the column headings if the flag is set to 'X'

fieldlayout-no_colhead = ' '.

*fieldlayout-hotspot_fieldname = 'MAKTX'.

fieldlayout-detail_popup = 'X'.

  • fieldlayout-coltab_fieldname = 'X'.

endform. " POPULATE_LAYOUT

----


  • FORM SELECTDATA_AND_SORT *

----


  • ........ *

----


form selectdata_and_sort.

select matnr meins mtart matkl from mara

into corresponding fields of t_mara

up to 500 rows .

select matnr maktx spras from makt

into corresponding fields of t_makt

where matnr = t_mara-matnr and

spras = sy-langu.

select matnr werks minbe from marc

into corresponding fields of t_marc

where matnr = t_mara-matnr.

append t_marc.

endselect.

append t_makt.

endselect.

append t_mara.

endselect.

perform populate_itab1.

sort itab1 by matnr.

endform. " SELECTDATA_AND_SORT

----


  • FORM MERGE_FIELDCATALOG *

----


  • ........ *

----


form merge_fieldcatalog.

call function 'REUSE_ALV_FIELDCATALOG_MERGE'

exporting

i_program_name = syrepid

i_internal_tabname = 'ITAB1'

  • i_structure_name = 'COLORSTRUCT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = syrepid

changing

ct_fieldcat = fieldcatalog[]

exceptions

inconsistent_interface = 1

program_error = 2

others = 3.

endform. " MERGE_FIELDCATALOG

  • IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS

  • FOLLOWS:-

  • i_callback_program --> CALLING PROGRAM NAME

  • i_structure_name --> STRUCTURE NAME.

  • is_layout --> LAYOUT NAME.

  • it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE

form display_alv_list.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

  • I_INTERFACE_CHECK = ' '

i_callback_program = syrepid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

i_structure_name = 'ITAB1'

is_layout = fieldlayout

it_fieldcat = fieldcatalog[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD

  • TOOL BAR

i_save = 'A'

  • IS_VARIANT = ' '

it_events = eventstab[]

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

tables

t_outtab = itab1

exceptions

program_error = 1

others = 2.

endform. " DISPLAY_ALV_LIST

&----


*& Form POPULATE_ITAB1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form populate_itab1.

loop at t_mara.

loop at t_makt where matnr = t_mara-matnr.

loop at t_marc where matnr = t_mara-matnr.

move-corresponding t_mara to itab1.

move-corresponding t_makt to itab1.

move-corresponding t_marc to itab1.

append itab1.

endloop.

endloop.

endloop.

endform. " POPULATE_ITAB1

&----


*& Form FILL_EVENTSTAB

&----


  • text

----


  • -->P_EVENTSTAB text *

----


form fill_eventstab tables p_eventstab structure eventstab.

  • WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE

  • INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME.

  • AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14

  • EVENTS NAME.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = p_eventstab[]

exceptions

list_type_wrong = 1

others = 2.

  • BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH

  • THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW.

  • WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER.

  • FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM

  • IS DYNAMICALY CALLED.

read table p_eventstab with key name = slis_ev_top_of_page.

if sy-subrc = 0 .

move 'TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_coverpage.

if sy-subrc = 0 .

move 'TOP_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_coverpage .

if sy-subrc = 0 .

move 'END_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_top_of_page.

if sy-subrc = 0 .

move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_end_of_page.

if sy-subrc = 0 .

move 'FOREIGN_END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_list_modify.

if sy-subrc = 0 .

move 'LIST_MODIFY' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_list.

if sy-subrc = 0 .

move 'TOP_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_page.

if sy-subrc = 0 .

move 'END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_list .

if sy-subrc = 0 .

move 'END_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

endform. " FILL_EVENTSTAB

&----


*& Form FILL_HEADINGTABLE

&----


  • text

----


  • -->P_HEADING text *

----


form fill_headingtable tables p_heading structure heading

using tablename.

case tablename.

when 'HEADING'.

p_heading-typ = 'H'.

concatenate

' REPORT NAME:-' syrepid

' ABB Industry Pte Ltd' into p_heading-info.

append p_heading.

write sy-datum using edit mask '__/__/____' to sydatum.

concatenate

' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno

into p_heading-info.

append p_heading.

when 'HEADING1'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-COVER-PAGE'.

append p_heading.

when 'HEADING2'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-COVER-PAGE'.

append p_heading.

when 'HEADING3'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-TOP-OF-PAGE'.

append p_heading.

when 'HEADING4'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-END-OF-PAGE'.

append p_heading.

  • WHEN 'HEADING5'.

  • P_HEADING-TYP = 'H'.

  • P_HEADING-INFO = 'LIST-MODIFY'.

  • APPEND P_HEADING.

when 'HEADING6'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-PAGE'.

append p_heading.

when 'HEADING7'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-LIST'.

append p_heading.

when 'HEADING8'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-LIST'.

append p_heading.

endcase.

endform. " FILL_HEADINGTABLE

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


form top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading[]

exceptions

others = 1.

endform.

&----


*& Form FILL_COLORSTRUCT

&----


  • text

----


  • -->P_COLORSTRUCT text *

----


form fill_colorstruct using p_colorstruct type slis_coltypes .

p_colorstruct-heacolfir-col = 6.

p_colorstruct-heacolfir-int = 1.

p_colorstruct-heacolfir-inv = 1.

endform. " FILL_COLORSTRUCT

----


  • FORM TOP_OF_COVERPAGE *

----


  • ........ *

----


form top_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading1[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_COVERPAGE *

----


  • ........ *

----


form end_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading2[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_TOP_OF_PAGE *

----


  • ........ *

----


form foreign_top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading3[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_END_OF_PAGE *

----


  • ........ *

----


form foreign_end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading4[]

exceptions

others = 1.

endform.

----


  • FORM LIST_MODIFY *

----


  • ........ *

----


*FORM LIST_MODIFY.

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • IT_LIST_COMMENTARY = HEADING5[]

  • EXCEPTIONS

  • OTHERS = 1.

*ENDFORM.

----


  • FORM END_OF_PAGE *

----


  • ........ *

----


form end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading6[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_LIST *

----


  • ........ *

----


form end_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading7[]

exceptions

others = 1.

endform.

----


  • FORM TOP_OF_LIST *

----


  • ........ *

----


form top_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading8[]

exceptions

others = 1.

endform.

*--- End of Program

thanks

mahesh

Former Member
0 Kudos

This is necessary to use event in ALV:

data:gt_list_end_of_list TYPE slis_listheader OCCURS 0,

g_end_of_list TYPE slis_formname VALUE 'SET_END_LIST'.

&----


*& Form end_of_list

&----


  • text

----


FORM end_of_list. "#EC CALLED

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_end_of_list

    • I_LOGO =

  • i_end_of_list_grid = 'X'

    • I_ALV_FORM =

.

ENDFORM. "end_of_list

&----


*& Form set_end_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM set_end_list .

DATA: ls_line TYPE slis_listheader.

*costruiamo ogni riga del nostro spool

*titolo videata1-movimenti selezionati

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-info = text-009.

APPEND ls_line TO gt_list_end_of_list.

CLEAR ls_line.

LOOP AT it_log.

ls_line-typ = 'S'.

ls_line-info = it_log-matnr.

APPEND ls_line TO gt_list_end_of_list.

ENDLOOP.

ENDFORM. " set_end_list

&----


*& Form eventab_init

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM eventab_init .

DATA: ls_event TYPE slis_alv_event.

ls_event-name = 'END_OF_LIST'.

ls_event-form = 'END_OF_LIST'.

APPEND ls_event TO gt_events.

ENDFORM. " eventab_init

Former Member
0 Kudos

HI,

see the highlighted part of my code

REPORT ZBHALV_LIST1.

TABLES:MARA.

SELECT-OPTIONS: MATNR FOR MARA-MATNR.

DATA:BEGIN OF ITAB OCCURS 0,

MATNR LIKE MARA-MATNR,

ERSDA LIKE MARA-ERSDA,

MTART LIKE MARA-MTART,

MBRSH LIKE MARA-MBRSH,

END OF ITAB.

SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE ITAB WHERE MATNR

IN MATNR.

TYPE-POOLS SLIS.

DATA:FCAT TYPE slis_t_fieldcat_alv.

DATA:LAYOUT TYPE slis_layout_alv.

<b>DATA:EVE TYPE slis_t_event WITH HEADER LINE.</b>

DATA:HEAD TYPE slis_t_listheader WITH HEADER LINE.

DATA:SORT TYPE slis_t_sortinfo_alv WITH HEADER LINE.

SORT-UP = 'X'.

SORT-SPOS = 1.

SORT-FIELDNAME = 'ERSDA'.

SORT-tabname = 'MARA'.

APPEND SORT.

SORT-SPOS = 2.

SORT-FIELDNAME = 'MTART'.

SORT-tabname = 'MARA'.

APPEND SORT.

<b>EVE-NAME = 'TOP_OF_PAGE'.

EVE-FORM = 'TOPOFPAGE'.

APPEND EVE.

EVE-NAME = 'TOP_OF_LIST'.

EVE-FORM = 'TOPOFLIST'.

APPEND EVE.

EVE-NAME = 'END_OF_LIST'.

EVE-FORM = 'ENDOFLIST'.

APPEND EVE.</b>

LAYOUT-ZEBRA = 'X'.

LAYOUT-no_hline = 'X'.

LAYOUT-NO_VLINE = 'X'.

LAYOUT-window_titlebar = 'MATERIAL DETAILS'.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'ITAB'

  • I_STRUCTURE_NAME =

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = SY-REPID

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = 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.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = 'STATUS'

  • I_CALLBACK_USER_COMMAND = 'UCOMM'

  • I_STRUCTURE_NAME =

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = SORT[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

<b> IT_EVENTS = EVE[]</b>

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 5

  • I_SCREEN_START_LINE = 5

  • I_SCREEN_END_COLUMN = 120

  • I_SCREEN_END_LINE = 25

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = ITAB

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

<b>FORM TOPOFPAGE.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'MATERIALS'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

ENDFORM.

FORM TOPOFLIST.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'MATERIALS-LISTTOP'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

ENDFORM.

FORM ENDOFLIST.

REFRESH HEAD.

HEAD-TYP = 'H'.

HEAD-INFO = 'MATERIALS-LISTEND'.

APPEND HEAD.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEAD[]

  • I_LOGO =

  • I_END_OF_LIST_GRID =

.

ENDFORM.</b>

rgds,

bharat.