‎2007 Sep 16 12:56 PM
Hi Abapers,
I developed one report in FICO Module.
I have written loop but system is taking more amount of time on it.
this program executing in testing client but it is not executing in production.
system showing the dump .
the problem is system taking more amount of time for given loop.
it_vbrp: having 25623 records,
it_vbrk: 30000 records,
it_mara2: having 33258
plese give me the sollution.
below code.
LOOP AT it_vbrp into wa_vbrp.
READ TABLE IT_MARA2 INTO WA_MARA2 WITH KEY matnr = wa_vbrp-matnr BINARY SEARCH.
case WA_MARA2-ismconttype.
when '12'. "Check for Material Type City
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln BINARY SEARCH.
case wa_vbrk-fkart. "Check for Billing Doc Type
when 'F2'. "Check for Invoice Type
"Check for Invoice
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv kposn = wa_vbrp-posnr kschl = 'PJ01'. "Read for Cover Price
if sy-subrc = 0.
v_city_actual_cprice = v_city_actual_cprice + wa_konv-kwert.
endif.
CLEAR:wa_konv.
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv kposn = wa_vbrp-posnr kschl = 'ZDIS'. "Read for Commission
if sy-subrc = 0.
v_city_actual_comm = v_city_actual_comm + wa_konv-kwert.
endif.
WHEN 'G2'. "Check for Billing Doc Type
v_city_actual_crnotes = v_city_actual_crnotes + wa_vbrp-netwr.
ENDCASE. "Check for Billing Doc Type
when '11'. "Check for Material Type DAK
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln BINARY SEARCH.
case wa_vbrk-fkart. "Check for Doc Type
when 'F2'. "Check for Invoice Type
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv kposn = wa_vbrp-posnr kschl = 'PJ01'. "Read for Cover Price
if sy-subrc = 0.
v_DAK_actual_cprice = v_DAK_actual_cprice + wa_konv-kwert.
endif.
CLEAR:wa_konv.
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv kposn = wa_vbrp-posnr kschl = 'ZDIS'. "Read for Commission
if sy-subrc = 0.
v_DAK_actual_comm = v_DAK_actual_comm + wa_konv-kwert.
endif.
when 'G2'. "Check for Billing Doc Type
v_DAK_actual_crnotes = v_DAK_actual_crnotes + wa_vbrp-netwr.
endcase. "Check for Doc Type
endcase. "Check for Material Type
CLEAR: wa_vbrk,
wa_vbrp,
wa_konv,
wa_mara2.
ENDLOOP.[/code]
‎2007 Sep 16 3:25 PM
Hello,
1/ how can you more entries in vbrk header (30000) than in vbrp (item) ?
2/you will find code below : per each vbeln, access vbrk one time
DATA : wlv_idx LIKE sy-tabix VALUE 1.
SORT it_vbrk BY vbeln.
SORT it_vbrp BY vbeln.
SORT IT_MARA2 BY matnr.
SORT it_konv BY knumv kposn kschl.
LOOP AT it_vbrk INTO wa_vbrk.
LOOP AT it_vbrp into wa_vbrp FROM wlv_idx.
IF wa_vbrp-vbeln > wa_vbrk-vbeln.
MOVE sy-tabix TO wlv_idx. EXIT.
ELSE.
IF wa_vbrp-vbeln EQ wa_vbrk-vbeln.
READ TABLE IT_MARA2 INTO WA_MARA2 WITH KEY matnr = wa_vbrp-matnr BINARY SEARCH.
IF s-subrc EQ 0.
case WA_MARA2-ismconttype.
when '12'. "Check for Material Type City
case wa_vbrk-fkart. "Check for Billing Doc Type
when 'F2'. "Check for Invoice Type
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv
kposn = wa_vbrp-posnr
kschl = 'PJ01' BINARY SEARCH.
if sy-subrc = 0.
v_city_actual_cprice = v_city_actual_cprice + wa_konv-kwert.
endif.
CLEAR:wa_konv.
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv
kposn = wa_vbrp-posnr
kschl = 'ZDIS' BINARY SEARCH.
if sy-subrc = 0.
v_city_actual_comm = v_city_actual_comm + wa_konv-kwert.
endif.
WHEN 'G2'. "Check for Billing Doc Type
v_city_actual_crnotes = v_city_actual_crnotes + wa_vbrp-netwr.
ENDCASE. "Check for Billing Doc Type
when '11'. "Check for Material Type DAK
case wa_vbrk-fkart. "Check for Doc Type
when 'F2'. "Check for Invoice Type
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv
kposn = wa_vbrp-posnr
kschl = 'PJ01' BINARY SEARCH.
if sy-subrc = 0.
v_DAK_actual_cprice = v_DAK_actual_cprice + wa_konv-kwert.
endif.
CLEAR:wa_konv.
read table it_konv into wa_konv with key knumv = wa_vbrk-knumv
kposn = wa_vbrp-posnr
kschl = 'ZDIS' BINARY SEARCH.
if sy-subrc = 0.
v_DAK_actual_comm = v_DAK_actual_comm + wa_konv-kwert.
endif.
when 'G2'. "Check for Billing Doc Type
v_DAK_actual_crnotes = v_DAK_actual_crnotes + wa_vbrp-netwr.
endcase. "Check for Doc Type
endcase. "Check for Material Type
* CLEAR: wa_vbrk, wa_vbrp, wa_konv, wa_mara2.
ENDIF. ENDIF.
ENDLOOP.
ENDLOOP.
‎2007 Sep 16 6:21 PM
Ask basis guy to do timeout settings (Parameter RPDISMAX from 600 to 1200 sec) so that you should be able to execute the program in foreground or else run ur code in background.
Thanks.. Kartavya .
Reward if helpful.