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: 

total and subtotal in alv

Former Member
0 Kudos

hi,

i have an ALV REPORT,displaying the fields such as po item(ekpo-menge).the data type is qunt.

but i am unable to perform total and sub total,it gives me a information message 'total cannot b performed'.

even i tried with X_FIELDCAT-DO_SUM = 'X',

can any one help me, how to total and subtotal.

7 REPLIES 7

Former Member
0 Kudos

Hi Charles,

for subtotal you have to use a separate itab ..

it_sort and use

it_sort-subtot = 'X'.

and do_sum of fieldcat will work for total on a quantity field..

regards

satesh

0 Kudos

hi Charles,

Check this out

Regards,

Santosh

Former Member
0 Kudos

Hi,

1 Can you tell us how are you creating your field catalog?

2. How are you trying to get the sub totals, by clicking on the QTy column - If yes then you should SELECT the column by which you want the sub total to be done, say Purchase Org.

First total up Qty and then select Purch. org and hit the subtotal button.

Rgards,

Ravi

Note :Please mark all the helpful answers

former_member188685
Active Contributor
0 Kudos

Hi,

try to Build the sort table based on menge.

and then check...

  LS_SORT-FIELDNAME = 'MENGE'.
  LS_SORT-SPOS      = 1.
  LS_SORT-UP        = 'X'.
  ls_sort-subtot    = 'X'.
  APPEND LS_SORT TO E06_LT_SORT.

Regards

vijay

Former Member
0 Kudos

Hai Charles

do_sum is for Currency field

before subtotal sort your internal table and then

if wa_fieldcat_fieldname = 'ZMENG'.

do_sum = 'X'.

modify i_fieldcat from wa_fieldcat transporting do_sum where fieldname = 'ZMENG'.

endif.

after function Module

ws_sort_sposs = 1.

ws_sort_tabname = 'I_VBAK'.

ws_sort_fieldname = 'I_VBELN'.

ws_sort_up = 'X'.

ws_sort_subtot = 'X'.

append wa_sort to I_sort.

Export

It_sort = i_sort

Regards

Sreenivasulu P

Message was edited by: Sreenivasulu Ponnadi

Message was edited by: Sreenivasulu Ponnadi

Former Member
0 Kudos

HI

GOOD

CHECK WITH THIS EXAMPLES

data: begin of output_tab occurs 0,

total_field_hidden(1) type c,

sortfield1(3) type c,

sortfield1_hidden(3) type c,

numerator type p,

denominator type p,

perc type p decimals 2,

percentage type p decimals 2, "(7) type c,

end of output_tab.

data: abaplist type standard table of abaplist.

type-pools: slis.

data: g_repid like sy-repid.

data: gt_events type slis_t_event.

*----


parameters: p_grid radiobutton group g1,

p_list radiobutton group g1.

initialization.

*This is necessary so that the ALV_GRID knows where to

find the form

g_repid = sy-repid.

start-of-selection.

perform fill_output_tab.

perform output_alv.

&----


*& Form FILL_OUTPUT_TAB

&----


form fill_output_tab.

output_tab-total_field_hidden = '1'.

output_tab-sortfield1 = output_tab-sortfield1_hidden

= 'AAA'.

output_tab-numerator = 1.

output_tab-denominator = 2.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 3.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 5.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 5.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-sortfield1 = output_tab-sortfield1_hidden

= 'BBB'.

output_tab-numerator = 1.

output_tab-denominator = 2.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 2.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 3.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

output_tab-numerator = 1.

output_tab-denominator = 5.

output_tab-perc = output_tab-numerator /

output_tab-denominator

  • 100.

output_tab-percentage = output_tab-perc .

  • write output_tab-perc to output_tab-percentage.

append output_tab.

endform. " FILL_OUTPUT_TAB

&----


*& Form output_alv

&----


  • output the list in an ALV Grid

----


form output_alv.

data: ls_layo type slis_layout_alv,

lt_fcat type slis_t_fieldcat_alv,

lt_sort type slis_t_sortinfo_alv.

perform f01_set_sort changing lt_sort.

perform f01_set_layo changing ls_layo.

perform f01_set_fcat changing lt_fcat.

perform eventtab_build using gt_events[].

g_repid = sy-repid.

clear output_tab.

case 'X'.

when p_list.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

  • I_INTERFACE_CHECK = 'X'

i_callback_program = g_repid

is_layout = ls_layo

it_fieldcat = lt_fcat

it_events = gt_events[]

it_sort = lt_sort

tables

t_outtab = output_tab

exceptions

program_error = 1

others = 2.

when p_grid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = g_repid

is_layout = ls_layo

it_fieldcat = lt_fcat

it_events = gt_events[]

it_sort = lt_sort

tables

t_outtab = output_tab

exceptions

program_error = 1

others = 2.

endcase.

endform. " output_alv

&----


  • Sets the Events the ALV Grid needs to react to for

the Overall Output.

----


  • -->RT_EVENTS[] A table of events and the forms

that must be

  • performed for each one.

----


form eventtab_build using rt_events type slis_t_event.

*"Registration of events to happen during list display

data: ls_event type slis_alv_event.

*

refresh rt_events.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = rt_events.

  • Subtotal

read table rt_events with key name =

slis_ev_subtotal_text

into ls_event.

if sy-subrc = 0.

move 'SUBTOTAL_TEXT' to ls_event-form.

append ls_event to rt_events.

endif.

endform. " EVENTTAB_BUILD2

&----


*& Form f01_set_sort

&----


form f01_set_sort changing p_lt_sort type

slis_t_sortinfo_alv.

data: ls_sort type slis_sortinfo_alv.

clear ls_sort.

ls_sort-spos = 1.

ls_sort-fieldname = 'TOTAL_FIELD_HIDDEN'.

ls_sort-subtot = 'X'.

append ls_sort to p_lt_sort.

clear ls_sort.

ls_sort-spos = 2.

ls_sort-fieldname = 'SORTFIELD1_HIDDEN'.

ls_sort-subtot = 'X'.

append ls_sort to p_lt_sort.

endform. " f01_set_sort

&----


*& Form f01_set_layo

&----


  • Sets layout options

----


form f01_set_layo changing p_ls_layo type

slis_layout_alv.

p_ls_layo-no_totalline = 'X'.

endform. " f01_set_layo

&----


*& Form f01_set_fcat

&----


  • Sets the columns and texts for the ALV Grid

----


  • <--P_LT_FCAT text

----


form f01_set_fcat changing ct_fcat type

slis_t_fieldcat_alv.

data: ls_fcat type slis_fieldcat_alv.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'TOTAL_FIELD_HIDDEN'.

ls_fcat-no_out = 'X'.

ls_fcat-col_pos = 1.

append ls_fcat to ct_fcat.

clear ls_fcat.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'SORTFIELD1_HIDDEN'.

ls_fcat-no_out = 'X'.

ls_fcat-col_pos = 2.

append ls_fcat to ct_fcat.

clear ls_fcat.

ls_fcat-seltext_m = 'SORT'.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'SORTFIELD1'.

ls_fcat-col_pos = 3.

append ls_fcat to ct_fcat.

clear ls_fcat.

ls_fcat-seltext_m = 'SALES'.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'NUMERATOR'.

ls_fcat-col_pos = 4.

ls_fcat-datatype = 'CURR'.

ls_fcat-do_sum = 'X'.

append ls_fcat to ct_fcat.

clear ls_fcat.

ls_fcat-seltext_m = 'COST'.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'DENOMINATOR'.

ls_fcat-datatype = 'CURR'.

ls_fcat-col_pos = 5.

ls_fcat-do_sum = 'X'.

append ls_fcat to ct_fcat.

clear ls_fcat.

ls_fcat-seltext_m = 'MARGIN'.

ls_fcat-tabname = 'OUTPUT_TAB'.

ls_fcat-fieldname = 'PERCENTAGE'.

  • ls_fcat-datatype = 'CHAR'.

ls_fcat-do_sum = 'X'.

ls_fcat-col_pos = 6.

append ls_fcat to ct_fcat.

endform.

&----


*& Form subtotal_text

&----


  • Manipulate the subtotal line in the ALV to

recalculate eficiency at

  • total level.

----


form subtotal_text using ep_subtot_line like

output_tab

es_subtottxt type

slis_subtot_text.

if es_subtottxt-criteria = 'TOTAL_FIELD_HIDDEN'.

es_subtottxt-display_text_for_subtotal = 'Final

Total'.

endif.

ep_subtot_line-percentage = ep_subtot_line-numerator

/ ep_subtot_line-denominator

  • 100.

ep_subtot_line-perc = ep_subtot_line-percentage.

endform.

-


total_field_hidden(1) type c,

> sortfield1(3) type c,

> sortfield1_hidden(3) type c,

> numerator type p,

> denominator type p,

> perc type p decimals 2,

> percentage type p decimals 2, "(7) type c, end of output_tab.

>

>data: abaplist type standard table of abaplist.

>

>type-pools: slis.

>data: g_repid like sy-repid.

>data: gt_events type slis_t_event.

>*----


>parameters: p_grid radiobutton group g1,

> p_list radiobutton group g1.

>

>initialization.

>*This is necessary so that the ALV_GRID knows where to

>find the form

> g_repid = sy-repid.

>

>start-of-selection.

> perform fill_output_tab.

>

> perform output_alv. &----


*& Form FILL_OUTPUT_TAB &----
form fill_output_tab.

> output_tab-total_field_hidden = '1'.

> output_tab-sortfield1 = output_tab-sortfield1_hidden = 'AAA'.

> output_tab-numerator = 1.

> output_tab-denominator = 2.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 3.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 5.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 5.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-sortfield1 = output_tab-sortfield1_hidden = 'BBB'.

> output_tab-numerator = 1.

> output_tab-denominator = 2.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 2.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 3.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

> output_tab-numerator = 1.

> output_tab-denominator = 5.

> output_tab-perc = output_tab-numerator / output_tab-denominator

> * 100. output_tab-percentage = output_tab-perc . * write output_tab-perc to output_tab-percentage. append output_tab.

>

>endform. " FILL_OUTPUT_TAB

>&----


>*& Form output_alv

>&----


>* output the list in an ALV Grid

>----


>form output_alv.

> data: ls_layo type slis_layout_alv,

> lt_fcat type slis_t_fieldcat_alv,

> lt_sort type slis_t_sortinfo_alv.

>

> perform f01_set_sort changing lt_sort.

> perform f01_set_layo changing ls_layo.

> perform f01_set_fcat changing lt_fcat.

> perform eventtab_build using gt_events[].

> g_repid = sy-repid.

> clear output_tab.

> case 'X'.

> when p_list.

> call function 'REUSE_ALV_LIST_DISPLAY'

> exporting * I_INTERFACE_CHECK = 'X'

> i_callback_program = g_repid

> is_layout = ls_layo

> it_fieldcat = lt_fcat

> it_events = gt_events[]

> it_sort = lt_sort tables

> t_outtab = output_tab exceptions

> program_error = 1

> others = 2. when p_grid. call function 'REUSE_ALV_GRID_DISPLAY' exporting

> i_callback_program = g_repid

> is_layout = ls_layo

> it_fieldcat = lt_fcat

> it_events = gt_events[]

> it_sort = lt_sort tables

> t_outtab = output_tab exceptions

> program_error = 1

> others = 2. endcase.

>

>endform. " output_alv

>

>&----


>* Sets the Events the ALV Grid needs to react to for

>the Overall Output.

>----


>* -->RT_EVENTS[] A table of events and the forms

>that must be

>* performed for each one.

>----


>form eventtab_build using rt_events type slis_t_event.

>*"Registration of events to happen during list display

> data: ls_event type slis_alv_event.

>*

> refresh rt_events.

> call function 'REUSE_ALV_EVENTS_GET'

> exporting

> i_list_type = 0 importing

> et_events = rt_events.

>

>* Subtotal

> read table rt_events with key name = slis_ev_subtotal_text

> into ls_event. if sy-subrc = 0. move 'SUBTOTAL_TEXT' to ls_event-form. append ls_event to rt_events. endif.

>

>endform. " EVENTTAB_BUILD2

>&----


>*& Form f01_set_sort

>&----


>form f01_set_sort changing p_lt_sort type

>slis_t_sortinfo_alv.

>

> data: ls_sort type slis_sortinfo_alv.

>

> clear ls_sort.

> ls_sort-spos = 1.

> ls_sort-fieldname = 'TOTAL_FIELD_HIDDEN'.

> ls_sort-subtot = 'X'.

> append ls_sort to p_lt_sort.

>

> clear ls_sort.

> ls_sort-spos = 2.

> ls_sort-fieldname = 'SORTFIELD1_HIDDEN'.

> ls_sort-subtot = 'X'.

> append ls_sort to p_lt_sort.

>

>endform. " f01_set_sort

>&----


>*& Form f01_set_layo

>&----


>* Sets layout options

>----


>form f01_set_layo changing p_ls_layo type

>slis_layout_alv.

>

> p_ls_layo-no_totalline = 'X'.

>

>endform. " f01_set_layo

>&----


>*& Form f01_set_fcat

>&----


>* Sets the columns and texts for the ALV Grid

>----


>* <--P_LT_FCAT text

>----


>form f01_set_fcat changing ct_fcat type

>slis_t_fieldcat_alv.

>

> data: ls_fcat type slis_fieldcat_alv.

>

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'TOTAL_FIELD_HIDDEN'.

> ls_fcat-no_out = 'X'.

> ls_fcat-col_pos = 1.

> append ls_fcat to ct_fcat.

>

> clear ls_fcat.

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'SORTFIELD1_HIDDEN'.

> ls_fcat-no_out = 'X'.

> ls_fcat-col_pos = 2.

> append ls_fcat to ct_fcat.

>

> clear ls_fcat.

> ls_fcat-seltext_m = 'SORT'.

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'SORTFIELD1'.

> ls_fcat-col_pos = 3.

> append ls_fcat to ct_fcat.

>

> clear ls_fcat.

> ls_fcat-seltext_m = 'SALES'.

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'NUMERATOR'.

> ls_fcat-col_pos = 4.

> ls_fcat-datatype = 'CURR'.

> ls_fcat-do_sum = 'X'.

> append ls_fcat to ct_fcat.

>

> clear ls_fcat.

> ls_fcat-seltext_m = 'COST'.

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'DENOMINATOR'.

> ls_fcat-datatype = 'CURR'.

> ls_fcat-col_pos = 5.

> ls_fcat-do_sum = 'X'.

> append ls_fcat to ct_fcat.

>

> clear ls_fcat.

> ls_fcat-seltext_m = 'MARGIN'.

> ls_fcat-tabname = 'OUTPUT_TAB'.

> ls_fcat-fieldname = 'PERCENTAGE'. * ls_fcat-datatype = 'CHAR'.

> ls_fcat-do_sum = 'X'.

> ls_fcat-col_pos = 6.

> append ls_fcat to ct_fcat.

>

>endform.

>&----


>*& Form subtotal_text

>&----


>* Manipulate the subtotal line in the ALV to

>recalculate eficiency at

>* total level.

>----


>form subtotal_text using ep_subtot_line like

>output_tab

> es_subtottxt type slis_subtot_text.

>

> if es_subtottxt-criteria = 'TOTAL_FIELD_HIDDEN'.

> es_subtottxt-display_text_for_subtotal = 'Final Total'. endif.

>

> ep_subtot_line-percentage = ep_subtot_line-numerator

> / ep_subtot_line-denominator

> * 100.

>

> ep_subtot_line-perc = ep_subtot_line-percentage. endform.

>

THANKS

MRUTYUN

0 Kudos

Hi,

Please go through the links below. It will help you.

<a href="http://www.sapfans.com/forums/viewtopic.php?t=20386">http://www.sapfans.com/forums/viewtopic.php?t=20386</a>

<a href="http://www.sapfans.com/forums/viewtopic.php?t=85191">http://www.sapfans.com/forums/viewtopic.php?t=85191</a>

<a href="http://www.sapfans.com/forums/viewtopic.php?t=88401">http://www.sapfans.com/forums/viewtopic.php?t=88401</a>

Please mark helpful answer.

Regards,

Amit Mishra