Application Development and Automation 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: 
Read only

internal table

Former Member
0 Likes
516

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.

4 REPLIES 4
Read only

Former Member
0 Likes
487

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

Read only

Former Member
0 Likes
487

hi

*----


*----


TABLES USED IN THIS REPORT -


*----


TABLES: lfa1,bkpf ,bsak.

*----


*--


DATA DECLARATION--


*----


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--


*----


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.

*----


*--


SELECTION SCREEN VALIDATION--


*----


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--


*----


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.

Read only

Former Member
0 Likes
487

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

Read only

former_member404244
Active Contributor
0 Likes
487

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