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

cannot fetch multiple data from internal table

Former Member
0 Likes
892

hello gurus..

plz try to solve this problem....i am sending u the code

TABLES: vbrp,lips,vbap,vbrk,kna1,knvv,konv,j_1imocust,vbkd.

PARAMETER TAXINVO TYPE vbrk-vbeln.

data: words(200) type c.

DATA :WORDS1(200) TYPE C.

data: word_amount type PC207-BETRG.

DATA: srn TYPE i,

total_qty TYPE p DECIMALS 2,

total_costvalue TYPE p DECIMALS 2.

DATA: lin TYPE i.

DATA : BEGIN OF itab OCCURS 0,

vbeln LIKE vbrk-vbeln,

vbelnrp LIKE vbrp-vbeln,

vgbelrp LIKE vbrp-vgbel,

vgposrp LIKE vbrp-vgpos,

vbelnlip LIKE lips-vbeln,

vgebllip LIKE lips-vgbel,

vgposlip LIKE lips-vgpos,

erdat LIKE lips-erdat,

vbelnap LIKE vbap-vbeln,

vgbelap LIKE vbap-vgbel,

vgposap LIKE vbap-vgpos,

posnr LIKE vbrp-posnr,

name1 LIKE kna1-name1,

ort01 LIKE kna1-ort01,

pstlz LIKE kna1-pstlz,

adrnr LIKE kna1-adrnr,

kunag LIKE vbrk-kunag,

knumv LIKE vbrk-knumv,

vat LIKE konv-kawrt,

kunnr LIKE kna1-kunnr,

kdgrp LIKE knvv-kdgrp,

arktx LIKE vbrp-arktx,

matnr LIKE vbrp-matnr,

fkImg LIKE vbrp-fkimg,

kschl LIKE konv-kschl,

advance like konv-kwert,

package LIKE konv-kbetr,

insurance LIKE konv-kwert,

freight LIKE konv-kwert,

discount LIKE konv-kwert,

kwmeng LIKE vbap-kwmeng,

rate LIKE konv-kwert,

bstkd like vbkd-bstkd,

bstdk like vbkd-bstdk,

  • knumv LIKE vbak-knumv,

kbetr LIKE konv-kbetr,

kwert like konv-kwert,

value LIKE konv-kwert,

value1 LIKE konv-kwert,

value2 LIKE konv-kwert,

value3 LIKE konv-kwert,

value4 LIKE konv-kBETR,

value5 LIKE konv-kwert,

value6 LIKE konv-kwert,

value7 LIKE konv-kwert,

value8 LIKE konv-kwert,

value9 LIKE konv-kwert,

value10 LIKE konv-kwert,

value11 LIKE konv-kwert,

value12 LIKE konv-kwert,

value13 LIKE konv-kwert,

value14 LIKE konv-kwert,

value15 LIKE konv-kwert,

value16 LIKE konv-kwert,

value17 LIKE konv-kwert,

value18 LIKE konv-kwert,

value19 LIKE konv-kwert,

value20 LIKE konv-kwert,

value21 like konv-kwert,

VALUE22 LIKE KONV-KWERT,

cst LIKE konv-kawrt,

cess LIKE konv-kawrt,

kawrt LIKE konv-kawrt,

j_1ichid LIKE j_1imtchid-j_1ichid, "chapt id

j_1iexrn LIKE j_1imocust-j_1iexrn, "Excise Registration Number

j_1iexdi LIKE j_1imocust-j_1iexdi, "Excise Division

j_1iexco LIKE j_1imocust-j_1iexco, "Excise Commissionerate

j_1iexcd LIKE j_1imocust-j_1iexcd, "ECC Number

j_1ipanno LIKE j_1imocust-j_1ipanno,

j_1ilstno LIKE j_1imocust-j_1ilstno,

j_1icstno LIKE j_1imocust-j_1icstno,

words(200) type c,

words1(200) type c, " ADDED LATER

END OF itab.

data: itab1 like itab occurs 0 with header line.

*START-OF-SELECTION.

SELECT * FROM vbrk INTO CORRESPONDING FIELDS OF TABLE itab WHERE vbeln = TAXINVO.

LOOP AT itab .

SELECT * FROM vbrp WHERE vbeln = itab-vbeln.

SELECT * FROM lips WHERE vbeln = vbrp-vgbel AND posnr = vbrp-vgpos.

SELECT * FROM vbap WHERE vbeln = lips-vgbel AND posnr = lips-vgpos.

itab-vbelnrp = vbrp-vbeln.

itab-vgbelrp = vbrp-vgbel.

itab-vgbelrp = vbrp-vgpos.

itab-vbelnlip = lips-vbeln.

itab-vgebllip = lips-vgbel.

itab-erdat = lips-erdat.

itab-vgposlip = lips-vgpos.

itab-vbelnap = vbap-vbeln.

MODIFY itab TRANSPORTING vbelnrp vgbelrp vgbelrp vbelnlip vgebllip vgposlip vbelnap .

ENDSELECT.

ENDSELECT.

ENDSELECT.

ENDLOOP.

LOOP AT itab.

SELECT ort01 pstlz adrnr name1 FROM kna1 INTO CORRESPONDING FIELDS

OF itab WHERE kunnr = itab-kunag.

itab-name1 = itab-name1.

itab-ort01 = itab-ort01.

itab-pstlz = itab-pstlz.

itab-adrnr = itab-adrnr.

MODIFY itab TRANSPORTING ort01 pstlz adrnr name1.

ENDSELECT.

ENDLOOP.

LOOP AT itab.

SELECT bstdk bstkd FROM vbkd INTO CORRESPONDING FIELDS

OF itab1 WHERE vbeln = itab-vbelnap.

itab-vbeln = itab1-vbeln.

itab-bstkd = itab1-bstkd.

itab-bstdk = itab1-bstdk.

MODIFY itab TRANSPORTING bstkd bstdk.

ENDSELECT.

ENDLOOP.

LOOP AT itab.

  • srn = sy-index.

SELECT arktx fkimg matnr posnr FROM vbrp INTO CORRESPONDING FIELDS OF itab

WHERE vbeln = itab-vbelnrp.

itab-arktx = itab-arktx.

itab-fkImg = itab-fkImg.

itab-matnr = itab-matnr.

itab-posnr = itab-posnr.

MODIFY itab TRANSPORTING arktx fkImg matnr posnr .

ENDSELECT.

ENDLOOP.

in this select statement i am only getting one record that is the last record it is fetching ....

5 REPLIES 5
Read only

Former Member
0 Likes
718

Which SELECT is returning only one entry - please specify. Also using SELECT ENDSELECT is not a good programing skill. You need to change logic to avoid usage of SELECT ENDSELECT. Try using FOR ALL ENTRIES or using JOINS.

Read only

Former Member
0 Likes
718

Hi,

U didn't mentioned the Taget Area in the following Lines.

SELECT * FROM vbrp WHERE vbeln = itab-vbeln.

SELECT * FROM lips WHERE vbeln = vbrp-vgbel AND posnr = vbrp-vgpos.

SELECT * FROM vbap WHERE vbeln = lips-vgbel AND posnr = lips-vgpos.

<into statement missing>.

Then if u r using SELECT....FROM....INTO CORRESPONDING FIELDS OF... .then u should not use ENDSELECT.

Regards,

Padmam.

Read only

Former Member
0 Likes
718

Hi,

There is lot of Syntax Errors in ur program.U first try to fix it and then if u have any doubts then u post the thread.

Regards,

Padmam.

Read only

Former Member
0 Likes
718

Hi

write a single JOIN like below and see the performance:

first fetch data from VBRK and VBRP into ITAB

select avbeln afkdat bposnr bvgbel bvgpos baubel b~aupos....<write all required fields> into table itab from vbrk as a join vbrp as b

on avbeln = bvbeln where a~vbeln = taxinno.

if not itab[] is initial.

select avbeln bposnr bvgbel ckunnr dmatnr ebstdk f~name1

<write the required fields correctly>

into table itab1 from likp as a join lips as b

on avbeln = bvbeln join vbap as d

on bvgbel = dvbeln and bvgpos = dposnr join vbak as c

on dvbeln = cvbeln join vbkd as e

on cvbeln = evbeln join kna1 as f

on ckunnr = fkunnr

for all entries in itab

where a~vbeln = itab-vgbel and

b~posnr = itab-vgpos and

c~vbeln = itab-aubel and

d~posnr = itab-aupos.

endif.

loop at itab.

move-corresponding itab to i_final.

read table itab1 with key vbeln = itab-vgbel posnr = itab-vgpos.

move the data to i_final.

append i_final.

clear i_final.

endloop.

display the i_final data

this will be performance wise Ok

do and see

Regards

Anji

Read only

Former Member
0 Likes
718

SELECT ort01 pstlz adrnr name1 FROM kna1 INTO CORRESPONDING FIELDS

OF itab WHERE kunnr = itab-kunag.

itab-name1 = itab-name1.

itab-ort01 = itab-ort01.

itab-pstlz = itab-pstlz.

itab-adrnr = itab-adrnr.

seems you do not understand the INTO CORRESPONDING, it does exactly the move which you list below.

Your selects must be select singles.

You should try to built up joins and the mass selects into hashed tables.

And do only one LOOP at itab, with reads and modify at the end.

Siegfried