04-27-2006 6:48 AM
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.
04-27-2006 6:52 AM
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
04-27-2006 6:57 AM
04-27-2006 6:57 AM
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
04-27-2006 6:59 AM
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
04-27-2006 7:01 AM
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
04-27-2006 7:02 AM
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. &----
> 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
04-27-2006 7:14 AM
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