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

please explain loop in this code

Former Member
0 Likes
1,051

in this below code,what more is to be added as i am getting the values from the fields of table eban in the output but not from ekko,ekpo,eket.

where to put the loop or what else is reqd?

please suggest as i m new to this and not understanding.

LOOP AT IT_EBAN.

WA_FINAL-PURREQ = IT_EBAN-BANFN.

WA_FINAL-RITEM = IT_EBAN-BNFPO.

WA_FINAL-CRTDBY = IT_EBAN-ERNAM.

WA_FINAL-REQDT = IT_EBAN-BADAT.

WA_FINAL-REQSR = IT_EBAN-AFNAM.

WA_FINAL-SHTXT = IT_EBAN-TXZ01.

WA_FINAL-QTYREQ = IT_EBAN-MENGE.

WA_FINAL-UNITS = IT_EBAN-MEINS.

WA_FINAL-VALPR = IT_EBAN-PREIS.

WA_FINAL-CURR = IT_EBAN-WAERS.

WA_FINAL-PER = IT_EBAN-PEINH.

WA_FINAL-TPRICE = IT_EBAN-RLWRT.

WA_FINAL-TPRICE$ = IT_EBAN-RLWRT.

WA_FINAL-DELRQ = IT_EBAN-LFDAT.

WA_FINAL-REQREL = IT_EBAN-FRGDT.

WA_FINAL-PO = IT_EBAN-EBELN.

WA_FINAL-ITEM = IT_EBAN-EBELP.

WA_FINAL-PODATE = IT_EBAN-BEDAT.

WA_FINAL-QTYORD = IT_EBAN-BSMNG.

CLEAR IT_EKPO.

read table it_ekpo into wa_ekpo with key meins = wa_final-UNITS1

binary search.

WA_FINAL-UNITS1 = IT_EKPO-MEINS.

WA_FINAL-VALPR1 = IT_EKPO-NETPR.

WA_FINAL-PER1 = IT_EKPO-PEINH.

WA_FINAL-TPRICE1 = IT_EKPO-NETWR.

CLEAR IT_EKKO.

READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-CURRPO

BINARY SEARCH.

WA_FINAL-CURRPO = IT_EKKO-WAERS.

CLEAR IT_EKET.

READ TABLE IT_EKET WITH KEY EINDT = WA_FINAL-DELPO

BINARY SEARCH.

WA_FINAL-DELPO = IT_EKET-EINDT.

APPEND WA_FINAL TO IT_FINAL.

CLEAR WA_FINAL.

endloop.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,023
LOOP AT IT_EBAN.

WA_FINAL-PURREQ = IT_EBAN-BANFN.
WA_FINAL-RITEM = IT_EBAN-BNFPO.
WA_FINAL-CRTDBY = IT_EBAN-ERNAM.
WA_FINAL-REQDT = IT_EBAN-BADAT.
WA_FINAL-REQSR = IT_EBAN-AFNAM.
WA_FINAL-SHTXT = IT_EBAN-TXZ01.
WA_FINAL-QTYREQ = IT_EBAN-MENGE.
WA_FINAL-UNITS = IT_EBAN-MEINS.
WA_FINAL-VALPR = IT_EBAN-PREIS.
WA_FINAL-CURR = IT_EBAN-WAERS.
WA_FINAL-PER = IT_EBAN-PEINH.
WA_FINAL-TPRICE = IT_EBAN-RLWRT.
WA_FINAL-TPRICE$ = IT_EBAN-RLWRT.
WA_FINAL-DELRQ = IT_EBAN-LFDAT.
WA_FINAL-REQREL = IT_EBAN-FRGDT.
WA_FINAL-PO = IT_EBAN-EBELN.
WA_FINAL-ITEM = IT_EBAN-EBELP.
WA_FINAL-PODATE = IT_EBAN-BEDAT.
WA_FINAL-QTYORD = IT_EBAN-BSMNG.



CLEAR IT_EKPO.

read table it_ekpo into wa_ekpo with key meins = wa_final-*UNITS* 
binary search.
*if sy-subrc eq 0.*
WA_FINAL-UNITS1 = *wa_ekpo*-MEINS.
WA_FINAL-VALPR1 = *wa_ekpo*-NETPR.
WA_FINAL-PER1 = *wa_ekpo*-PEINH.
WA_FINAL-TPRICE1 = *wa_ekpo*-NETWR.
*endif.*


CLEAR IT_EKKO.
READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-*CURR* 
BINARY SEARCH.
if sy-subrc eq 0.
WA_FINAL-CURRPO = IT_EKKO-WAERS.
endif.

CLEAR IT_EKET.
READ TABLE IT_EKET WITH KEY EINDT = WA_FINAL-*DELRQ*
BINARY SEARCH.

WA_FINAL-DELPO = IT_EKET-EINDT.


APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.

endloop
9 REPLIES 9
Read only

ThomasZloch
Active Contributor
0 Likes
1,023

It seems that your READ TABLE statements don't find any entries. Please check SY-SUBRC via debugging.

Thomas

Read only

Former Member
0 Likes
1,023

hi,

you first have Clear table IT_EKKO, then try to read it , how will you get values? Similar case for the other tables . First read the table , then transfer data , then , if required , clear it.

like,

read table it_ekpo into wa_ekpo with key meins = wa_final-UNITS1
binary search.


WA_FINAL-UNITS1 = IT_EKPO-MEINS.
WA_FINAL-VALPR1 = IT_EKPO-NETPR.
WA_FINAL-PER1 = IT_EKPO-PEINH.
WA_FINAL-TPRICE1 = IT_EKPO-NETWR.

CLEAR IT_EKPO.

CLEAR IT_EKKO.
READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-CURRPO
BINARY SEARCH.


WA_FINAL-CURRPO = IT_EKKO-WAERS.

so on.

Regards,

Anirban

Read only

Former Member
0 Likes
1,023

Hi,

A BINARY SEARCH table read only works if the table you are reading is sorted by the access fields, is the read failing and hence no data? Check the return code in the debugger to see what is happening at each of the table reads.

Darren

Read only

Former Member
0 Likes
1,024
LOOP AT IT_EBAN.

WA_FINAL-PURREQ = IT_EBAN-BANFN.
WA_FINAL-RITEM = IT_EBAN-BNFPO.
WA_FINAL-CRTDBY = IT_EBAN-ERNAM.
WA_FINAL-REQDT = IT_EBAN-BADAT.
WA_FINAL-REQSR = IT_EBAN-AFNAM.
WA_FINAL-SHTXT = IT_EBAN-TXZ01.
WA_FINAL-QTYREQ = IT_EBAN-MENGE.
WA_FINAL-UNITS = IT_EBAN-MEINS.
WA_FINAL-VALPR = IT_EBAN-PREIS.
WA_FINAL-CURR = IT_EBAN-WAERS.
WA_FINAL-PER = IT_EBAN-PEINH.
WA_FINAL-TPRICE = IT_EBAN-RLWRT.
WA_FINAL-TPRICE$ = IT_EBAN-RLWRT.
WA_FINAL-DELRQ = IT_EBAN-LFDAT.
WA_FINAL-REQREL = IT_EBAN-FRGDT.
WA_FINAL-PO = IT_EBAN-EBELN.
WA_FINAL-ITEM = IT_EBAN-EBELP.
WA_FINAL-PODATE = IT_EBAN-BEDAT.
WA_FINAL-QTYORD = IT_EBAN-BSMNG.



CLEAR IT_EKPO.

read table it_ekpo into wa_ekpo with key meins = wa_final-*UNITS* 
binary search.
*if sy-subrc eq 0.*
WA_FINAL-UNITS1 = *wa_ekpo*-MEINS.
WA_FINAL-VALPR1 = *wa_ekpo*-NETPR.
WA_FINAL-PER1 = *wa_ekpo*-PEINH.
WA_FINAL-TPRICE1 = *wa_ekpo*-NETWR.
*endif.*


CLEAR IT_EKKO.
READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-*CURR* 
BINARY SEARCH.
if sy-subrc eq 0.
WA_FINAL-CURRPO = IT_EKKO-WAERS.
endif.

CLEAR IT_EKET.
READ TABLE IT_EKET WITH KEY EINDT = WA_FINAL-*DELRQ*
BINARY SEARCH.

WA_FINAL-DELPO = IT_EKET-EINDT.


APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.

endloop
Read only

0 Likes
1,023

my qestion has been partly anserwed but still i m not getting the output from the value of fields ekko and ekpo.

please reply.

thanks for timely reply.

Read only

0 Likes
1,023
CLEAR IT_EKPO.

read table it_ekpo into wa_ekpo with key meins = wa_final-UNITS1
binary search.


WA_FINAL-UNITS1 = IT_EKPO-MEINS.
WA_FINAL-VALPR1 = IT_EKPO-NETPR.
WA_FINAL-PER1 = IT_EKPO-PEINH.
WA_FINAL-TPRICE1 = IT_EKPO-NETWR.
  • In this code it_ekpo never gets populated. wa_ekpo gets filled if the read is succcessfull but wa_ekpo is not used..

CLEAR IT_EKKO.
READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-CURRPO
BINARY SEARCH..

  • In this read WA_FINAL-CURRPO never has a value so the read will always fail

.

WA_FINAL-CURRPO = IT_EKKO-WAERS.


CLEAR IT_EKET.
READ TABLE IT_EKET WITH KEY EINDT = WA_FINAL-DELPO
BINARY SEARCH..

  • In this read WA_FINAL-DELPO never has a value so the read will always fail

Regards

Greg Kern

Read only

Former Member
0 Likes
1,023

Hi Tanisha,

Before reading EKPO and other tables, you are clearing the IT_EKPO values.

You are reading in to WA_EKPO, but using IT_EKPO to fill the values.

Change them to WA_EKPO. it should work.

Best Regards,

Ram.

Read only

Former Member
0 Likes
1,023

Hi Tanisha,

Please check out the below updated code for you.


sort ekko by ebeln.
sort ekpo by ebeln ekpo.
sort IT_EKET by eindt.

LOOP AT IT_EBAN.

WA_FINAL-PURREQ = IT_EBAN-BANFN.
WA_FINAL-RITEM = IT_EBAN-BNFPO.
WA_FINAL-CRTDBY = IT_EBAN-ERNAM.
WA_FINAL-REQDT = IT_EBAN-BADAT.
WA_FINAL-REQSR = IT_EBAN-AFNAM.
WA_FINAL-SHTXT = IT_EBAN-TXZ01.
WA_FINAL-QTYREQ = IT_EBAN-MENGE.
WA_FINAL-UNITS = IT_EBAN-MEINS.
WA_FINAL-VALPR = IT_EBAN-PREIS.
WA_FINAL-CURR = IT_EBAN-WAERS.
WA_FINAL-PER = IT_EBAN-PEINH.
WA_FINAL-TPRICE = IT_EBAN-RLWRT.
WA_FINAL-TPRICE$ = IT_EBAN-RLWRT.
WA_FINAL-DELRQ = IT_EBAN-LFDAT.
WA_FINAL-REQREL = IT_EBAN-FRGDT.
WA_FINAL-PO = IT_EBAN-EBELN.
WA_FINAL-ITEM = IT_EBAN-EBELP.
WA_FINAL-PODATE = IT_EBAN-BEDAT.
WA_FINAL-QTYORD = IT_EBAN-BSMNG.



CLEAR IT_EKPO.

read table it_ekpo into wa_ekpo with key meins = wa_final-UNITS1
binary search.
if sy-subrc = 0.

WA_FINAL-UNITS1 = IT_EKPO-MEINS.
WA_FINAL-VALPR1 = IT_EKPO-NETPR.
WA_FINAL-PER1 = IT_EKPO-PEINH.
WA_FINAL-TPRICE1 = IT_EKPO-NETWR.
endif.


CLEAR IT_EKKO.
READ TABLE IT_EKKO WITH KEY waers = WA_FINAL-CURRPO
BINARY SEARCH.

if sy-subrc = 0.
WA_FINAL-CURRPO = IT_EKKO-WAERS.
endif.

CLEAR IT_EKET.
READ TABLE IT_EKET WITH KEY EINDT = WA_FINAL-DELPO
BINARY SEARCH.
if sy-subrc =  0.
WA_FINAL-DELPO = IT_EKET-EINDT.
endif.

APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.

endloop.

Thanks,

Chidanand

Read only

Former Member
0 Likes
1,023

Hi,

In read statement you have to use the above table but not final

i.e meins = wa_eban-meins.