Skip to Content
0
Former Member
Dec 24, 2007 at 07:44 AM

How to do subtotal in alv?

28 Views

Hi,

I have a problem to do the subtotal in alv.

The outlook of alv now is as following:

-


Specimen Adversary Amount

ZZZ 300100089 1050

ZZZ 300100089 -1050

90256243 300100000 193410

90256242 300100000 173250

90256241 300100000 173250

90256240 300100000 173250

90256239 300100000 173250

90256238 300100000 173250

90256237 300100000 173250

-


What I need to do it to sum up the amount for same "ADVERSARY"

The out-come image should be

-


Specimen Adversary Amount

ZZZ 300100089 1050

ZZZ 300100089 -1050

subtotal 0

90256243 300100000 193410

90256242 300100000 173250

90256241 300100000 173250

90256240 300100000 173250

90256239 300100000 173250

90256238 300100000 173250

90256237 300100000 173250

subtotal 1232910

Question:

How can I add the subtotal in alv?

Please help!!

The following is the original coding:

*********************************************************:

END-OF-SELECTION.

SORT t.

LOOP AT t.

AT NEW bukrs.

CLEAR anz_dl.

CLEAR htext-anzahl.

CLEAR htext-datei.

htext-text1 = ' records writen in file '.

CLEAR p_pfad.

CONCATENATE

i_pfad

'CU_CC'

t-bukrs

'_'

sy-datum+6(2)

sy-datum+4(2)

sy-datum(4)

'_'

sy-uzeit

'.txt'

INTO p_pfad.

CLEAR outtab.

REFRESH outtab.

REFRESH: gt_outalv. "INS MG020207

ENDAT.

IF t-shkzg = 'H'.

h_betrg = t-wrbtr * -1.

ELSE.

h_betrg = t-wrbtr.

h_dmbtr = t-dmbtr.

ENDIF.

s-filler1 = s-filler2 = s-filler3 = s-filler4 = s-filler5 = ';'.

s-filler6 = s-filler7 = s-filler8 = ';'.

s-filler9 = s-filler10 = s-filler11 = s-filler12 = s-filler13 = ';'.

s-filler14 = ';'.

s-belnr = t-belnr.

IF t-xblnr NE space. "WD041005a

s-xblnr = t-xblnr. "WD041005a

ELSE. "WD041005a

s-xblnr = t-belnr. "WD041005a

ENDIF. "WD041005a

WHILE s-xblnr(1) EQ '0'. "INS MG130606

SHIFT s-xblnr LEFT. "INS MG130606

ENDWHILE. "INS MG130606

WRITE t-kunnr TO s-kunnr NO-ZERO.

s-lifn2 = s-kunnr.

shift s-lifn2 RIGHT.

s-lifn2(1) = 'R'.

S-KUNNR = T-KUNNR+5(5).

s-bldat+2(1) = '/'.

s-bldat+5(1) = '/'.

s-bldat0(2) = t-bldat4(2).

s-bldat3(2) = t-bldat6(2).

s-bldat6(4) = t-bldat0(4).

s-budat+2(1) = '/'.

s-budat+5(1) = '/'.

s-budat0(2) = t-budat4(2).

s-budat3(2) = t-budat6(2).

s-budat6(4) = t-budat0(4).

s-netdt+2(1) = '/'.

s-netdt+5(1) = '/'.

s-netdt0(2) = t-netdt4(2).

s-netdt3(2) = t-netdt6(2).

s-netdt6(4) = t-netdt0(4).

s-waers = t-waers.

s-dmbtr = t-dmbtr.

s-sgtxt = t-sgtxt.

CLEAR s-twaer.

SELECT SINGLE waers INTO s-twaer

FROM t001

WHERE bukrs = t-bukrs.

IF h_betrg < 0.

hs_betrg+0(1) = '-'.

ELSE.

hs_betrg+0(1) = ' '.

ENDIF.

WRITE h_betrg CURRENCY t-waers TO hs_betrg+1 NO-GROUPING

NO-SIGN

LEFT-JUSTIFIED.

REPLACE ',' WITH '.' INTO hs_betrg.

WRITE hs_betrg TO s-betrg.

IF h_dmbtr < 0.

hs_betrg+0(1) = '-'.

ELSE.

hs_betrg+0(1) = ' '.

ENDIF.

WRITE h_dmbtr CURRENCY t-waers TO hs_betrg+1 NO-GROUPING

NO-SIGN

LEFT-JUSTIFIED.

REPLACE ',' WITH '.' INTO hs_betrg.

WRITE hs_betrg TO s-dmbtr.

s-compcode = t-bukrs. "fw070905

IF p_downl = 'X'.

MOVE s TO outtab-s.

APPEND outtab.

ADD 1 TO anz_dl.

ENDIF.

gs_outalv-belnr = s-belnr. "INS MG020207

*<<<< CR01 START ADD as_outalv-zuonr

gs_outalv-zuonr = s-zuonr. "CR01

*>>>> CR01 EDD ADD as_outalv-zuonr

gs_outalv-kunnr = s-kunnr. "INS MG020207

gs_outalv-bldat = s-bldat. "INS MG020207

gs_outalv-netdt = s-netdt. "INS MG020207

gs_outalv-betrg = s-betrg. "INS MG020207

gs_outalv-waers = s-waers. "INS MG020207

gs_outalv-compcode = s-compcode. "INS MG020207

gs_outalv-budat = s-budat. "INS MG020207

gs_outalv-sgtxt = s-sgtxt.

gs_outalv-kmmnt = s-kmmnt.

gs_outalv-vbeln = s-vbeln.

gs_outalv-xblnr = s-xblnr.

gs_outalv-lifn2 = s-lifn2.

gs_outalv-dmbtr = s-dmbtr.

gs_outalv-twaer = s-twaer.

APPEND gs_outalv TO gt_outalv. "INS MG020207

AT END OF bukrs.

WRITE anz_dl TO htext-anzahl.

WRITE p_pfad TO htext-datei.

CONDENSE htext.

IF p_downl = 'X'.

SKIP 2.

WRITE: / htext.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = p_pfad

filetype = 'ASC'

TABLES

data_tab = outtab

EXCEPTIONS

file_write_error = 1

no_batch = 2

gui_refuse_filetransfer = 3

invalid_type = 4

no_authority = 5

unknown_error = 6

header_not_allowed = 7

separator_not_allowed = 8

filesize_not_allowed = 9

header_too_long = 10

dp_error_create = 11

dp_error_send = 12

dp_error_write = 13

unknown_dp_error = 14

access_denied = 15

dp_out_of_memory = 16

disk_full = 17

dp_timeout = 18

file_not_found = 19

dataprovider_exception = 20

control_flush_error = 21

OTHERS = 22.

IF sy-subrc 0.

write: / 'Error creating File:', P_Pfad, sy-subrc.

MESSAGE e405 WITH text-002 p_pfad.

ENDIF.

ENDIF.

*<<<<< INS MG020207

IF p_alvd EQ 'X'.

PERFORM build_layout_data.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_structure_name = 'GT_OUTALV'

is_layout = gs_layout

it_fieldcat = gt_fieldcat[]

i_callback_top_of_page = 'TOP-OF-PAGE'

TABLES

t_outtab = gt_outalv.

ENDIF.

*>>>>> INS MG020207

ENDAT.

ENDLOOP.