2016 Oct 05 1:01 PM
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
2016 Oct 05 8:43 PM
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
2016 Oct 05 7:13 PM
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.
2016 Oct 06 8:36 AM
2016 Oct 05 8:43 PM
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.