12-15-2006 5:06 AM
why this code is not wotking properly.
SORT it_mara BY matnr. sy-subrc =4
SORT it_makt BY matnr. sy-subrc =4
SORT it_mseg BY matnr. sy-subrc =4
LOOP AT it_mara INTO wa_mara. sy-subrc =4
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE wa_mara-matnr TO wa_final-matnr.
MOVE wa_mara-matkl TO wa_final-matkl.
MOVE wa_makt-maktx TO wa_final-maktx.
APPEND wa_final TO it_final.
ENDIF.
ENDLOOP.
LOOP AT it_mara INTO wa_mara.
READ TABLE it_mseg INTO wa_mseg WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.sy-subrc =8
IF sy-subrc = 0.
MOVE wa_mseg-bwart TO wa_final-bwart.sy-subrc =8
APPEND wa_final TO it_final.
ENDIF.
ENDLOOP.
SORT it_final BY matnr bwart.
LOOP AT it_final INTO wa_final.
IF wa_final-bwart = '101' OR
wa_final-bwart = '103' OR
wa_final-bwart = '105'.
count_gr = count_gr + 1.
ENDIF.
IF wa_final-bwart = '201' OR
wa_final-bwart = '261' OR
wa_final-bwart = '281' OR
wa_final-bwart = '291' OR
wa_final-bwart = '301' OR
wa_final-bwart = '311' OR
wa_final-bwart = '541'.
count_gi = count_gi + 1.
ENDIF.
ENDLOOP.
12-15-2006 5:12 AM
Hello,
Check if your internal table it_mara is empty.
Regards,
Manoj
12-15-2006 5:16 AM
Hi,
Remove all SY-SUBRC s. Check SY-SUBRC = 0 or not after READ statement.
12-15-2006 5:17 AM
Hi ,
Could you please tell me why are you assigning sy-subrc =4 in your program , it is advisable not to do this in your program.
Regards
Arun
12-15-2006 5:21 AM
Hi Jyoti
READ TABLE it_mseg INTO wa_mseg WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.<b>sy-subrc =8</b>
IF sy-subrc = 0.
MOVE wa_mseg-bwart TO wa_final-bwart.sy-subrc =8
APPEND wa_final TO it_final.
ENDIF.
With this code, you will never populate BWARt in internal table IT_FINAL.
Kind Regards
Eswar
12-15-2006 5:28 AM
Hi one thing i noticed, why you are appending 2 times to final table.wa_final-
put in the following way,it will improve your report performance:-<br>
SORT it_mara BY matnr.<br>
SORT it_makt BY matnr.<br>
SORT it_mseg BY matnr.<br>
LOOP AT it_mara INTO wa_mara. <br>
clear wa_makt.<br>
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.<br>
IF sy-subrc = 0.<br>
MOVE corresponding wa_marar TO wa_final.<br>
ENDIF.<br>
clear wa_mseg.<br>
READ TABLE it_mseg INTO wa_mseg WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.<br>
IF sy-subrc = 0.<br>
MOVE wa_mseg-bwart TO wa_final-bwart.<br>
ENDIF.<br>
APPEND wa_final TO it_final.<br>
clear wa_final.<br>
ENDLOOP.<br>
SORT it_final BY matnr bwart.<br>
LOOP AT it_final INTO wa_final where<br>
bwart = '101' OR<br>
bwart = '103' OR<br>
bwart = '105'.<br>
count_gr = count_gr + 1.<br>
ENDLOOP.<br>
LOOP AT it_final INTO wa_final where<br>
bwart = '201' OR<br>
bwart = '261' OR<br>
bwart = '281' OR<br>
bwart = '291' OR<br>
bwart = '301' OR<br>
bwart = '311' OR<br>
bwart = '541'.<br>
count_gi = count_gi + 1.<br>
ENDLOOP.<br>
You can also remove the hardcoding foe BWART.<br>
12-15-2006 5:29 AM
hi,
What it can see immediately is that there should be a space after = sign
sy-subrc = 4 not sy-subrc =4
also missing period.at all places.
this is the compiled code,
types: begin of final,
matnr type mara-matnr,
matkl type mara-matkl,
BWART type mseg-BWART,
MAKTX type makt-MAKTX,
end of final.
Data: it_final type table of final,
wa_final type final.
data: it_mara type table of mara,
wa_mara like line of it_mara,
it_makt type table of makt,
wa_makt like line of it_makt,
it_mseg type table of mseg,
wa_mseg type mseg,
count_gr type i,
count_gi type i.
*wa_makt like line of it_makt.
SORT it_mara BY matnr. sy-subrc = 4.
SORT it_makt BY matnr. sy-subrc = 4.
SORT it_mseg BY matnr. sy-subrc = 4.
LOOP AT it_mara INTO wa_mara. sy-subrc = 4.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE wa_mara-matnr TO wa_final-matnr.
MOVE wa_mara-matkl TO wa_final-matkl.
MOVE wa_makt-maktx TO wa_final-maktx.
APPEND wa_final TO it_final.
ENDIF.
ENDLOOP.
LOOP AT it_mara INTO wa_mara.
READ TABLE it_mseg INTO wa_mseg WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.sy-subrc = 8.
IF sy-subrc = 0.
MOVE wa_mseg-bwart TO wa_final-bwart.sy-subrc = 8.
APPEND wa_final TO it_final.
ENDIF.
ENDLOOP.
SORT it_final BY matnr bwart.
LOOP AT it_final INTO wa_final.
IF wa_final-bwart = '101' OR
wa_final-bwart = '103' OR
wa_final-bwart = '105'.
count_gr = count_gr + 1.
ENDIF.
IF wa_final-bwart = '201' OR
wa_final-bwart = '261' OR
wa_final-bwart = '281' OR
wa_final-bwart = '291' OR
wa_final-bwart = '301' OR
wa_final-bwart = '311' OR
wa_final-bwart = '541'.
count_gi = count_gi + 1.
ENDIF.
ENDLOOP.
Regards,
12-15-2006 6:41 AM
Hi,
I want to ask 1 question here... Why u r assigning SY-SUBRC = 4 after the SORT..
Ok anyways ...U need to do some changes to ur code..
In ur final loop process I think ur using the append twise to ur it_final.
See the following Code....
SORT it_mara BY matnr.
SORT it_makt BY matnr.
SORT it_mseg BY matnr.
LOOP AT it_mara INTO wa_mara.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE wa_mara-matnr TO wa_final-matnr.
MOVE wa_mara-matkl TO wa_final-matkl.
MOVE wa_makt-maktx TO wa_final-maktx.
ENDIF.
READ TABLE it_mseg INTO wa_mseg WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE wa_mseg-bwart TO wa_final-bwart.
ENDIF.
APPEND wa_final TO it_final.
CLEAR wa_final .
ENDLOOP.
SORT it_final BY matnr bwart.
LOOP AT it_final INTO wa_final.
IF wa_final-bwart = '101' OR
wa_final-bwart = '103' OR
wa_final-bwart = '105'.
count_gr = count_gr + 1.
ENDIF.
IF wa_final-bwart = '201' OR
wa_final-bwart = '261' OR
wa_final-bwart = '281' OR
wa_final-bwart = '291' OR
wa_final-bwart = '301' OR
wa_final-bwart = '311' OR
wa_final-bwart = '541'.
count_gi = count_gi + 1.
ENDIF.
ENDLOOP.