2014 Apr 21 5:59 AM
Hi,
I am joing 3 internal table......in the looping part iam having a dbt.....is my looping is correct r not..pls suggest me
SORT it_vbrp.
LOOP AT it_vbrk INTO w_vbrk.
READ TABLE it_vbrp INTO w_vbrp WITH KEY vbeln = w_vbrk-vbeln BINARY SEARCH.
w_final-belnr = w_vbrk-belnr.
w_final-vbeln = w_vbrk-vbeln.
w_final-fkdat = w_vbrk-fkdat.
w_final-netwr = w_vbrk-netwr.
w_final-bukrs = w_vbrk-bukrs.
w_final-waerk = w_vbrk-waerk.
w_final-GJAHR = w_vbrk-GJAHR.
w_final-volum = w_vbrp-volum.
w_final-voleh = w_vbrp-voleh.
w_final-matnr = w_vbrp-matnr.
w_final-arktx = w_vbrp-arktx.
APPEND w_final to it_final.
CLEAR w_final.
ENDLOOP.
SORT it_bseg.
LOOP AT it_vbrk INTO w_vbrk.
READ TABLE it_bseg INTO w_bseg WITH KEY belnr = w_vbrk-belnr BINARY SEARCH.
w_final-belnr = w_bseg-belnr.
w_final-bschl = w_bseg-bschl.
w_final-hkont = w_bseg-hkont.
APPEND w_final to it_final.
CLEAR w_final.
ENDLOOP.
2014 Apr 21 6:07 AM
Dear Meenakshi,
correct code: replace this code.
SORT it_vbrp.
LOOP AT it_vbrk INTO w_vbrk.
w_final-belnr = w_vbrk-belnr.
w_final-vbeln = w_vbrk-vbeln.
w_final-fkdat = w_vbrk-fkdat.
w_final-netwr = w_vbrk-netwr.
w_final-bukrs = w_vbrk-bukrs.
w_final-waerk = w_vbrk-waerk.
w_final-GJAHR = w_vbrk-GJAHR.
READ TABLE it_vbrp INTO w_vbrp WITH KEY vbeln = w_vbrk-vbeln BINARY SEARCH.
w_final-volum = w_vbrp-volum.
w_final-voleh = w_vbrp-voleh.
w_final-matnr = w_vbrp-matnr.
w_final-arktx = w_vbrp-arktx.
READ TABLE it_bseg INTO w_bseg WITH KEY belnr = w_vbrk-belnr BINARY SEARCH.
w_final-belnr = w_bseg-belnr.
w_final-bschl = w_bseg-bschl.
w_final-hkont = w_bseg-hkont.
APPEND w_final to it_final.
CLEAR w_final.
ENDLOOP.
Best of luck.
Regards,
Abbas.
2014 Apr 21 6:07 AM
Dear Meenakshi,
correct code: replace this code.
SORT it_vbrp.
LOOP AT it_vbrk INTO w_vbrk.
w_final-belnr = w_vbrk-belnr.
w_final-vbeln = w_vbrk-vbeln.
w_final-fkdat = w_vbrk-fkdat.
w_final-netwr = w_vbrk-netwr.
w_final-bukrs = w_vbrk-bukrs.
w_final-waerk = w_vbrk-waerk.
w_final-GJAHR = w_vbrk-GJAHR.
READ TABLE it_vbrp INTO w_vbrp WITH KEY vbeln = w_vbrk-vbeln BINARY SEARCH.
w_final-volum = w_vbrp-volum.
w_final-voleh = w_vbrp-voleh.
w_final-matnr = w_vbrp-matnr.
w_final-arktx = w_vbrp-arktx.
READ TABLE it_bseg INTO w_bseg WITH KEY belnr = w_vbrk-belnr BINARY SEARCH.
w_final-belnr = w_bseg-belnr.
w_final-bschl = w_bseg-bschl.
w_final-hkont = w_bseg-hkont.
APPEND w_final to it_final.
CLEAR w_final.
ENDLOOP.
Best of luck.
Regards,
Abbas.
2014 Apr 21 6:11 AM
What happened to the sy-subrc check after read table?
2014 Apr 21 6:26 AM
Why are you looping on the same table twice, you could perform both the read statements in the same loop.
2014 Apr 21 6:53 AM
hi ,
try this way easy and simple.
TYPES : BEGIN OF ty_vbrk,
vbeln TYPE vbeln_vf,
fkart TYPE fkart,
vbtyp TYPE vbtyp,
waerk TYPE waerk,
END OF ty_vbrk.
DATA : it TYPE TABLE OF ty_vbrk,
wa TYPE ty_vbrk,
it1 TYPE TABLE OF ty_vbrk.
SELECT * FROM vbrk into CORRESPONDING FIELDS OF TABLE it WHERE waerk <> 'DEM'.
CLEAR wa.
wa-vbeln = '0090005425'.
READ TABLE it INTO wa WITH KEY vbeln = wa-vbeln.
COLLECT wa INTO it1 .
Thanks
Ram.
2014 Apr 21 6:54 AM
hi ,
try this way easy and simple.
TYPES : BEGIN OF ty_vbrk,
vbeln TYPE vbeln_vf,
fkart TYPE fkart,
vbtyp TYPE vbtyp,
waerk TYPE waerk,
END OF ty_vbrk.
DATA : it TYPE TABLE OF ty_vbrk,
wa TYPE ty_vbrk,
it1 TYPE TABLE OF ty_vbrk.
SELECT * FROM vbrk into CORRESPONDING FIELDS OF TABLE it .
CLEAR wa.
wa-vbeln = '0090005425'.
READ TABLE it INTO wa WITH KEY vbeln = wa-vbeln.
COLLECT wa INTO it1 .
Thanks
Ram.
2014 Apr 21 7:02 AM
2014 Apr 21 8:35 AM
hi Meenakshi,
1) Sort is prerequisite for Binary Search.
2) Check how many line item are their for Every vbeln of VBRK in VBRP.
if line item is one Read statement is ok but
if you have more line item we must go for LOOP statement .
loop in loop is nest loop is performance issue.
Parallel Cursor Method is better performance.
SORT it_vbrk by vbeln. "Sorting by key is very important
SORT it_vbrp by vbeln ."Same key which is used for where condition is used here
SORT it_bseg by belnr.
LOOP AT it_vbrk INTO w_vbrk.
w_final-belnr = w_vbrk-belnr.
w_final-vbeln = w_vbrk-vbeln.
w_final-fkdat = w_vbrk-fkdat.
w_final-netwr = w_vbrk-netwr.
w_final-bukrs = w_vbrk-bukrs.
w_final-waerk = w_vbrk-waerk.
w_final-GJAHR = w_vbrk-GJAHR.
READ TABLE it_bseg INTO w_bseg WITH KEY belnr = w_vbrk-belnr BINARY SEARCH.
if sy-subrc eq 0
w_final-belnr = w_bseg-belnr.
w_final-bschl = w_bseg-bschl.
w_final-hkont = w_bseg-hkont.
endif.
READ TABLE it_vbrp INTO wa_vbrp WITH KEY vbeln = w_vbrk-vbeln BINARY SEARCH.
if sy-subrc eq 0
v_vbrp_index = sy-tabix.
loop at it_vbrp into w_vbrp from v_vbrp_index.
if wa_vbrp-vbeln <> w_vbrk-vbeln.
exit.
endif.
w_final-volum = w_vbrp-volum.
w_final-voleh = w_vbrp-voleh.
w_final-matnr = w_vbrp-matnr.
w_final-arktx = w_vbrp-arktx.
APPEND w_final to it_final.
endloop.
endif.
CLEAR w_final,w_vbrk,w_vbrp,w_bseg,wa_vbrp,v_vbrp_index.
ENDLOOP.
2014 Apr 21 10:27 AM
Hi,
Seeing you code I can understand you are trying to fill the data of IT_VBRK and IT_BSEG to final internal table IT_FINAL.
No need to loop it twice. Just loop once and read the respective data of IT_VBRK and IT_BSEG and assign to the final Internal Table.
Regards,
Rafi