Hi All,
I have one RFC 'ZBW_XXXXX' . Maximum performance needed from my RFC. Currently it is taking some micro seconds. i want to reduce as possible we can do.
Iam pasting code...
In the Below statmemt i have remove aggregate functions
and i done my best in ABAP Coding for this part.
Functionality wise that logic is working correct . it is done
with help at end of control statement and use SUM keyword
inside the internal table loop.
But still performance wise it is taking more time than
the Current select stamt with AggregateFunctions.
Also one point in given select query , group by Clause
fields like kf_key, TEXT1, TEXT2, TEXT3 ,TEXT4, are not key fields of Ztable.
Apart from select query,any other also Performance can
be Improved.
CODE AS FOLLOWS:
select subreg country site plant kf_key TEXT1 TEXT2 TEXT3 TEXT4 sum( period1 ) as period1 sum( period2 ) as period2
sum( period3 ) as period3 sum( period4 ) as period4
sum( period5 ) as period5 sum( period6 ) as period6
sum( period7 ) as period7 sum( period8 ) as period8
sum( period9 ) as period9 sum( period10 ) as period10
sum( period11 ) as period11 sum( period12 ) as period12
sum( period13 ) as period13 sum( period14 ) as period14
sum( period15 ) as period15 sum( period16 ) as period16
sum( period17 ) as period17 sum( period18 ) as period18
sum( period19 ) as period19 sum( period20 ) as period20
sum( period21 ) as period21 sum( period22 ) as period22
sum( period23 ) as period23 sum( period24 ) as period24
from ZBW_LPAD_ANALYST
into corresponding fields of table xit_analyst
where subreg in S_SUBREG
and country in S_COUNTRY
and site in S_SITE
and plant in S_PLANT
and sph in S_SPH
and spm in S_SPM
and spl in S_SPL
and supgbu in S_SUPGBU
and gbu in S_GBU
and procmt in S_PROCMT
and apvendor in S_VENDOR
group by subreg country site plant kf_key TEXT1 TEXT2 TEXT3 TEXT4.
loop at xit_analyst into WA_ANALYST.
clear: WA_CY, WA_LY, wa_from, wa_from1.
wa_from1 = wa_from_c.
wa_from = wa_from_l.
do wa_to times.
Get current year period values
if wa_from1 >= 13.
move: wa_from1 to period_from.
concatenate 'PERIOD' period_from into wa_period.
condense wa_period.
assign wa_period to <wa_fs>.
assign component <wa_fs> of structure wa_analyst to <wa_fs1>.
wa_cy = wa_cy + <wa_fs1>.
endif.
Get Last year period values
if wa_from <= 12.
move: wa_from to period_from.
concatenate 'PERIOD' period_from into wa_period.
condense wa_period.
assign wa_period to <wa_fs>.
assign component <wa_fs> of structure wa_analyst to <wa_fs1>.
wa_ly = wa_ly + <wa_fs1>.
endif.
wa_from = wa_from + 1.
wa_from1 = wa_from1 + 1.
enddo.
if wa_cy eq 0 and wa_ly eq 0.
clear: WA_ANALYST, wa_cy, wa_ly, WA_ANLST.
continue.
endif.
read table IT_ANLST into WA_ANLST with key
ZP_SUBREG = WA_ANALYST-SUBREG
GPU_0COUNTRY = WA_ANALYST-COUNTRY
GPUBWSITE = WA_ANALYST-SITE
GPU_0PLANT = WA_ANALYST-PLANT.
if SY-SUBRC eq 0.
case WA_ANALYST-KF_KEY.
when '49FBA3CTDNHMK46IHJRCXO7W5'.
WA_ANLST-GPUGLBCUR_CY = WA_ANLST-GPUGLBCUR_CY + WA_CY.
WA_ANLST-GPUGLBCUR_LY = WA_ANLST-GPUGLBCUR_LY + WA_LY.
when '49FBA3KHWM3C2QPYNDTP7Q6LX'.
WA_ANLST-GPUINVHDR_CY = WA_ANLST-GPUINVHDR_CY + WA_CY.
WA_ANLST-GPUINVHDR_LY = WA_ANLST-GPUINVHDR_LY + WA_LY.
when '49FBA3S6FKP1LD9ET7W1HS5BP'.
WA_ANLST-GPUINLITM_CY = WA_ANLST-GPUINLITM_CY + WA_CY.
WA_ANLST-GPUINLITM_LY = WA_ANLST-GPUINLITM_LY + WA_LY.
when '49FBA3ZUYJAR3ZSUZ1YDRU41H'.
WA_ANLST-GPUINWOPO_CY = WA_ANLST-GPUINWOPO_CY + WA_CY.
WA_ANLST-GPUINWOPO_LY = WA_ANLST-GPUINWOPO_LY + WA_LY.
when '49FBA47JHHWGMMCB4W0Q1W2R9'.
WA_ANLST-GPUTOT_PO_CY = WA_ANLST-GPUTOT_PO_CY + WA_CY.
WA_ANLST-GPUTOT_PO_LY = WA_ANLST-GPUTOT_PO_LY + WA_LY.
when '49FBA4F80GI658VRAQ32BY1H1'.
WA_ANLST-GPUN_LNIT_CY = WA_ANLST-GPUN_LNIT_CY + WA_CY.
WA_ANLST-GPUN_LNIT_LY = WA_ANLST-GPUN_LNIT_LY + WA_LY.
when '49FBA4UL2DPL6HYNME7QW1YWL'. " FI Spend
WA_ANLST-GPUFISPND_CY = WA_ANLST-GPUFISPND_CY + WA_CY.
WA_ANLST-GPUFISPND_LY = WA_ANLST-GPUFISPND_LY + WA_LY.
when '49FBA5HMN9IPQDL03WERQ7V1X'. " Compliant spend
WA_ANLST-GPUPSLCMS_CY = WA_ANLST-GPUPSLCMS_CY + WA_CY.
WA_ANLST-GPUPSLCMS_LY = WA_ANLST-GPUPSLCMS_LY + WA_LY.
when '49FBA6RPT14YU4TP2WSTEJNCL'. " Compliant #
WA_ANLST-GPUPSLCOM_CY = WA_ANLST-GPUPSLCOM_CY + WA_CY.
WA_ANLST-GPUPSLCOM_LY = WA_ANLST-GPUPSLCOM_LY + WA_LY.
when '49FBA81SYSR7XW2E1X6V2VFN9'. " MRP and Catalog PO lines
WA_ANLST-GPUPSLMRP_CY = WA_ANLST-GPUPSLMRP_CY + WA_CY.
WA_ANLST-GPUPSLMRP_LY = WA_ANLST-GPUPSLMRP_LY + WA_LY.
when '49FBA772UYCDVDWLEKXHYNKS5'. " Procurement method compliant #
WA_ANLST-GPUMTCOMP_CY = WA_ANLST-GPUMTCOMP_CY + WA_CY.
WA_ANLST-GPUMTCOMP_LY = WA_ANLST-GPUMTCOMP_LY + WA_LY.
when '49FBA7MFWVJSWMZHQ926IRI7P'. " Sourcing compliant #
WA_ANLST-GPUSRCOMP_CY = WA_ANLST-GPUSRCOMP_CY + WA_CY.
WA_ANLST-GPUSRCOMP_LY = WA_ANLST-GPUSRCOMP_LY + WA_LY.
when '49FBA5WZP6Q4RMNWFKJGABSHH'. " Procurement method compliant spend
WA_ANLST-GPUMTCMPS_CY = WA_ANLST-GPUMTCMPS_CY + WA_CY.
WA_ANLST-GPUMTCMPS_LY = WA_ANLST-GPUMTCMPS_LY + WA_LY.
when '49FBA6CCR3XJSVQSR8O4UFPX1'. " Sourcing compliant spend
WA_ANLST-GPUSRCMPS_CY = WA_ANLST-GPUSRCMPS_CY + WA_CY.
WA_ANLST-GPUSRCMPS_LY = WA_ANLST-GPUSRCMPS_LY + WA_LY.
endcase.
clear: wa_anlst-gpu_0plant.
modify it_anlst from wa_anlst index sy-tabix.
else.
move: WA_ANALYST-SUBREG to wa_anlst-ZP_SUBREG,
WA_ANALYST-TEXT1 to wa_anlst-text1,
WA_ANALYST-COUNTRY to wa_anlst-GPU_0COUNTRY,
WA_ANALYST-TEXT2 to wa_anlst-text2,
WA_ANALYST-SITE to wa_anlst-GPUBWSITE,
WA_ANALYST-TEXT3 to wa_anlst-text3,
WA_ANALYST-PLANT to wa_anlst-GPU_0PLANT,
WA_ANALYST-TEXT4 to wa_anlst-text4.
case WA_ANALYST-KF_KEY.
when '49FBA3CTDNHMK46IHJRCXO7W5'.
WA_ANLST-GPUGLBCUR_CY = WA_CY.
WA_ANLST-GPUGLBCUR_LY = WA_LY.
when '49FBA3KHWM3C2QPYNDTP7Q6LX'.
WA_ANLST-GPUINVHDR_CY = WA_CY.
WA_ANLST-GPUINVHDR_LY = WA_LY.
when '49FBA3S6FKP1LD9ET7W1HS5BP'.
WA_ANLST-GPUINLITM_CY = WA_CY.
WA_ANLST-GPUINLITM_LY = WA_LY.
when '49FBA3ZUYJAR3ZSUZ1YDRU41H'.
WA_ANLST-GPUINWOPO_CY = WA_CY.
WA_ANLST-GPUINWOPO_LY = WA_LY.
when '49FBA47JHHWGMMCB4W0Q1W2R9'.
WA_ANLST-GPUTOT_PO_CY = WA_CY.
WA_ANLST-GPUTOT_PO_LY = WA_LY.
when '49FBA4F80GI658VRAQ32BY1H1'.
WA_ANLST-GPUN_LNIT_CY = WA_CY.
WA_ANLST-GPUN_LNIT_LY = WA_LY.
when '49FBA4UL2DPL6HYNME7QW1YWL'. " FI Spend
WA_ANLST-GPUFISPND_CY = WA_CY.
WA_ANLST-GPUFISPND_LY = WA_LY.
when '49FBA5HMN9IPQDL03WERQ7V1X'. " Compliant spend
WA_ANLST-GPUPSLCMS_CY = WA_CY.
WA_ANLST-GPUPSLCMS_LY = WA_LY.
when '49FBA6RPT14YU4TP2WSTEJNCL'. " Compliant #
WA_ANLST-GPUPSLCOM_CY = WA_CY.
WA_ANLST-GPUPSLCOM_LY = WA_LY.
when '49FBA81SYSR7XW2E1X6V2VFN9'. " MRP and Catalog PO lines
WA_ANLST-GPUPSLMRP_CY = WA_CY.
WA_ANLST-GPUPSLMRP_LY = WA_LY.
when '49FBA772UYCDVDWLEKXHYNKS5'. " Procurement method compliant #
WA_ANLST-GPUMTCOMP_CY = WA_CY.
WA_ANLST-GPUMTCOMP_LY = WA_LY.
when '49FBA7MFWVJSWMZHQ926IRI7P'. " Sourcing compliant #
WA_ANLST-GPUSRCOMP_CY = WA_CY.
WA_ANLST-GPUSRCOMP_LY = WA_LY.
when '49FBA5WZP6Q4RMNWFKJGABSHH'. " Procurement method compliant spend
WA_ANLST-GPUMTCMPS_CY = WA_CY.
WA_ANLST-GPUMTCMPS_LY = WA_LY.
when '49FBA6CCR3XJSVQSR8O4UFPX1'. " Sourcing compliant spend
WA_ANLST-GPUSRCMPS_CY = WA_CY.
WA_ANLST-GPUSRCMPS_LY = WA_LY.
endcase.
clear: wa_anlst-gpu_0plant.
append wa_anlst to it_anlst.
endif.
Subregion
read table ew_subreg into wa_nv with key fieldname = wa_anlst-zp_subreg.
if sy-subrc ne 0.
move: wa_anlst-zp_subreg to wa_nv-fieldname,
wa_anlst-text1 to wa_nv-value.
append wa_nv to ew_subreg.
endif.
Country
read table ew_country into wa_nv with key fieldname = wa_anlst-gpu_0country.
if sy-subrc ne 0.
move: wa_anlst-gpu_0country to wa_nv-fieldname,
wa_anlst-text2 to wa_nv-value.
append wa_nv to ew_country.
endif.
Plant
read table ew_plant into wa_nv with key fieldname = wa_anlst-GPU_0PLANT.
if sy-subrc ne 0.
move: wa_anlst-gpu_0plant to wa_nv-fieldname,
wa_anlst-text4 to wa_nv-value.
append wa_nv to ew_plant.
endif.
Site
read table ew_site into wa_nv with key fieldname = wa_anlst-GPUBWSITE.
if sy-subrc ne 0.
move: wa_anlst-GPUBWSITE to wa_nv-fieldname,
wa_anlst-text3 to wa_nv-value.
append wa_nv to ew_site.
endif.
clear: WA_ANALYST, wa_cy, wa_ly, WA_ANLST.
endloop.
and plant in S_PLANT
and sph in S_SPH
and spm in S_SPM
and spl in S_SPL
and supgbu in S_SUPGBU
and gbu in S_GBU
and procmt in S_PROCMT
and apvendor in S_VENDOR
group by subreg country site plant kf_key TEXT1 TEXT2 TEXT3 TEXT4.
Helpful answers wil be rewarded.
BestRegards,
anilkumar