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

Parallel cursor with field symbol

Former Member
0 Likes
1,319

Hi ,

I am using parallel cursor but still I am getting only last record instead of two records ,I am facing problem while appending .

Please suggest me how to append the values so that I will get all records .

My code is :-

UNASSIGN <x_lfa1>.

     LOOP AT i_lfa1 ASSIGNING <x_lfa1> .

UNASSIGN <x_final>.

             APPEND INITIAL LINE TO i_final ASSIGNING <x_final>.

       IF <x_final> IS ASSIGNED.

         <x_final>-lifnr = <x_lfa1>-lifnr.

         <x_final>-land1 = <x_lfa1>-land1.

         <x_final>-name1 = <x_lfa1>-name1.

         <x_final>-ort01 = <x_lfa1>-ort01.

         <x_final>-regio = <x_lfa1>-regio.

         <x_final>-stras = <x_lfa1>-stras.

         <x_final>-ktokk = <x_lfa1>-ktokk.

         <x_final>-sperr = <x_lfa1>-sperr.

         <x_final>-spras = <x_lfa1>-spras.

         <x_final>-stcd1 = <x_lfa1>-stcd1.

         <x_final>-telf1 = <x_lfa1>-telf1.

         <x_final>-telf2 = <x_lfa1>-telf2.

         <x_final>-telfx = <x_lfa1>-telfx.

         <x_final>-stkzn = <x_lfa1>-stkzn.

       ENDIF.

       UNASSIGN <x_adrc>.

       READ TABLE i_adrc ASSIGNING <x_adrc>

        WITH KEY addrnumber = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_adrc> IS ASSIGNED.

         <x_final>-str_suppl1 = <x_adrc>-str_suppl1.

         <x_final>-str_suppl2 = <x_adrc>-str_suppl2.

         <x_final>-str_suppl3 = <x_adrc>-str_suppl3.

       ENDIF.

       UNASSIGN <x_adr6>.

       READ TABLE i_adr6 ASSIGNING <x_adr6>

        WITH KEY addrnumber = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_adr6> IS ASSIGNED.

         <x_final>-smtp_addr = <x_adr6>-smtp_addr.

       ENDIF.

       UNASSIGN <x_lfm1>.

       READ TABLE i_lfm1 ASSIGNING <x_lfm1>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_lfm1> IS ASSIGNED.

         <x_final>-waers = <x_lfm1>-waers.

       ENDIF.

       UNASSIGN <x_lfb1>.

       UNASSIGN <x_lfbk>.

       READ TABLE i_lfbk ASSIGNING <x_lfbk>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_lfbk> IS ASSIGNED.

         <x_final>-bankl = <x_lfbk>-bankl.

         <x_final>-bankn = <x_lfbk>-bankn.

       ENDIF.

       UNASSIGN <x_wyt3>.

       READ TABLE i_wyt3 ASSIGNING <x_wyt3>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_wyt3> IS ASSIGNED.

         <x_final>-parvw = <x_wyt3>-parvw.

       ENDIF.

       UNASSIGN <x_bnka>.

       READ TABLE i_bnka ASSIGNING <x_bnka>

          WITH KEY adrnr = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_bnka> IS ASSIGNED.

         <x_final>-swift = <x_bnka>-swift.

       ENDIF.

****************

       READ TABLE i_lfb1 ASSIGNING <x_lfb1>

          WITH KEY lifnr = <x_lfa1>-lifnr

                   BINARY SEARCH.

       if sy-subrc = 0.

          w_index = sy-tabix.

       LOOP at i_lfb1 ASSIGNING <x_lfb1> from w_index.

         if <x_lfa1>-lifnr ne <x_lfb1>-lifnr.

*           w_index = sy-tabix.

         EXIT.

       ENDIF.

       IF <x_lfb1> IS ASSIGNED.

         <X_FINAL>-lifnr <x_lfb1>-lifnr.

         <x_final>-bukrs = <x_lfb1>-bukrs.

         <x_final>-zwels = <x_lfb1>-zwels.

         <x_final>-zterm = <x_lfb1>-zterm.

         <x_final>-xpore = <x_lfb1>-xpore.

         <x_final>-qsskz = <x_lfb1>-qsskz.

         EXIT .

       ENDIF.

*      IF <x_lfb1>-lifnr is not INITIAL.

*

*      ENDIF.

*     endif.

    ENDLOOP.

    ENDIF.

     ENDLOOP.




Regards ,

Rasika

1 ACCEPTED SOLUTION
Read only

matt
Active Contributor
0 Likes
1,099

Instead of using STANDARD tables, with SORT and BINARY SEARCH (which is so last millenium), why not use ABAP developed for this millenium - i.e. SORTED tables, or even better HASHED tables? I mean, they've only been around for over 16 years.

If you use a HASHED table you will not need to use an parallel cursor technique.

Hi ,

I am using parallel cursor but still I am getting only last record instead of two records ,I am facing problem while appending .

Please suggest me how to append the values so that I will get all records .

My code is :-

UNASSIGN <x_lfa1>.

     LOOP AT i_lfa1 ASSIGNING <x_lfa1> .

UNASSIGN <x_final>.

             APPEND INITIAL LINE TO i_final ASSIGNING <x_final>.

       IF <x_final> IS ASSIGNED.

         <x_final>-lifnr = <x_lfa1>-lifnr.

         <x_final>-land1 = <x_lfa1>-land1.

         <x_final>-name1 = <x_lfa1>-name1.

         <x_final>-ort01 = <x_lfa1>-ort01.

         <x_final>-regio = <x_lfa1>-regio.

         <x_final>-stras = <x_lfa1>-stras.

         <x_final>-ktokk = <x_lfa1>-ktokk.

         <x_final>-sperr = <x_lfa1>-sperr.

         <x_final>-spras = <x_lfa1>-spras.

         <x_final>-stcd1 = <x_lfa1>-stcd1.

         <x_final>-telf1 = <x_lfa1>-telf1.

         <x_final>-telf2 = <x_lfa1>-telf2.

         <x_final>-telfx = <x_lfa1>-telfx.

         <x_final>-stkzn = <x_lfa1>-stkzn.

       ENDIF.

       UNASSIGN <x_adrc>.

       READ TABLE i_adrc ASSIGNING <x_adrc>

        WITH KEY addrnumber = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_adrc> IS ASSIGNED.

         <x_final>-str_suppl1 = <x_adrc>-str_suppl1.

         <x_final>-str_suppl2 = <x_adrc>-str_suppl2.

         <x_final>-str_suppl3 = <x_adrc>-str_suppl3.

       ENDIF.

       UNASSIGN <x_adr6>.

       READ TABLE i_adr6 ASSIGNING <x_adr6>

        WITH KEY addrnumber = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_adr6> IS ASSIGNED.

         <x_final>-smtp_addr = <x_adr6>-smtp_addr.

       ENDIF.

       UNASSIGN <x_lfm1>.

       READ TABLE i_lfm1 ASSIGNING <x_lfm1>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_lfm1> IS ASSIGNED.

         <x_final>-waers = <x_lfm1>-waers.

       ENDIF.

       UNASSIGN <x_lfb1>.

       UNASSIGN <x_lfbk>.

       READ TABLE i_lfbk ASSIGNING <x_lfbk>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_lfbk> IS ASSIGNED.

         <x_final>-bankl = <x_lfbk>-bankl.

         <x_final>-bankn = <x_lfbk>-bankn.

       ENDIF.

       UNASSIGN <x_wyt3>.

       READ TABLE i_wyt3 ASSIGNING <x_wyt3>

          WITH KEY lifnr = <x_lfa1>-lifnr BINARY SEARCH.

       IF <x_wyt3> IS ASSIGNED.

         <x_final>-parvw = <x_wyt3>-parvw.

       ENDIF.

       UNASSIGN <x_bnka>.

       READ TABLE i_bnka ASSIGNING <x_bnka>

          WITH KEY adrnr = <x_lfa1>-adrnr BINARY SEARCH.

       IF <x_bnka> IS ASSIGNED.

         <x_final>-swift = <x_bnka>-swift.

       ENDIF.

****************

       READ TABLE i_lfb1 ASSIGNING <x_lfb1>

          WITH KEY lifnr = <x_lfa1>-lifnr

                   BINARY SEARCH.

       if sy-subrc = 0.

          w_index = sy-tabix.

       LOOP at i_lfb1 ASSIGNING <x_lfb1> from w_index.

         if <x_lfa1>-lifnr ne <x_lfb1>-lifnr.

*           w_index = sy-tabix.

         EXIT.

       ENDIF.

       IF <x_lfb1> IS ASSIGNED.

         <X_FINAL>-lifnr <x_lfb1>-lifnr.

         <x_final>-bukrs = <x_lfb1>-bukrs.

         <x_final>-zwels = <x_lfb1>-zwels.

         <x_final>-zterm = <x_lfb1>-zterm.

         <x_final>-xpore = <x_lfb1>-xpore.

         <x_final>-qsskz = <x_lfb1>-qsskz.

         EXIT .

       ENDIF.

*      IF <x_lfb1>-lifnr is not INITIAL.

*

*      ENDIF.

*     endif.

    ENDLOOP.

    ENDIF.

     ENDLOOP.




Regards ,

Rasika

3 REPLIES 3
Read only

Former Member
0 Likes
1,099

You should put the append inside the second loop not the primary loop

i.e inside this loop pass

    LOOP at i_lfb1 ASSIGNING <x_lfb1> from w_index

    ENDLOOP.

Read only

0 Likes
1,099

I tried the same ,but I am not getting all records.

Read only

matt
Active Contributor
0 Likes
1,100

Instead of using STANDARD tables, with SORT and BINARY SEARCH (which is so last millenium), why not use ABAP developed for this millenium - i.e. SORTED tables, or even better HASHED tables? I mean, they've only been around for over 16 years.

If you use a HASHED table you will not need to use an parallel cursor technique.