hi all,
in the below code i used collect statement to collect data from 3 differnet internal tables and then display in one final table.
but in the output i am getting wrong values.
6609001 10,000.00 23,819.04 23,819.04 2,601.00 " last 3 coloums are wrong values A5400 57,495.36 95,276.16 95,276.16 10,404.00 " last 3 coloums are wrong values 28 67,495.36 119,095.20 119,095.20 13,005.00 " last 3 coloums are wrong values
here is the code
REPORT ZTEMP13 no standard page heading LINE-SIZE 300. perform actual. CLEAR WA_BSEG. perform sply. CLEAR WA_BSEG1. perform lyac. CLEAR WA_BSEG2. perform TACT. CLEAR WA_BSEG3. perform pri_actual. perform final. *&---------------------------------------------------------------------* *& Form ACTUAL FORM ACTUAL . SELECT hkont belnr gjahr KOSTL AUFNR BUKRS PSWBT WRBTR FROM BSEG INTO TABLE IT_BSEG WHERE GJAHR EQ S_GJAHR AND HKONT IN S_HKONT and kostl in s_kostl. IF not it_bseg[] IS INITIAL. SELECT belnr GJAHR MONAT BUKRS BUDAT FROM BKPF INTO TABLE IT_BKPF FOR ALL ENTRIES IN IT_BSEG WHERE MONAT eq s_monat AND belnr = it_BSEG-belnr AND GJAHR = it_BSEG-GJAHR AND BUKRS = it_BSEG-BUKRS. ENDIF. ENDFORM. " ACTUAL *&---------------------------------------------------------------------* *& Form PRI_ACTUAL FORM PRI_ACTUAL . sort it_bseg by hkont aufnr kostl pswbt. LOOP AT IT_BSEG INTO WA_BSEG. wa_coll-hkont = wa_bseg-hkont. wa_coll-aufnr = wa_bseg-aufnr. wa_coll-kostl = wa_bseg-kostl. wa_coll-pswbt = wa_bseg-pswbt. read table IT_BSEG1 INTO WA_BSEG1 with key hkont = wa_coll-hkont. wa_coll-hkont1 = wa_bseg1-hkont. wa_coll-aufnr1 = wa_bseg1-aufnr. wa_coll-kostl1 = wa_bseg1-kostl. wa_coll-pswbt1 = wa_bseg1-pswbt. read table IT_BSEG2 INTO WA_BSEG2 with key hkont = wa_coll-hkont. wa_coll-hkont2 = wa_bseg2-hkont. wa_coll-aufnr2 = wa_bseg2-aufnr. wa_coll-kostl2 = wa_bseg2-kostl. wa_coll-pswbt2 = wa_bseg2-pswbt. read table IT_BSEG3 INTO WA_BSEG3 with key hkont = wa_coll-hkont. wa_coll-hkont3 = wa_bseg3-hkont. wa_coll-aufnr3 = wa_bseg3-aufnr. wa_coll-kostl3 = wa_bseg3-kostl. wa_coll-pswbt3 = wa_bseg3-pswbt. collect wa_coll into it_coll. clear : wa_coll,wa_bseg3,wa_bseg2,wa_bseg1. endloop. ENDFORM. " PRI_ACTUAL *&---------------------------------------------------------------------* *& Form SPLY *&---------------------------------------------------------------------* FORM SPLY . S_GJAHR1 = S_GJAHR - 1. SELECT hkont belnr gjahr KOSTL AUFNR BUKRS PSWBT WRBTR FROM BSEG INTO TABLE IT_BSEG1 WHERE GJAHR EQ S_GJAHR1 AND HKONT IN S_HKONT and kostl in s_kostl. IF not it_bseg1[] IS INITIAL. SELECT belnr GJAHR MONAT BUKRS BUDAT FROM BKPF INTO TABLE IT_BKPF1 FOR ALL ENTRIES IN IT_BSEG1 WHERE MONAT eq s_monat AND belnr = it_BSEG1-belnr AND GJAHR = it_BSEG1-GJAHR AND BUKRS = it_BSEG1-BUKRS. endif. clear s_gjahr1. ENDFORM. " SPLY *&---------------------------------------------------------------------* *& Form LYAC FORM LYAC . S_GJAHR1 = S_GJAHR - 1. SELECT gjahr hkont KOSTL AUFNR BUKRS PSWBT belnr WRBTR FROM BSEG INTO TABLE IT_BSEG2 WHERE GJAHR EQ S_GJAHR1 AND HKONT IN S_HKONT and kostl in s_kostl. clear s_gjahr1. ENDFORM. " LYAC *&---------------------------------------------------------------------* *& Form TACT FORM TACT . SELECT hkont belnr gjahr KOSTL AUFNR BUKRS PSWBT WRBTR FROM BSEG INTO TABLE IT_BSEG3 WHERE GJAHR EQ S_GJAHR AND HKONT IN S_HKONT and kostl in s_kostl. IF not it_bseg3[] IS INITIAL. SELECT belnr GJAHR MONAT BUKRS BUDAT FROM BKPF INTO TABLE IT_BKPF3 FOR ALL ENTRIES IN IT_BSEG3 WHERE MONAT gt 0 and monat le s_monat AND belnr = it_BSEG3-belnr AND GJAHR = it_BSEG3-GJAHR AND BUKRS = it_BSEG3-BUKRS. ENDIF. ENDFORM. " TACT
Moderator message : Duplicate post locked. Continue with Original thread : [collect statement not working properly |;
Edited by: Vinod Kumar on Sep 16, 2011 1:38 PM