Application Development and Automation 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: 
Read only

ALV REPORT

Former Member
0 Likes
721

hi,

I want create alv grid repot. some one can help me or provide me some good notes or material about alv grid report.

thanks

regards

M.KHAN

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
671

Hi,

A simple report on ALV

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 

ALV Grid Example:

http://sap.niraj.tripod.com/id64.html

http://www.sapdevelopment.co.uk/reporting/alv/alv_multlist.htm

http://www.sap-img.com/abap/what-is-alv-programming.htm

http://www.erpgenie.com/abap/code/abap28.htm

http://www.erpgenie.com/abap/controls/alvgrid.htm

All types of ALV example

http://www.sapdevelopment.co.uk/reporting/alvhome.htm

Regards

Sudheer

hi,

I want create alv grid repot. some one can help me or provide me some good notes or material about alv grid report.

thanks

regards

M.KHAN

5 REPLIES 5
Read only

Former Member
0 Likes
672

Hi,

A simple report on ALV

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 

ALV Grid Example:

http://sap.niraj.tripod.com/id64.html

http://www.sapdevelopment.co.uk/reporting/alv/alv_multlist.htm

http://www.sap-img.com/abap/what-is-alv-programming.htm

http://www.erpgenie.com/abap/code/abap28.htm

http://www.erpgenie.com/abap/controls/alvgrid.htm

All types of ALV example

http://www.sapdevelopment.co.uk/reporting/alvhome.htm

Regards

Sudheer

Read only

Manohar2u
Active Contributor
0 Likes
671
Read only

Former Member
0 Likes
671

This is a very good doc for OO ALV,

<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907">An Easy Reference For ALV Grid Control.pdf</a>

A PDF Doc on ALV

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf

Regards

Kathirvel

Read only

Former Member