2015 Dec 01 7:22 AM
Dear experts,
is there any alternative solution for following code
IF wa_final-vat_cst IS INITIAL .
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_j_1iexcdtl-rdoc2 mjahr = p_docyr matnr = wa_j_1iexcdtl-matnr..
READ TABLE it_rseg INTO wa_rseg WITH KEY lfbnr = wa_mseg-lfbnr .
LOOP AT it_temp INTO wa_temp WHERE lfbnr = wa_rseg-lfbnr.
READ TABLE it_bkpf INTO wa_bkpf WITH KEY awkey = wa_temp-awkey . " belnr = wa_temp-belnr.
READ TABLE it_bset INTO wa_bset WITH KEY belnr = wa_bkpf-belnr kschl = 'JVRD'.
wa_final-belnr = wa_bkpf-belnr.
lv_kbetr = wa_bset-kbetr / 10.
* wa_final-vat_cst = wa_bset-hwste.
* modify it_final FROM wa_final.
ENDLOOP.
ENDIF.
Regards,
Danny
2015 Dec 01 7:47 AM
First read (again) documentation of READ TABLE and LOOP AT WHERE statement, look for ‘performance’.
Regards,
Raymond
First read (again) documentation of READ TABLE and LOOP AT WHERE statement, look for ‘performance’.
Regards,
Raymond
2015 Dec 01 7:26 AM
HI,
One Small suggestions I would like to suggest.
After read statement immediately You have to check .
Read statement.
if sy-subrc eq 0.
read statement
if sy-subrc eq 0.
endif.
endif.
If the record is existing or not we can know.
2015 Dec 01 7:31 AM
2015 Dec 01 7:37 AM
2015 Dec 01 7:47 AM
Hi,
modify your code like this::
SORT it_mseg BY MLBNR MJAHR MATNR.
SORT IT_RSEG BY LFBNR.
SORT IT_BKPF BY AWKEY .
SORT IT_BSET BY BELNR.
IF wa_final-vat_cst IS INITIAL .
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_j_1iexcdtl-rdoc2 mjahr = p_docyr matnr = wa_j_1iexcdtl-matnr BINARY SEARCH.
READ TABLE it_rseg INTO wa_rseg WITH KEY lfbnr = wa_mseg-lfbnr BINARY SEARCH.
LOOP AT it_temp INTO wa_temp WHERE lfbnr = wa_rseg-lfbnr.
READ TABLE it_bkpf INTO wa_bkpf WITH KEY awkey = wa_temp-awkey BINARY SEARCH . " belnr = wa_temp-belnr BINARY SEARCH.
READ TABLE it_bset INTO wa_bset WITH KEY belnr = wa_bkpf-belnr kschl = 'JVRD'.
wa_final-belnr = wa_bkpf-belnr BINARY SEARCH.
lv_kbetr = wa_bset-kbetr / 10.
* wa_final-vat_cst = wa_bset-hwste.
* modify it_final FROM wa_final.
ENDLOOP.
ENDIF.
thanks!!
2015 Dec 01 7:47 AM
First read (again) documentation of READ TABLE and LOOP AT WHERE statement, look for ‘performance’.
Regards,
Raymond
2015 Dec 01 9:18 AM
hi,
there is a concept of parallel cursor in SAP ABAP to avoid performance issues with nested loops with where condition.
data: lv_tabix type sy-tabix.
sort it_temp by lfbnr.
read table it_temp into wa_temp with key lfbnr = wa_resg-lfbnr.
if sy-subrc is initial.
lv_tabix = sy-tabix.
LOOP AT it_temp INTO wa_temp FROM lv_tabix.
if wa_resg-lfbnr <> wa_temp-lfbnr.
exit.
endif.
READ TABLE it_bkpf INTO wa_bkpf WITH KEY awkey = wa_temp-awkey BINARY SEARCH . " belnr = wa_temp-belnr BINARY SEARCH.
READ TABLE it_bset INTO wa_bset WITH KEY belnr = wa_bkpf-belnr kschl = 'JVRD'.
wa_final-belnr = wa_bkpf-belnr BINARY SEARCH.
lv_kbetr = wa_bset-kbetr / 10.
ENDLOOP.
thanks!!
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |