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

Collect Statement Issue

Former Member
0 Likes
384

Experts,

I am trying to use collect statement to get the sum of certain fields, but am only able to read the last record row instead of summing all the above lines.

Appending is my code, please guide me where am I wrong...

loop at it_fy into  wa_fy.

*if count > 0 .

*

*         WAIVED_PRIN  = wa_final-WAIVED_PRIN + WA_ZCATR_DVBAR_VW-MIGPR.

*         WAIVED_LPSC = wa_final-WAIVED_LPSC + WA_ZCATR_DVBAR_VW-MIGLP.

*         WAIVEDACCRLP = wa_final-WAIVEDACCRLP + WA_ZCATR_DVBAR_VW-MIGAL.

*         WAIVED_NTA_P = wa_final-WAIVED_NTA_P + WA_ZCATR_DVBAR_VW-MIGPRN.

*         WAIVED_NTA_L = wa_final-WAIVED_NTA_L + WA_ZCATR_DVBAR_VW-MIGLPN.

*         WAIVED_NTACRLP = wa_final-WAIVED_NTACRLP + WA_ZCATR_DVBAR_VW-MIGALN.

*         RECOVERABLE_PRIN = wa_final-RECOVERABLE_PRIN + WA_ZCATR_DVBAR_VW-MIGPR.

*         RECOVERABLE_LPSC = wa_final-RECOVERABLE_LPSC + WA_ZCATR_DVBAR_VW-MIGLP.

*         RECOVERABLE_ACCRLP = wa_final-RECOVERABLE_ACCRLP + WA_ZCATR_DVBAR_VW-MIGAL.

*         RECOVERABLE_NTA_P = wa_final-RECOVERABLE_NTA_P + WA_ZCATR_DVBAR_VW-MIGPRN.

*         RECOVERABLE_NTA_L = wa_final-RECOVERABLE_NTA_L + WA_ZCATR_DVBAR_VW-MIGLPN.

*         RECOVERABLE_NTACRLP = wa_final-RECOVERABLE_NTACRLP + WA_ZCATR_DVBAR_VW-MIGALN.

*

*

*      ENDIF.

       COLLECT wa_fy INTO it_fy .

endloop.

   LOOP AT IT_ZCATR_DVBAR INTO WA_ZCATR_DVBAR.

     WA_FINAL-VKONT = WA_ZCATR_DVBAR-VKONT.

     WA_FINAL-DVBREF = WA_ZCATR_DVBAR-DVBDOC.

     WA_FINAL-DVBST = WA_ZCATR_DVBAR-DVBST.

     WA_FINAL-VKONA = WA_ZCATR_DVBAR-VKONA.

     WA_FINAL-OLDKNO = WA_ZCATR_DVBAR-OLDKNO.

     WA_FINAL-ERDAT = WA_ZCATR_DVBAR-ERDAT.

     WA_FINAL-LEGAL = WA_ZCATR_DVBAR-LEGAL.

     WA_FINAL-CSFNO = WA_ZCATR_DVBAR-CSFNO.

     WA_FINAL-ORGPR = WA_ZCATR_DVBAR-ORGPR.

     WA_FINAL-ORGLP = WA_ZCATR_DVBAR-ORGLP.

     WA_FINAL-ORGPRN = WA_ZCATR_DVBAR-ORGPRN.

     WA_FINAL-ORGLPN = WA_ZCATR_DVBAR-ORGLPN.

     WA_FINAL-MIGPR = WA_ZCATR_DVBAR-MIGPR.

     WA_FINAL-MIGLP = WA_ZCATR_DVBAR-MIGLP.

     WA_FINAL-MIGAL = WA_ZCATR_DVBAR-MIGAL.

     WA_FINAL-MIGPRN = WA_ZCATR_DVBAR-MIGPRN.

     WA_FINAL-MIGLPN = WA_ZCATR_DVBAR-MIGLPN.

     WA_FINAL-MIGALN = WA_ZCATR_DVBAR-MIGALN.

     READ TABLE IT_FKKVKP INTO WA_FKKVKP WITH KEY VKONT = WA_ZCATR_DVBAR-VKONT BINARY SEARCH.

     IF SY-SUBRC = 0.

       WA_FINAL-GPART = WA_FKKVKP-GPART.

     ENDIF.

     READ TABLE IT_EKUN INTO WA_EKUN WITH KEY PARTNER = WA_FKKVKP-GPART BINARY SEARCH.

     IF SY-SUBRC = 0.

       WA_FINAL-CLASSIFICATION = WA_EKUN-CLASSIFICATION.

     ENDIF.

     COUNT = 0.

     LOOP AT IT_ZCATR_DVBAR_VW INTO WA_ZCATR_DVBAR_VW WHERE DVBREF = WA_ZCATR_DVBAR-DVBDOC.

       COUNT = COUNT + 1 .

       IF SY-SUBRC = 0.

       IF WA_ZCATR_DVBAR_VW-DVBST eq 'W' .

         wa_final-WAIVED_PRIN = WA_ZCATR_DVBAR_VW-MIGPR.

         wa_final-WAIVED_LPSC = WA_ZCATR_DVBAR_VW-MIGLP.

         wa_final-WAIVEDACCRLP = WA_ZCATR_DVBAR_VW-MIGAL.

         wa_final-WAIVED_NTA_P = WA_ZCATR_DVBAR_VW-MIGPRN.

         wa_final-WAIVED_NTA_L = WA_ZCATR_DVBAR_VW-MIGLPN.

         wa_final-WAIVED_NTACRLP = WA_ZCATR_DVBAR_VW-MIGALN.

        ELSEIF WA_ZCATR_DVBAR_VW-DVBST EQ 'R'.

         wa_final-RECOVERABLE_PRIN = WA_ZCATR_DVBAR_VW-MIGPR.

         wa_final-RECOVERABLE_LPSC = WA_ZCATR_DVBAR_VW-MIGLP.

         wa_final-RECOVERABLE_ACCRLP = WA_ZCATR_DVBAR_VW-MIGAL.

         wa_final-RECOVERABLE_NTA_P = WA_ZCATR_DVBAR_VW-MIGPRN.

         wa_final-RECOVERABLE_NTA_L = WA_ZCATR_DVBAR_VW-MIGLPN.

         wa_final-RECOVERABLE_NTACRLP = WA_ZCATR_DVBAR_VW-MIGALN.

       ENDIF.

        ENDIF.

     ENDLOOP.

       read table it_fy into wa_fy WITH KEY DVBREF = WA_ZCATR_DVBAR-DVBDOC .

       if sy-subrc = 0.

         wa_final-WAIVED_PRIN = wa_fy-WAIVED_PRIN.

         wa_final-WAIVED_LPSC = wa_fy-WAIVED_LPSC.

         wa_final-WAIVEDACCRLP = wa_fy-WAIVEDACCRLP.

         wa_final-WAIVED_NTA_P = wa_fy-WAIVED_NTA_P.

         wa_final-WAIVED_NTA_L = wa_fy-WAIVED_NTA_L.

         wa_final-WAIVED_NTACRLP = wa_fy-WAIVED_NTACRLP .

         wa_final-RECOVERABLE_PRIN = wa_fy-RECOVERABLE_PRIN.

         wa_final-RECOVERABLE_LPSC = wa_fy-RECOVERABLE_LPSC.

         wa_final-RECOVERABLE_ACCRLP = wa_fy-RECOVERABLE_ACCRLP.

         wa_final-RECOVERABLE_NTA_P = wa_fy-RECOVERABLE_NTA_P.

         wa_final-RECOVERABLE_NTA_L = wa_fy-RECOVERABLE_NTA_L.

         wa_final-RECOVERABLE_NTACRLP = wa_fy-RECOVERABLE_NTACRLP.

         ENDIF.

         WA_FINAL-CLOSING_PRIN = WA_FINAL-MIGPR - WAIVED_PRIN - RECOVERABLE_PRIN .

         WA_FINAL-CLOSING_LPSC = WA_FINAL-MIGLP - WAIVED_LPSC - RECOVERABLE_LPSC.

         WA_FINAL-CLOSING_ACCRLP = WA_FINAL-MIGAL - WAIVEDACCRLP - RECOVERABLE_ACCRLP.

         WA_FINAL-CLOSING_NTA_P = WA_FINAL-MIGPRN - WAIVED_NTA_P - RECOVERABLE_NTA_P.

         WA_FINAL-CLOSING_NTA_L = WA_FINAL-MIGLPN - WAIVED_NTA_L - RECOVERABLE_NTA_L.

         WA_FINAL-CLOSING_NTACRLP = WA_FINAL-MIGALN - WAIVED_NTACRLP - RECOVERABLE_NTACRLP.

       APPEND wa_fy to it_fy.

       APPEND WA_FINAL TO IT_FINAL.

       CLEAR: WA_ZCATR_DVBAR, WA_ZCATR_DVBAR_VW, WA_FINAL, WA_FKKVKP, wa_ekun.

   ENDLOOP.

ENDFORM.                    " GET_DATA

2 REPLIES 2
Read only

kakshat
Product and Topic Expert
Product and Topic Expert
0 Likes
344

Hi Mazal,

I see the COLLECT statement only in the first loop in the code extract you shared so I will restrict myself to my observation regarding to that loop only. You are looping and collecting in the same table. You should use a separate table. Plus, I suggest that you read the F1 help available for the COLLECT statement and that should help you identify the issue.

Regards,

Akshat

Read only

Former Member
0 Likes
344

Hi,

Collect the result in some other internal table.

like: COLLECT wa INTO itab.

Also prerequisite for the use of this statement is that wa is compatible with the row type of itab and all components that are not part of the table key must have a numeric data type (i, p, f).