‎2008 Apr 23 11:11 AM
Hello gurus,
I have an internal table with following fields.
matnr -
werks-----lgort
-
A--
M
A--
M
A--
N
A--
O
B--
M
B--
N
B--
M
i want 2 delete records which have only one lgort associated with particular matnr and werks.
in this example :
i want 2 delete 2 records .....Can anyone tell me logic....
A--
M
B--
M
‎2008 Apr 23 11:47 AM
This works
DATA:
BEGIN OF inrec,
matnr TYPE c,
werks TYPE c,
igort TYPE c,
END OF inrec,
it_in LIKE STANDARD TABLE OF inrec.
DATA:
BEGIN OF sumrec,
matnr TYPE c,
werks TYPE c,
cnt TYPE i,
END OF sumrec,
it_sum LIKE STANDARD TABLE OF sumrec.
inrec-matnr = 'A'.
inrec-werks = 'P'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'N'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'O'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'P'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'P'.
inrec-igort = 'N'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'Q'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
LOOP AT it_in INTO inrec.
sumrec-matnr = inrec-matnr.
sumrec-werks = inrec-werks.
sumrec-cnt = 1.
COLLECT sumrec INTO it_sum.
ENDLOOP.
LOOP AT it_sum INTO sumrec
WHERE cnt = 1.
write:/ 'Deleted', sumrec-matnr, sumrec-werks.
DELETE it_in WHERE matnr = sumrec-matnr
AND werks = sumrec-werks.
ENDLOOP.
loop at it_in into inrec.
write:/ inrec.
endloop.
Output
Deleted A P
Deleted B Q
AQM
AQN
AQO
BPM
BPN
‎2008 Apr 23 11:29 AM
loop itab into wa
read table itab where matnr = wa-matnr and
werks = wa-werks and
lgort ne wa-lgort.
if sy-subrc ne 0.
delete record from itab by using index.
endif.
endloop
‎2008 Apr 23 11:43 AM
that is not working .can u tell any other logic and specify clearly....
‎2008 Apr 23 11:47 AM
This works
DATA:
BEGIN OF inrec,
matnr TYPE c,
werks TYPE c,
igort TYPE c,
END OF inrec,
it_in LIKE STANDARD TABLE OF inrec.
DATA:
BEGIN OF sumrec,
matnr TYPE c,
werks TYPE c,
cnt TYPE i,
END OF sumrec,
it_sum LIKE STANDARD TABLE OF sumrec.
inrec-matnr = 'A'.
inrec-werks = 'P'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'N'.
APPEND inrec TO it_in.
inrec-matnr = 'A'.
inrec-werks = 'Q'.
inrec-igort = 'O'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'P'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'P'.
inrec-igort = 'N'.
APPEND inrec TO it_in.
inrec-matnr = 'B'.
inrec-werks = 'Q'.
inrec-igort = 'M'.
APPEND inrec TO it_in.
LOOP AT it_in INTO inrec.
sumrec-matnr = inrec-matnr.
sumrec-werks = inrec-werks.
sumrec-cnt = 1.
COLLECT sumrec INTO it_sum.
ENDLOOP.
LOOP AT it_sum INTO sumrec
WHERE cnt = 1.
write:/ 'Deleted', sumrec-matnr, sumrec-werks.
DELETE it_in WHERE matnr = sumrec-matnr
AND werks = sumrec-werks.
ENDLOOP.
loop at it_in into inrec.
write:/ inrec.
endloop.
Output
Deleted A P
Deleted B Q
AQM
AQN
AQO
BPM
BPN