2008 Nov 11 9:25 AM
hi friends..
iam using "all entries" for 2 tables is this code correct..if any changes do tell me
tables:mard,makt.
types: begin of str_mard,
matnr type mard-matnr,
lgort type mard-lgort,
werks type mard-werks,
end of str_mard.
data: it_mard type standard table of str_mard.
data:wa_mard type str_mard.
DATA:S_MATNR TYPE MATNR.
DATA: Z_MATNR TYPE MATNR.
types: begin of str_makt,
matnr type makt-matnr,
maktg type makt-maktg,
end of str_makt.
data: it_makt type standard table of str_makt.
data:wa_makt type str_makt.
types: begin of str_final,
matnr type mard-matnr,
lgort type mard-lgort,
werks type mard-werks,
maktg type makt-maktg,
end of str_final.
data: it_final type standard table of str_final.
data:wa_final type str_final.
SELECT-OPTIONS: V_MATNR FOR MARD-MATNR.
select matnr
lgort
werks from mard into table it_mard
.
select matnr
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
loop at it_makt into wa_makt .
move wa_makt to wa_final.
read table it_mard into wa_mard with key matnr = wa_final-matnr.
move wa_mard-lgort to wa_final-lgort.
move wa_mard-werks to wa_final-werks.
write:/ wa_final-matnr,
wa_final-lgort,
wa_final-werks,
wa_final-maktg.
endloop.
2008 Nov 11 9:45 AM
.............................
SELECT-OPTIONS: V_MATNR FOR MARD-MATNR.
select matnr lgort werks from mard into table it_mard
where matnr in V_MATNR.
if not it_mard[] is initial.
select matnr maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr
and spras eq 'E'.
sort it_makt by matnr.
loop at it_mard into wa_mard.
move wa_mard-matnr to wa_final-matnr.
move wa_mard-lgort to wa_final-lgort.
move wa_mard-werks to wa_final-werks.
read table it_makt with key matnr = wa_mard-matnr.
if sy-subrc eq 0.
move wa_makt-maktg to wa_final-maktg.
endif.
append wa_final to it_final.
*write:/ wa_final-matnr,
*wa_final-lgort,
*wa_final-werks,
*wa_final-maktg.
clear wa_final.
endloop.
loop at it_final to wa_final.
write:/ wa_final-matnr,
wa_final-lgort,
wa_final-werks,
wa_final-maktg.
endloop.
2008 Nov 11 9:28 AM
Hi,
do like this
select matnr
lgort
werks from mard into table it_mard
.
if not it_mard[] is initial.
select matnr
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
endif.
loop at it_makt into wa_makt .
move : wa_makt-matnr to wa_final-matnr,
wa_makt-maktx to wa_final-maktx.
read table it_mard into wa_mard with key matnr = wa_final-matnr.
move wa_mard-lgort to wa_final-lgort.
move wa_mard-werks to wa_final-werks.
write:/ wa_final-matnr,
wa_final-lgort,
wa_final-werks,
wa_final-maktg.
endloop.
Regards,
Nagaraj
2008 Nov 11 9:30 AM
Hi,
In the following code you are not using the select-options.
SELECT-OPTIONS: V_MATNR FOR MARD-MATNR.
change it like this.
select matnr
lgort
werks from mard into table it_mard
where matnr in v_matnr.
if sy-subrc eq 0.
select matnr
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
here if you are expecting duplicte records the use the entire primary key in the select query
like
select matnr werks lgort ( include these field in the table it_makt )
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
Regards,
Venkatesh
endif.
2008 Nov 11 9:34 AM
Hi Gundala,
Before using the FOR ALL ENTRIES please make sure that you follow two things in mind.
1. Always Sort the table on which you are putting the FOR ALL ENTRIES in table.
2. check the table is not initial. If not initial then execute the FOR ALL ENTRIES otherwise it will pick all the values.
I have done the modifcation on your code. please see in comment.
select matnr
lgort
werks from mard into table it_mard
.
sort it_mard by matnr. "all add this condition
if not it_mard[] is initial. "all add this condition
select matnr
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
endif.
loop at it_makt into wa_makt .
move wa_makt to wa_final.
read table it_mard into wa_mard with key matnr = wa_final-matnr.
move wa_mard-lgort to wa_final-lgort.
move wa_mard-werks to wa_final-werks.
write:/ wa_final-matnr,
wa_final-lgort,
wa_final-werks,
wa_final-maktg.
endloop.
2008 Nov 11 9:38 AM
Hi,
First of all you are not using your select-options in your report anywhere.
You can use it in your first select statement since you are using the "for all entries" concept.
Secondly before using "for all entries:" check this:
select matnr
lgort
werks from mard into table it_mard where matnr in V_MATNR.
if not it_mard[] is initial.
select matnr
maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr.
endif.
Thanks & Regards
2008 Nov 11 9:43 AM
Hi
Good
I think it should work fine, if it is giving any error than post the error.
Thanks
mrutyun^
2008 Nov 11 9:45 AM
.............................
SELECT-OPTIONS: V_MATNR FOR MARD-MATNR.
select matnr lgort werks from mard into table it_mard
where matnr in V_MATNR.
if not it_mard[] is initial.
select matnr maktg from makt into table it_makt
for all entries in it_mard
where matnr = it_mard-matnr
and spras eq 'E'.
sort it_makt by matnr.
loop at it_mard into wa_mard.
move wa_mard-matnr to wa_final-matnr.
move wa_mard-lgort to wa_final-lgort.
move wa_mard-werks to wa_final-werks.
read table it_makt with key matnr = wa_mard-matnr.
if sy-subrc eq 0.
move wa_makt-maktg to wa_final-maktg.
endif.
append wa_final to it_final.
*write:/ wa_final-matnr,
*wa_final-lgort,
*wa_final-werks,
*wa_final-maktg.
clear wa_final.
endloop.
loop at it_final to wa_final.
write:/ wa_final-matnr,
wa_final-lgort,
wa_final-werks,
wa_final-maktg.
endloop.
2008 Nov 11 11:35 AM