‎2007 Sep 24 12:26 PM
Hi,
i need to write 3 select queries to retreive data from 3 different tables and place it in one internal table without using join or for all entries. please help me that can do the following or is there any other way to do that.
begin of itab,
ebeln like ekko-ebeln,
ebelp like ekko-ebelp,
matnr like mara-matnr,
end of itab.
select ebeln from ekko into corresponding fields of itab where ebeln = user given ebeln.
select ebelp from ekpo ..........................of itab.......
select matnr from mara ...........................of itab.......
Regards,
Phyrose.
‎2007 Sep 24 12:31 PM
hi
select data from ekpo and keep in one internal table itab1.
select data from mara and keep in one internal table itab2.
select data from ekko iand keep in one internal table itab3.
loop at itab3.
read table itab1 with key ebelp = itab3-ebelp.
if sy-subrc = 0.
move itab3 to itab.
move itab1 to itab.
endif.
endloop.
loop at itab3.
read table itab2 with key matnr= itab3-matnr.
if sy-subrc = 0.
move itab3 to itab.
move itab2 to itab.
endif.
endloop.
but performance wise it is not good.
regards
sandhya
‎2007 Sep 24 12:32 PM
hi
*----
*----
TABLES USED IN THIS REPORT -
*----
TABLES: lfa1,bkpf ,bsak.
*----
*--
*----
TYPES: BEGIN OF ty_move,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
END OF ty_move.
DATA: it_move TYPE TABLE OF ty_move ,
wa_move TYPE ty_move.
TYPES: BEGIN OF ty_bsak,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
END OF ty_bsak.
DATA: it_bsak TYPE TABLE OF ty_bsak,
wa_bsak TYPE ty_bsak.
TYPES: BEGIN OF ty_bseg,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
wrbtr TYPE bseg-wrbtr,
qsskz TYPE bseg-qsskz,
END OF ty_bseg.
DATA: it_bseg TYPE TABLE OF ty_bseg,
wa_bseg TYPE ty_bseg.
TYPES: BEGIN OF ty_fit,
lifnr TYPE bsak-lifnr,
gjahr TYPE bsak-gjahr,
belnr TYPE bsak-belnr,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
END OF ty_fit.
DATA: it_fit TYPE TABLE OF ty_fit ,
wa_fit TYPE ty_fit.
TYPES: BEGIN OF ty_out,
belnr TYPE bsak-belnr,
lifnr TYPE lfa1-lifnr,
panno TYPE j_1imovend-j_1ipanno,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
dmbtr TYPE bsak-dmbtr,
tds LIKE bseg-wrbtr,
sur LIKE bseg-wrbtr,
ecess LIKE bseg-wrbtr,
hcess LIKE bseg-wrbtr,
net LIKE bseg-wrbtr,
END OF ty_out.
DATA: it_out TYPE TABLE OF ty_out,
wa_out TYPE ty_out.
*----
*--
*----
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: zvendor FOR lfa1-lifnr OBLIGATORY,
zdate FOR bsak-bldat.
PARAMETERS: zbukrs LIKE bseg-bukrs .
SELECTION-SCREEN END OF BLOCK 1.
DATA: zdate1 LIKE bsak-bldat.
l_vendor LIKE lfa1-lifnr,
l_bukrs LIKE bseg-bukrs.
*----
*--
*----
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON zvendor.
IF NOT zvendor[] IS INITIAL.
SELECT SINGLE * FROM lfa1 WHERE lifnr IN zvendor.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid vendor'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zdate.
IF NOT zdate[] IS INITIAL.
SELECT bldat FROM bsak INTO zdate1 WHERE bldat IN zdate.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid date'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON zbukrs.
IF NOT zbukrs IS INITIAL.
SELECT SINGLE bukrs FROM bseg INTO zbukrs WHERE bukrs = zbukrs.
IF sy-subrc <> 0.
MESSAGE e000(8i) WITH 'enter valid company code'.
ENDIF.
ENDIF.
TOP-OF-PAGE.
WRITE:/4 'VENDOR', 15 'PANNO',55 'DOC DATE',67 'VEN.INV NO',86 'INV.AMT'
,104 'TDS',121 'SUR',130 'ECESS',146 'HCESS',159 'NET.AMT'.
SKIP.
WRITE:/ sy-uline.
*----
*--
*----
START-OF-SELECTION.
SELECT gjahr belnr FROM bsak INTO TABLE it_bsak WHERE
lifnr IN zvendor
AND bldat IN zdate
AND bukrs = zbukrs.
IF NOT it_bsak[] IS INITIAL.
SELECT belnr gjahr wrbtr qsskz FROM bseg INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bsak
WHERE belnr = it_bsak-belnr
AND gjahr = it_bsak-gjahr
AND qsskz <> ''
AND bschl = '50'.
SORT it_bseg BY belnr gjahr.
IF NOT it_bseg[] IS INITIAL.
SELECT lifnr gjahr belnr bldat xblnr dmbtr FROM bsak INTO TABLE
it_fit FOR ALL ENTRIES IN it_bseg WHERE belnr = it_bseg-belnr .
ENDIF.
ENDIF.
LOOP AT it_fit INTO wa_fit.
MOVE wa_fit-lifnr TO wa_out-lifnr.
MOVE wa_fit-belnr TO wa_out-belnr.
MOVE wa_fit-bldat TO wa_out-bldat.
MOVE wa_fit-xblnr TO wa_out-xblnr.
MOVE wa_fit-dmbtr TO wa_out-dmbtr.
LOOP AT it_bseg INTO wa_bseg WHERE belnr = wa_fit-belnr.
IF wa_bseg-qsskz = 'A5'.
MOVE wa_bseg-wrbtr TO wa_out-tds.
ELSE.
IF wa_bseg-qsskz = 'W1' OR wa_bseg-qsskz ='W5' OR
wa_bseg-qsskz = 'X1' OR wa_bseg-qsskz ='Y1' OR
wa_bseg-qsskz = 'Z1' OR wa_bseg-qsskz ='W2' OR
wa_bseg-qsskz = 'W6' OR wa_bseg-qsskz ='X2' OR
wa_bseg-qsskz = 'Y2' OR wa_bseg-qsskz ='Z2' OR
wa_bseg-qsskz = 'W3' OR wa_bseg-qsskz ='W7' OR
wa_bseg-qsskz = 'X3' OR wa_bseg-qsskz ='Y3' OR
wa_bseg-qsskz = 'Z3' OR wa_bseg-qsskz ='W4' OR
wa_bseg-qsskz = 'W8' OR wa_bseg-qsskz ='X4' OR
wa_bseg-qsskz = 'Y4' OR wa_bseg-qsskz ='Z4'.
MOVE wa_bseg-wrbtr TO wa_out-ecess.
ELSE.
IF wa_bseg-qsskz = '1A' OR wa_bseg-qsskz = '1E' OR
wa_bseg-qsskz = '1J' OR wa_bseg-qsskz = '1N' OR
wa_bseg-qsskz = '1S' OR wa_bseg-qsskz = '1B' OR
wa_bseg-qsskz = '1F' OR wa_bseg-qsskz = '1K' OR
wa_bseg-qsskz = '1P' OR wa_bseg-qsskz = '1U' OR
wa_bseg-qsskz = '1C' OR wa_bseg-qsskz = '1G' OR
wa_bseg-qsskz = '1L' OR wa_bseg-qsskz = '1Q' OR
wa_bseg-qsskz = '1W' OR wa_bseg-qsskz = '1D' OR
wa_bseg-qsskz = '1H' OR wa_bseg-qsskz = '1M' OR
wa_bseg-qsskz = '1R' OR wa_bseg-qsskz = '1Y'.
MOVE wa_bseg-wrbtr TO wa_out-hcess.
ENDIF.
ENDIF.
ENDIF.
CLEAR wa_bseg.
ENDLOOP.
SELECT SINGLE lifnr j_1ipanno FROM j_1imovend INTO wa_move WHERE
lifnr = wa_fit-lifnr.
MOVE wa_move-panno TO wa_out-panno.
wa_out-net = wa_out-dmbtr - wa_out-tds - wa_out-ecess -
wa_out-hcess .
append wa_out to it_out.
CLEAR wa_out.
CLEAR wa_fit.
ENDLOOP.
LOOP AT it_out INTO wa_out.
WRITE:/4 wa_out-lifnr,15 wa_move-panno, 55 wa_out-bldat,
67 wa_out-xblnr,81 wa_out-dmbtr,95 wa_out-tds,121 wa_out-ecess,
135 wa_out-hcess,152 wa_out-net.
ENDLOOP.
‎2007 Sep 24 12:32 PM
Hi
declare three Itabs ITAB,ITAB1 and I_FINAL.
fetch the data from EKKO and EKPO with inner JOIn into ITAB
fetch the data from MARA data for all entries of ITAB-MATNR into ITAB1.
Loop at itab.
move-corresponding itab to i_final.
read table itab1 with key matnr = itab-matnr.
if sy-subrc = 0.
i_final-matnr = itab1-matnr.
endif.
append i_final.
clear i_final.
endloop.
regards
Anji
‎2007 Sep 24 12:43 PM
Hi,
u can do it in two ways..either declare three separate internal tables and finally dump into one final internal table or
do like this
select ebeln from ekko into corresponding fields of itab where ebeln = user given ebeln.
select ebelp from ekpo appending itab.......
select matnr from appending itab.......
chek the syntax for select ....appending
Regards,
Nagaraj