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

Former Member
0 Likes
437

Hi,

Pls tell me how to put subtotals in a alv grid.

Send me a sample coding for that.

5 REPLIES 5
Read only

Former Member
0 Likes
416

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

Read only

Former Member
0 Likes
416

Hi,

see this example.

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.

do 7 times.

append itab1.

enddo.

move 'TEST2' to itab1-field1.

move 'TEST2' to itab1-field2.

move '20.00' to itab1-field3.

append itab1.

do 20 times.

append itab1.

enddo.

move 'TEST3' to itab1-field1.

move 'TEST3' to itab1-field2.

move '30.00' to itab1-field3.

append itab1.

do 5 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'. **THIS SHOULD NOT BE UNCOMENTED*

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.

rgds,

bharat.

Read only

Former Member
0 Likes
416

Hi

see this program you can understand very easily

A Simple ABAP ALV LIST VIEWER Example

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

http://help.sap.com/saphelp_nw04/helpdata/en/ee/b99d37e188a049e10000009b38f8cf/content.htm

<b>Reward if usefull</b>

Read only

Former Member
0 Likes
416

Hi,

For subtotal first you have to get Total of column then only you will get subtotal.

For that you have to pass FIELDCAT-DO_SUM = 'X' Through Fieldcat To the column where you want to calculate Total And Subtotal.

Then For subtotal do the code like this.

First in SLIS define.

data : w_sort type slis_sortinfo_alv.

and.

Data : t_sort type slis_t_sortinfo_alv.

Then Fill The Sort Table like this

W_sort-spos = '1'.

w_sort-fieldname = 'MATNR'. "Consider

W_sort-tabname = 'IT_OUT'.

w_sort-group = 'X'.

w_sort-subtot = 'X'.

Append w_sort To T_sort.

And finally Assign T_SORT in REUSE_ALV_GRID_DISPLAY.

Reward If Ans is Valuable.

Pradip Pawar

Read only

Former Member
0 Likes
416

Hi,

Use below code :

Declare gt_sort as below :

data : gt_sort TYPE slis_t_sortinfo_alv.

FORM f_alv_sort_subtot_info.
  DATA: ls_sort TYPE slis_sortinfo_alv.

  SORT  gt_output BY bukrs hkont.

  CLEAR ls_sort.
  ls_sort-fieldname = 'BUKRS'.
  ls_sort-up        = 'X'.
  ls_sort-subtot    = 'X'.
  APPEND ls_sort TO gt_sort.

  CLEAR ls_sort.
  ls_sort-fieldname = 'HKONT'.
  ls_sort-up        = 'X'.
  ls_sort-subtot    = 'X'.
  APPEND ls_sort TO gt_sort.

ENDFORM.

And pass the gt_sort to

it_sort = gt_sort[]

of REUSE_ALV_GRID_DISPLAY.

Consider gt_output as your final internal table and subtotal by BUKRS and HKONT.

Thanks,

Sriram Ponna.