Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

report

Former Member
0 Kudos

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.

7 REPLIES 7

Former Member
0 Kudos

Hello,

Check if your internal table it_mara is empty.

Regards,

Manoj

Former Member
0 Kudos

Hi,

Remove all SY-SUBRC s. Check SY-SUBRC = 0 or not after READ statement.

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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>

sourabhshah
Advisor
Advisor
0 Kudos

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,

Former Member
0 Kudos

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.