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: 

Need help to sum up total amount in at end of.....endat!!! Please help

Former Member
0 Kudos

Hi,

There is one program need to calculat the SUB-TOTAL AMOUNT FOR SAME DOCUMENT NUMBER.

Means: Need to sumup betrg for the same belnr.

QUESTION:

How can I write the sorce cord In AT END OF...ENDAT.

TO SUMUP THE AMOUNT FOR SAME DOCUMENT NUMBER.

Please help!!

Thanks.

Here is the sourc code.

-


DATA: BEGIN OF t OCCURS 0,

bukrs LIKE knb1-bukrs,

*<<<<< CR01

zuonr Like bsid-zuonr, "sort key "CR01

*>>>>> CR01

belnr LIKE bsid-belnr,

kunnr LIKE kna1-kunnr,

bldat LIKE bsid-bldat,

budat LIKE bsid-budat,

netdt LIKE bsega-netdt,

waers LIKE bsid-waers,

wrbtr LIKE bsid-wrbtr,

shkzg LIKE bsid-shkzg,

xblnr LIKE bsid-xblnr, "WD041005a

sgtxt LIKE bsid-sgtxt,

dmbtr LIKE bsid-dmbtr,

END OF t.

  • Description of Interface-record RECON

DATA: BEGIN OF s,

belnr(10), " document number

*<<<< CR01 STRAT ADD ZUONR

zuonr(10), "sort key " CR01

*>>>> CR01 END ADD ZUONR

filler1(1),

  • KUNNR(5), " customer no."WD290705a

kunnr LIKE kna1-kunnr, " customer no."WD290705a

filler2(1),

bldat(10), " date

filler3(1),

budat(10),

filler4(1),

netdt(10), " due date for payment

filler5(1),

betrg(14), " amount

filler6(1),

waers(3), " currency

filler7(1), " document field - blank

compcode(4), " company-code "fw070905

filler8(1), " comment - blank

sgtxt(50), " Text "INS MG020207

filler9(1),

kmmnt(30),

filler10(1),

vbeln(12) ,

filler11(1),

xblnr(16), "WD041005a hier Referenznr rein

filler12(1),

lifn2(11),

filler13(1), " remark - blank

dmbtr(14),

filler14(1),

twaer(3),

END OF s.

DATA: BEGIN OF outtab OCCURS 1000,

s LIKE s,

END OF outtab.

*<<<<< INS MG020207

TYPES: BEGIN OF ty_outalv,

belnr(10), " document number

*<<<< CR01 START ADD ZUONR

zuonr, " sort key " CR01

*>>>>CR01 END ADD AUONR

kunnr LIKE kna1-kunnr, " customer no."WD290705a

bldat(10), " date

budat(10), " posting date

netdt(10), " due date for payment

betrg(14), " amount

waers(3), " currency

compcode(4), " company-code "fw070905

sgtxt(30), " comment

kmmnt(30), " comment

vbeln(12), " delivery number

xblnr(16), "WD041005a hier Referenznr rein

lifn2(11), " customer number

dmbtr(14),

twaer(3), " currency company code

END OF ty_outalv.

DATA: gt_outalv TYPE STANDARD TABLE OF ty_outalv.

DATA: gs_outalv TYPE ty_outalv.

*>>>>> INS MG020207

DATA: l_date TYPE sy-datum.

DATA: g_date TYPE sy-datum.

DATA: g_budat TYPE bsik-budat.

*<<<< CR01 START ADD DATA STATEMENT

DATA: wk_belnr LIKE bsid-zuonr,

wk_x_belnr LIKE bsid-zuonr,

ZUONR LIKE BSID-ZUONR,

WRBTR LIKE BSID-WRBTR,

WK_ZUONR LIKE BSID-ZUONR,

WK_WRBTR LIKE BSID-WRBTR.

*>>>> CR01 END ADD DATA STATEMENT

DATA: l_it_bsik TYPE STANDARD TABLE OF bsik. "INS MG050706

DATA: l_wa_bsik TYPE bsik. "INS MG050706

TYPE-POOLS: slis. "INS MG020207

DATA: "INS MG020207

gt_fieldcat TYPE slis_t_fieldcat_alv, "INS MG020207

gs_layout TYPE slis_layout_alv, "INS MG020207

gs_fieldcat TYPE slis_fieldcat_alv. "INS MG020207

-


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.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Why are you using AT..ENDAT.

Have you tried with COLLECT statement.

Regards,

Atish

8 REPLIES 8

Former Member
0 Kudos

Hi,

Why are you using AT..ENDAT.

Have you tried with COLLECT statement.

Regards,

Atish

Former Member
0 Kudos

Hi,

if u want the subtotal in ALV output, u don't need to use AT-END OF....ENDON.

Sort the table you are passing to REUSE_ALV_GRID_DISPLAY

declare a int tab to store sort information whose TYPE should be SLIS_T_SORTINFO_ALV. and a workarea SLIS_SORTINFO_ALV

WA_SORT-FIELDNAME = 'BELNR'.

WA_SORT-DOWN = 'X'.

WA_SORT-SPOS = 1.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO T_SORT.

& pass this T_SORT to IT_SORT in REUSE..............

this will work....

Reward if useful

Regards

ANUPAM

0 Kudos

Hi,

Thans you very much for your email.

I tried to writ the codes as you adviced as following:

-


DATA:

t_sort type SLIS_T_SORTINFO_ALV,

wa_sort type SLIS_SORTINFO_ALV.

-


sort gt_outalv.

WA_SORT-FIELDNAME = 'BELNR'.

WA_SORT-DOWN = 'X'.

WA_SORT-SPOS = 1.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO T_SORT.

**********************************************

So far, the subtotal wrbtr have not come out.

Question:

How can I "pass this T_SORT to IT_SORT in REUSE.............."?

Please help!!

Thank you.

0 Kudos

hi,

In the FM REUSE_ALV_GRID_DISPLAY, there is an exporting parameter named IT_SORT. put IT_SORT = T_SORT..

Reward if useful

Regards

ANUPAM

0 Kudos

Hi ANUPAM,

Thank you for you help so much.

I tried your advice, but the subtotal amount for

betrg(14), " amount

waers(3), " currency

have not come out!

Question,

How can i sum up the betrg which have same belnr number in alv?

Please help/

Thank you so much!

paruchuri_nagesh
Active Contributor
0 Kudos

HI

Have alook at below program

&----


*& Report ZINTERNALTABLE

*&

&----


*&

*&

&----


REPORT zinternaltable.

TYPES:BEGIN OF itab,

num TYPE i,

name(10) TYPE c,

amt type i,

END OF itab.

DATA : wa_itab TYPE itab,

it_itab TYPE STANDARD TABLE OF itab.

DATA : v_lines TYPE i.

wa_itab-num = 1.

wa_itab-name = 'nag'.

wa_itab-amt = 1000.

append wa_itab TO it_itab.

wa_itab-num = 1.

wa_itab-name = 'nag'.

wa_itab-amt = 2000.

append wa_itab TO it_itab.

wa_itab-num = 1.

wa_itab-name = 'nag'.

wa_itab-amt = 1500.

append wa_itab TO it_itab.

wa_itab-num = 2.

wa_itab-name = 'sri'.

wa_itab-amt = 500.

append wa_itab tO it_itab.

wa_itab-num = 2.

wa_itab-name = 'sri'.

wa_itab-amt = 600.

append wa_itab TO it_itab.

wa_itab-num = 2.

wa_itab-name = 'sri'.

wa_itab-amt = 700.

append wa_itab TO it_itab.

wa_itab-num = 3.

wa_itab-name = 'ganesh'.

wa_itab-amt = 1200.

append wa_itab TO it_itab.

wa_itab-num = 3.

wa_itab-name = 'ganesh'.

wa_itab-amt = 1300.

append wa_itab TO it_itab.

wa_itab-num = 3.

wa_itab-name = 'ganesh'.

wa_itab-amt = 1400.

append wa_itab TO it_itab.

wa_itab-num = 4.

wa_itab-name = 'suresh'.

wa_itab-amt = 900.

append wa_itab TO it_itab.

wa_itab-num = 4.

wa_itab-name = 'suresh'.

wa_itab-amt = 300.

append wa_itab TO it_itab.

sort it_itab.

LOOP AT it_itab INTO wa_itab.

at first.

write 😕 'details of sales order:'.

uline.

endat.

at new num.

write 😕 'serial num:', wa_itab-num.

uline.

endat.

WRITE 😕 wa_itab-num , wa_itab-name , wa_itab-amt.

at end of num.

uline.

sum.

write 😕 'total amount:',wa_itab-amt.

uline.

endat.

*

at last.

sum.

uline.

write:/ 'grand total:',wa_itab-amt.

endat.

ENDLOOP.

describe table it_itab lines v_lines.

WRITE:/'no of records :', v_lines.

Regards

Nagesh.Paruchuri

Former Member
0 Kudos

hi,

sort the table u are passing in the FM by the field for which u want sub total.

the field for which u want sub total, pass X in the Parameter SUBTOT in Layout.

and the field whose subtotal is to be done pass X in the parameter DO_SUM in the Field catalog

Pls reward if helpful

0 Kudos

hi,

Sorry for ask you so many times. I am learning abap recently. I am so cofused about FM.

I wrote the code as following:

DATA:

t_sort type SLIS_T_SORTINFO_ALV,

wa_sort type SLIS_SORTINFO_ALV.

sort gt_outalv.

WA_SORT-FIELDNAME = 'BELNR'.

WA_SORT-DOWN = 'X'.

WA_SORT-SPOS = 1.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO T_SORT.

Here is the image of alv.

-


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

I did what you told me, but the subtotal for the same adversary have no come out.Please help.

Sorry for bothering you fo much.

Thank you .