‎2009 Jun 11 8:27 AM
Hi,
I have a requirement,
This is nothing but Material and Serial no Combination. If same material and Serial number get repeats
no of repairs value should increase
For eg,
Prt no Material no Serial no No of repairs
#A0005 XYZ ABC 1
#A0006 XYZ DCE 1
#A0007 PQR ABC 1
#A0008 XYZ ABC 2By default the repair value will be 1.
I have Material No and Serial no in my final table T_final.
I want to put a condition where it will let us know the if the Materail number is repated with Serial number so that it should add 1 and append the Number of repairs field.
Any suggestions will be appreciated.
Regards,
Kittu
Edited by: Kittu on Jun 11, 2009 9:27 AM
‎2009 Jun 11 8:54 AM
Try something like this
DATA :BEGIN OF ITAB OCCURS 10,
PARTNO(6) TYPE C,
MATNR TYPE MATNR,
SERIAL TYPE GERNR,
REPAIR TYPE I,
END OF ITAB.
DATA : PRV_MATNR TYPE MATNR,
PRV_SERIAL TYPE GERNR,
LV_REPAIR TYPE I,
LV_TABIX TYPE I.
CLEAR :PRV_MATNR,
PRV_SERIAL,
LV_REPAIR.
SORT ITAB BY MATNR SERIAL. "Sort table by material and serial
LOOP AT ITAB.
LV_TABIX = SY-TABIX.
****If previous material number and serial are equal to currents
****increase repair else set repair = 1
IF PRV_MATNR = ITAB-MATNR
AND PRV_SERIAL = ITAB-SERIAL.
LV_REPAIR = LV_REPAIR + 1.
ELSE.
LV_REPAIR = 1.
ENDIF.
ITAB-REPAIR = LV_REPAIR.
MODIFY ITAB INDEX LV_TABIX TRANSPORTING REPAIR. "modify table
PRV_MATNR = ITAB-MATNR. "set previous material
PRV_SERIAL = ITAB-SERIAL. "Set previous serial
ENDLOOP.
‎2009 Jun 11 8:37 AM
Hi Kittu,
Sort your T_final containing these records by Part number descending.
Read table T_final with key Material no = Current record-Material no
Serial no = Current record-serial no.
if sy-subrc eq 0.
T_final-No of repairs = T_final-No of repairs + 1.
else.
T_final-No of repairs = 1.
endif.
Please acknowledge if this answers your question.
~Nanda
‎2009 Jun 11 8:43 AM
Hi Kittu,
take one more internal table by taking Material no and Serial no
LOOP AT itab1.
itab2-material no = itab1-material no.
itab2-serial no = itab1-serial no.
APPEND itab2.
CLEAR itab2.
ENDLOOP.
IF NOT itab2[] IS INITIAL.
SORT itab2 BY material no serial no.
DELETE ADJACENT DUPLICATES FROM itab2 COMPARING material no serial no.
ENDIF.
LOOP AT itab2.
CLEAR v_num.
LOOP AT itab1 WHERE matrial NO = ITAB2-MATERIAL-NO AND
serial no = itab2-serial no.
v_num = v_num + 1.
itab1-no of repairs = v_num.
MODIFY itab1 INDEX sy-tabix.
ENDLOOP.
ENDLOOP.
endloop.
Regards,
Kumar Bandanadham
Edited by: Velangini Showry Maria Kumar Bandanadham on Jun 11, 2009 9:47 AM
‎2009 Jun 11 8:54 AM
Try something like this
DATA :BEGIN OF ITAB OCCURS 10,
PARTNO(6) TYPE C,
MATNR TYPE MATNR,
SERIAL TYPE GERNR,
REPAIR TYPE I,
END OF ITAB.
DATA : PRV_MATNR TYPE MATNR,
PRV_SERIAL TYPE GERNR,
LV_REPAIR TYPE I,
LV_TABIX TYPE I.
CLEAR :PRV_MATNR,
PRV_SERIAL,
LV_REPAIR.
SORT ITAB BY MATNR SERIAL. "Sort table by material and serial
LOOP AT ITAB.
LV_TABIX = SY-TABIX.
****If previous material number and serial are equal to currents
****increase repair else set repair = 1
IF PRV_MATNR = ITAB-MATNR
AND PRV_SERIAL = ITAB-SERIAL.
LV_REPAIR = LV_REPAIR + 1.
ELSE.
LV_REPAIR = 1.
ENDIF.
ITAB-REPAIR = LV_REPAIR.
MODIFY ITAB INDEX LV_TABIX TRANSPORTING REPAIR. "modify table
PRV_MATNR = ITAB-MATNR. "set previous material
PRV_SERIAL = ITAB-SERIAL. "Set previous serial
ENDLOOP.
‎2009 Jun 11 9:29 AM
‎2009 Jun 11 10:10 AM
Hi,
try this..Instead of using loop within loop you can go for this....
LOOP AT intab INTO gs_details.
lv_count = lv_count + 1.
AT END OF matnr.
gs_total-serial = gs_details-serial.
gs_total-cov_total = lv_count.
APPEND gs_total TO gt_total.
CLEAR : gs_total,
lv_count,
gs_details.
ENDAT.
ENDLOOP.
‎2009 Jun 11 10:22 AM
DATA:BEGIN OF itab OCCURS 0,
matnr TYPE matnr,
sernr TYPE qmel-serialnr,
repairs TYPE i,
END OF itab.
itab-matnr = 'XYZ' . itab-sernr = 'ABC'. APPEND itab.
itab-matnr = 'XYZ' . itab-sernr = 'DCE'. APPEND itab.
itab-matnr = 'PQR' . itab-sernr = 'ABC'. APPEND itab.
itab-matnr = 'XYZ' . itab-sernr = 'ABC'. APPEND itab.
SORT itab BY matnr sernr ASCENDING.
DATA:cnt TYPE i.
LOOP AT itab.
AT NEW sernr.
cnt = 1.
ENDAT.
itab-repairs = cnt.
MODIFY itab TRANSPORTING repairs.
cnt = cnt + 1.
ENDLOOP.