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

Reading data's using 3 internal table

Former Member
0 Likes
978

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.

1 ACCEPTED SOLUTION
Read only

former_member194739
Active Participant
0 Likes
942

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.

8 REPLIES 8
Read only

former_member194739
Active Participant
0 Likes
943

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.

Read only

0 Likes
942

What happened to the sy-subrc check after read table?

Read only

Former Member
0 Likes
942

Why are you looping on the same table twice, you could perform both the read statements in the same loop.

Read only

ramkumar007
Participant
0 Likes
942

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.

Read only

0 Likes
942

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.

Read only

Former Member
0 Likes
942

Thanks for your reply

Read only

Former Member
0 Likes
942

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.

Read only

Former Member
0 Likes
942

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