2013 Feb 01 11:54 AM
Hi,
I have tried using COLLECT STATEMENT to add MATKL WISE which is not working....suggest me which idea would be better...
How can we add based on MATKL,,,cause mblnr & werks etc.. fields are not even to do collect statement?
loop at itab.
mblnr werks matkl matnr menge
12 2000 AA 123 50
13 2000 CC 124 60
14 1000 DD 125 70
11 2000 AA 123 50
14 2000 CC 124 60
16 1000 DD 125 70
endloop.
ouput:
mblnr werks matkl matnr menge
12 2000 AA 123 100
14 1000 DD 125 140
13 2000 CC 124 120
Hi,
I have tried using COLLECT STATEMENT to add MATKL WISE which is not working....suggest me which idea would be better...
How can we add based on MATKL,,,cause mblnr & werks etc.. fields are not even to do collect statement?
loop at itab.
mblnr werks matkl matnr menge
12 2000 AA 123 50
13 2000 CC 124 60
14 1000 DD 125 70
11 2000 AA 123 50
14 2000 CC 124 60
16 1000 DD 125 70
endloop.
ouput:
mblnr werks matkl matnr menge
12 2000 AA 123 100
14 1000 DD 125 140
13 2000 CC 124 120
2013 Feb 01 12:23 PM
Hi Shree,
The Collect statement works only when the internal table is sorted based on the field you collect.
Put MATKL & numeric fields into another internal table
TYPES : BEGIN OF TY_ADD,
MATKL TYPE MARA-MATKL,
MENGE TYPE P,
END OF TY_ADD.
DATA : IT_ADD TYPE STANDARD TABLE OF TY_ADD,
WA_ADD TYPE TY_ADD,
SORT ITAB BY MATKL.
LOOP AT ITAB.
MOVE ITAB-MATKL TO WA_ADD-MATKL.
MOVE ITAB-MENGE TO WA_ADD-MENGE.
COLLECT WA_ADD INTO IT_ADD.
ENDLOOP.
IT_ADD will have all the collected values based on MATKL.
Let me know if you need additional info on this.
Thanks,
Tooshar Bendale
2013 Feb 01 12:28 PM
Hi
try this
loop at itab.
a = itab-matkl.
read table itab with key matkl = a.
b = sy-tabix.
if sy-subrc = 0.
delete itab index b.
endif.
endloop.
regards
vaibhav
2013 Feb 01 12:40 PM
Hi Shree,
Take the combination of werks,matkl and matnr as the key.Check the below code, hope it helps.
DATA:BEGIN OF WA_ITAB,
MBLNR TYPE MBLNR,
WERKS TYPE WERKS_D,
MATKL TYPE MATKL,
MATNR TYPE MATNR,
MENGE TYPE MENGE_D,
END OF WA_ITAB.
DATA:BEGIN OF WA_ITAB_C,
WERKS TYPE WERKS_D,
MATKL TYPE MATKL,
MATNR TYPE MATNR,
MENGE TYPE MENGE_D,
END OF WA_ITAB_C.
DATA:ITAB LIKE STANDARD TABLE OF WA_ITAB,
ITAB_C LIKE SORTED TABLE OF WA_ITAB_C WITH
UNIQUE KEY WERKS MATKL MATNR,
ITAB_D LIKE STANDARD TABLE OF WA_ITAB.
WA_ITAB-MBLNR = '12'.
WA_ITAB-WERKS = '2000'.
WA_ITAB-MATKL = 'AA'.
WA_ITAB-MATNR = '123'.
WA_ITAB-MENGE = '50'.
APPEND WA_ITAB TO ITAB.
WA_ITAB-MBLNR = '13'.
WA_ITAB-WERKS = '2000'.
WA_ITAB-MATKL = 'CC'.
WA_ITAB-MATNR = '124'.
WA_ITAB-MENGE = '60'.
APPEND WA_ITAB TO ITAB.
WA_ITAB-MBLNR = '14'.
WA_ITAB-WERKS = '1000'.
WA_ITAB-MATKL = 'DD'.
WA_ITAB-MATNR = '125'.
WA_ITAB-MENGE = '70'.
APPEND WA_ITAB TO ITAB.
WA_ITAB-MBLNR = '11'.
WA_ITAB-WERKS = '2000'.
WA_ITAB-MATKL = 'AA'.
WA_ITAB-MATNR = '123'.
WA_ITAB-MENGE = '50'.
APPEND WA_ITAB TO ITAB.
WA_ITAB-MBLNR = '14'.
WA_ITAB-WERKS = '2000'.
WA_ITAB-MATKL = 'CC'.
WA_ITAB-MATNR = '124'.
WA_ITAB-MENGE = '60'.
APPEND WA_ITAB TO ITAB.
WA_ITAB-MBLNR = '16'.
WA_ITAB-WERKS = '1000'.
WA_ITAB-MATKL = 'DD'.
WA_ITAB-MATNR = '125'.
WA_ITAB-MENGE = '70'.
APPEND WA_ITAB TO ITAB.
LOOP AT ITAB INTO WA_ITAB.
MOVE-CORRESPONDING WA_ITAB TO WA_ITAB_C.
COLLECT WA_ITAB_C INTO ITAB_C.
ENDLOOP.
LOOP AT ITAB_C INTO WA_ITAB_C.
READ TABLE ITAB INTO WA_ITAB
WITH KEY WERKS = WA_ITAB_C-WERKS
MATKL = WA_ITAB_C-MATKL
MATNR = WA_ITAB_C-MATNR.
IF SY-SUBRC = 0.
WA_ITAB-MENGE = WA_ITAB_C-MENGE.
APPEND WA_ITAB TO ITAB_D.
ENDIF.
ENDLOOP.
LOOP AT ITAB_D INTO WA_ITAB.
WRITE:/ WA_ITAB-MBLNR,
WA_ITAB-WERKS,
WA_ITAB-MATKL,
WA_ITAB-MATNR,
WA_ITAB-MENGE.
ENDLOOP.
With regards,
2013 Feb 01 1:44 PM
Hi all,
I think we need to add based on MATKL.. is there any option we can add keep all fields together. cause already stores all five fields values into a Internal table..
Thanks
Shree.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |