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
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: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 |