10-07-2009 3:15 PM
I'm just wondering if anyone can help. I'm very new to the programming lark. I've got the below program
SELECT aamatnr bbmatnr aalifnr aainfnr
aaerdat aaernam ccerdat ccernam
ccvdatu ccbdatu
FROM eina AS aa INNER JOIN makt AS bb ON aamatnr = bbmatnr
INNER JOIN eord AS cc ON aamatnr = ccmatnr AND aalifnr = cclifnr
INTO CORRESPONDING FIELDS OF TABLE it_ir_v_sl
WHERE aa~matnr IN s_matnr AND
cc~flifn EQ 'X'.
SELECT * FROM a017 INTO wa_a017
FOR ALL ENTRIES IN it_ir_v_sl
WHERE matnr = it_ir_v_sl-matnr AND
lifnr = it_ir_v_sl-lifnr.
ENDSELECT.
-
I want to write fields
matnr,
maktx,
infnr,
lifnr,
erdat,
ernam,
datab, - from table a017
datbi, - from table a017
erdat,
ernam,
vdatu,
bdatu.
But i'm not sure how to get the two internal table that i've pulled the info into to fit together so i can write this out.
If anyone can help on this, it would be a great help.
Thanks
10-07-2009 3:24 PM
Build a final internal table with all the fields you require.
SELECT aa~matnr bb~matnr aa~lifnr aa~infnr
aa~erdat aa~ernam cc~erdat cc~ernam
cc~vdatu cc~bdatu
FROM eina AS aa INNER JOIN makt AS bb ON aa~matnr = bb~matnr
INNER JOIN eord AS cc ON aa~matnr = cc~matnr AND aa~lifnr = cc~lifnr
INTO CORRESPONDING FIELDS OF TABLE it_ir_v_sl
WHERE aa~matnr IN s_matnr AND
cc~flifn EQ 'X'.
if it_ir_v_sl[] is not initial.
SELECT * FROM a017 INTO table it_a017 FOR ALL ENTRIES IN it_ir_v_sl
WHERE matnr = it_ir_v_sl-matnr AND
lifnr = it_ir_v_sl-lifnr.
endif.
loop at it_ir_v_sl into wa1.
" if only 1 record exists in it_a017 for a record in
" it_ir_v_sl then avoid second loop and use read statement
loop at it_a017 into wa2 where matnr = wa1-matnr and lifnr = wa1-lifnr.
move-corresponding wa1 to wa_final.
move-corresponding wa2 to wa_final.
append wa_final to it_final.
clear: wa2,wa_final.
endloop.
if sy-subrc ne 0. " if required
move-corresponding wa1 to wa_final.
append wa_final to it_final.
clear wa_final.
endif.
endloop.
10-07-2009 3:19 PM
Hi
Take one Internal table with all fields as t_final.
format the data to final inter table.
loop at it_ir_v_sl.
move-corresponding fields to t_final.
SELECT * FROM a017 INTO wa_a017
FOR ALL ENTRIES IN it_ir_v_sl
WHERE matnr = it_ir_v_sl-matnr AND
lifnr = it_ir_v_sl-lifnr.
if sy-subrc = 0.
move the date fields to t_final table.
endif.
append t_final.
endloop.
10-07-2009 3:24 PM
Build a final internal table with all the fields you require.
SELECT aa~matnr bb~matnr aa~lifnr aa~infnr
aa~erdat aa~ernam cc~erdat cc~ernam
cc~vdatu cc~bdatu
FROM eina AS aa INNER JOIN makt AS bb ON aa~matnr = bb~matnr
INNER JOIN eord AS cc ON aa~matnr = cc~matnr AND aa~lifnr = cc~lifnr
INTO CORRESPONDING FIELDS OF TABLE it_ir_v_sl
WHERE aa~matnr IN s_matnr AND
cc~flifn EQ 'X'.
if it_ir_v_sl[] is not initial.
SELECT * FROM a017 INTO table it_a017 FOR ALL ENTRIES IN it_ir_v_sl
WHERE matnr = it_ir_v_sl-matnr AND
lifnr = it_ir_v_sl-lifnr.
endif.
loop at it_ir_v_sl into wa1.
" if only 1 record exists in it_a017 for a record in
" it_ir_v_sl then avoid second loop and use read statement
loop at it_a017 into wa2 where matnr = wa1-matnr and lifnr = wa1-lifnr.
move-corresponding wa1 to wa_final.
move-corresponding wa2 to wa_final.
append wa_final to it_final.
clear: wa2,wa_final.
endloop.
if sy-subrc ne 0. " if required
move-corresponding wa1 to wa_final.
append wa_final to it_final.
clear wa_final.
endif.
endloop.