Tables storing Program Performance time
Hi All,
Can any one tell me the TAbles which store the
execution time of proagrams which are runnning daily .
Regards
Babu
Hi Al,
Not for JOB .
ABAP programs running in foreground...
Regards
babu
Similar Messages
-
Performance of will_paginate + stored programs
Hi all,
What your experience with performance of will_paginate with stored procedures/functions? I have a few pipelined functions following the procedure described at http://wiki.rubyonrails.org/rails/pages/OracleStoredProceduresAsDataSource and uses will_paginate for it.
As you know, a code such as
paginate_by_sql([
"select col1, col2, col3 from table(function(?,?))", "#{param1}", "#{param2}",
], options)
will automatically form:
select count(*) from (select col1, col2, col3 from table(function(param1,param2)))
to count the results. This looks like it will result in Oracle needlessly retrieving data for col1, col2, etc when all that is needed is the number of results. Or is there (hopefully) some sophistication/intelligence that determines otherwise?
And then to get for example results 76-90 will_paginate forms:
select * from
(select raw_sql_.*, rownum raw_rnum_ from
(select col1, col2, col3 from table(function(param1,param2))) raw_sql_
where rownum <= 90) where raw_rnum_ > 75
Again, does this mean the pipelined function will still read all the data for results 1-75 first to form the "table"? If so, that would be a waste. Does it look like it's not ideal to use will_paginate with stored programs? Would appreciate to know what you think.
Thank you very much.
Johann
Edited by: johanntagle on Dec 9, 2008 4:06 AMShort answer: it depends.
There will probobaly be very little difference in performance difference for a sipmle insert / update etc.
Multiple inserts / updates etc you will probobaly find faster with a stored procedure rather than n prepared statments as you only have to contact the database once vs n times.
Hope this helps! -
Programming a times table with FOR, WHILE & DO WHILE STATEMENTS
Guys,
Help me, I have tried hard, but I didn't find the answer, my problem is that I got difficulties in doing a times table with the FOR, WHILE, and DO WHILE STATEMENTS just using a single index or a single variable.
Guys, is it possible to program a times table with these conditions all together in the same code???
Do I await your suggestions?
Ps: Below, the attempt that I did, but I was not successful.
import javax.swing.JOptionPane;
public class tab
public static void main(String args[])
int i;
String TimesTable= "";
int result=0;
do
for (i=0;i<=10;i++)
result=i*1;
TimesTable +="\n" + i + "x" + i + "=" + result;
//JOptionPane.showMessageDialog(null, "Times tables of " + i + TimesTable);
// TimeTable="";
// i=0;
// i=i+1;
// i=0;
while(i<=10)
i=i+1;
// System.out.println("2 x "+i+"="+2*i);
// i--;
}while(i!=0);
JOptionPane.showMessageDialog(null, "Times Table of " + i + TimesTable);
TimesTable="";
}You can use the if block "if(i%10==9)" in this case.
-
Report program Performance problem
Hi All,
one object is taking 30hr for executing.some one develped this in 1998 but this time it is a big Performance problem.please some one helep what to do i am giving that code.
*--DOCUMENTATION--
Programe written by : 31.03.1998 .
Purpose : this programe updates the car status into the table zsdtab1
This programe is to be schedule in the backgroud periodically .
Querries can be fired on the table zsdtab1 to get the details of the
Car .
This programe looks at the changes made in the material master from
last updated date and the new entries in material master and updates
the tables zsdtab1 .
Changes in the Sales Order are not taken into account .
To get a fresh data set the value of zupddate in table ZSTATUS as
01.01.1998 . All the data will be refreshed from that date .
Program Changed on 23/7/2001 after version upgrade 46b by jyoti
Addition of New tables for Ibase
tables used -
tables : mara , " Material master
ausp , " Characteristics table .
zstatus , " Last updated status table .
zsdtab1 , " Central database table to be maintained .
vbap , " Sales order header table .
vbak , " Sales order item table .
kna1 , " Customer master .
vbrk ,
vbrp ,
bkpf ,
bseg ,
mseg ,
mkpf ,
vbpa ,
vbfa ,
t005t . " Country details tabe .
--NEW TABLES ADDEDFOR VERSION 4.6B--
tables : ibsymbol ,ibin , ibinvalues .
data : vatinn like ibsymbol-atinn , vatwrt like ibsymbol-atwrt ,
vatflv like ibsymbol-atflv .
*--types definition--
types : begin of mara_itab_type ,
matnr like mara-matnr ,
cuobf like mara-cuobf ,
end of mara_itab_type ,
begin of ausp_itab_type ,
atinn like ausp-atinn ,
atwrt like ausp-atwrt ,
atflv like ausp-atflv ,
end of ausp_itab_type .
data : mara_itab type mara_itab_type occurs 500 with header line ,
zsdtab1_itab like zsdtab1 occurs 500 with header line ,
ausp_itab type ausp_itab_type occurs 500 with header line ,
last_date type d ,
date type d .
data: length type i.
clear mara_itab . refresh mara_itab .
clear zsdtab1_itab . refresh zsdtab1_itab .
select single zupddate into last_date from zstatus
where programm = 'ZSDDET01' .
select matnr cuobf into (mara_itab-matnr , mara_itab-cuobf) from mara
where mtart eq 'FERT' or mtart = 'ZCBU'.
where MATNR IN MATERIA
and ERSDA IN C_Date
and MTART in M_TYP.
append mara_itab .
endselect .
loop at mara_itab.
clear zsdtab1_itab .
zsdtab1_itab-commno = mara_itab-matnr .
Get the detailed data into internal table ausp_itab .----------->>>
clear ausp_itab . refresh ausp_itab .
--change starts--
select atinn atwrt atflv into (ausp_itab-atinn , ausp_itab-atwrt ,
ausp_itab-atflv) from ausp
where objek = mara_itab-matnr .
append ausp_itab .
endselect .
clear ausp_itab .
select atinn atwrt atflv into (ausp_itab-atinn , ausp_itab-atwrt ,
ausp_itab-atflv) from ibin as a inner join ibinvalues as b
on ain_recno = bin_recno
inner join ibsymbol as c
on bsymbol_id = csymbol_id
where a~instance = mara_itab-cuobf .
append ausp_itab .
endselect .
----CHANGE ENDS HERE -
sort ausp_itab by atwrt.
loop at ausp_itab .
clear date .
case ausp_itab-atinn .
when '0000000094' .
zsdtab1_itab-model = ausp_itab-atwrt . " model .
when '0000000101' .
zsdtab1_itab-drive = ausp_itab-atwrt . " drive
when '0000000095' .
zsdtab1_itab-converter = ausp_itab-atwrt . "converter
when '0000000096' .
zsdtab1_itab-transmssn = ausp_itab-atwrt . "transmission
when '0000000097' .
zsdtab1_itab-colour = ausp_itab-atwrt . "colour
when '0000000098' .
zsdtab1_itab-ztrim = ausp_itab-atwrt . "trim
when '0000000103' .
*=========Sujit 14-Mar-2006
IF AUSP_ITAB-ATWRT(3) EQ 'WDB' OR AUSP_ITAB-ATWRT(3) EQ 'WDD'
OR AUSP_ITAB-ATWRT(3) EQ 'WDC' OR AUSP_ITAB-ATWRT(3) EQ 'KPD'.
ZSDTAB1_ITAB-CHASSIS_NO = AUSP_ITAB-ATWRT+3(14).
ELSE.
ZSDTAB1_ITAB-CHASSIS_NO = AUSP_ITAB-ATWRT . "chassis no
ENDIF.
zsdtab1_itab-chassis_no = ausp_itab-atwrt . "chassis no
*=========14-Mar-2006
when '0000000166' .
----25.05.04
length = strlen( ausp_itab-atwrt ).
if length < 15. "***aded by patil
zsdtab1_itab-engine_no = ausp_itab-atwrt . "ENGINE NO
else.
zsdtab1_itab-engine_no = ausp_itab-atwrt+13(14)."Aded on 21.05.04 patil
endif.
----25.05.04
when '0000000104' .
zsdtab1_itab-body_no = ausp_itab-atwrt . "BODY NO
when '0000000173' . "21.06.98
zsdtab1_itab-cockpit = ausp_itab-atwrt . "COCKPIT NO . "21.06.98
when '0000000102' .
zsdtab1_itab-dest = ausp_itab-atwrt . "destination
when '0000000105' .
zsdtab1_itab-airbag = ausp_itab-atwrt . "AIRBAG
when '0000000110' .
zsdtab1_itab-trailer_no = ausp_itab-atwrt . "TRAILER_NO
when '0000000109' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-fininspdat = date . "FIN INSP DATE
when '0000000108' .
zsdtab1_itab-entrydate = ausp_itab-atwrt . "ENTRY DATE
when '0000000163' .
zsdtab1_itab-regist_no = ausp_itab-atwrt . "REGIST_NO
when '0000000164' .
zsdtab1_itab-mech_key = ausp_itab-atwrt . "MECH_KEY
when '0000000165' .
zsdtab1_itab-side_ab_rt = ausp_itab-atwrt . "SIDE_AB_RT
when '0000000171' .
zsdtab1_itab-side_ab_lt = ausp_itab-atwrt . "SIDE_AB_LT
when '0000000167' .
zsdtab1_itab-elect_key = ausp_itab-atwrt . "ELECT_KEY
when '0000000168' .
zsdtab1_itab-head_lamp = ausp_itab-atwrt . "HEAD_LAMP
when '0000000169' .
zsdtab1_itab-tail_lamp = ausp_itab-atwrt . "TAIL_LAMP
when '0000000170' .
zsdtab1_itab-vac_pump = ausp_itab-atwrt . "VAC_PUMP
when '0000000172' .
zsdtab1_itab-sd_ab_sn_l = ausp_itab-atwrt . "SD_AB_SN_L
when '0000000174' .
zsdtab1_itab-sd_ab_sn_r = ausp_itab-atwrt . "SD_AB_SN_R
when '0000000175' .
zsdtab1_itab-asrhydunit = ausp_itab-atwrt . "ASRHYDUNIT
when '0000000176' .
zsdtab1_itab-gearboxno = ausp_itab-atwrt . "GEARBOXNO
when '0000000177' .
zsdtab1_itab-battery = ausp_itab-atwrt . "BATTERY
when '0000000178' .
zsdtab1_itab-tyretype = ausp_itab-atwrt . "TYRETYPE
when '0000000179' .
zsdtab1_itab-tyremake = ausp_itab-atwrt . "TYREMAKE
when '0000000180' .
zsdtab1_itab-tyresize = ausp_itab-atwrt . "TYRESIZE
when '0000000181' .
zsdtab1_itab-rr_axle_no = ausp_itab-atwrt . "RR_AXLE_NO
when '0000000183' .
zsdtab1_itab-ff_axl_nor = ausp_itab-atwrt . "FF_AXLE_NO_rt
when '0000000182' .
zsdtab1_itab-ff_axl_nol = ausp_itab-atwrt . "FF_AXLE_NO_lt
when '0000000184' .
zsdtab1_itab-drivairbag = ausp_itab-atwrt . "DRIVAIRBAG
when '0000000185' .
zsdtab1_itab-st_box_no = ausp_itab-atwrt . "ST_BOX_NO
when '0000000186' .
zsdtab1_itab-transport = ausp_itab-atwrt . "TRANSPORT
when '0000000106' .
zsdtab1_itab-trackstage = ausp_itab-atwrt . " tracking stage
when '0000000111' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_1 = date . " tracking date for 1.
when '0000000112' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_5 = date . " tracking date for 5.
when '0000000113' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_10 = date . "tracking date for 10
when '0000000114' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_15 = date . "tracking date for 15
when '0000000115' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_20 = date . " tracking date for 20
when '0000000116' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_25 = date . " tracking date for 25
when '0000000117' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_30 = date . "tracking date for 30
when '0000000118' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_35 = date . "tracking date for 35
when '0000000119' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_40 = date . " tracking date for 40
when '0000000120' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_45 = date . " tracking date for 45
when '0000000121' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_50 = date . "tracking date for 50
when '0000000122' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_55 = date . "tracking date for 55
when '0000000123' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_60 = date . " tracking date for 60
when '0000000124' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_65 = date . " tracking date for 65
when '0000000125' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_70 = date . "tracking date for 70
when '0000000126' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_75 = date . "tracking date for 75
when '0000000127' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_78 = date . " tracking date for 78
when '0000000203' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_79 = date . " tracking date for 79
when '0000000128' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_80 = date . " tracking date for 80
when '0000000129' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_85 = date . "tracking date for 85
when '0000000130' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_90 = date . "tracking date for 90
when '0000000131' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dat_trk_95 = date . "tracking date for 95
when '0000000132' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dattrk_100 = date . " tracking date for100
when '0000000133' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dattrk_110 = date . " tracking date for110
when '0000000134' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dattrk_115 = date . "tracking date for 115
when '0000000135' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dattrk_120 = date . "tracking date for 120
when '0000000136' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-dattrk_105 = date . "tracking date for 105
when '0000000137' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_1 = date . "plan trk date for 1
when '0000000138' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_5 = date . "plan trk date for 5
when '0000000139' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_10 = date . "plan trk date for 10
when '0000000140' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_15 = date . "plan trk date for 15
when '0000000141' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_20 = date . "plan trk date for 20
when '0000000142' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_25 = date . "plan trk date for 25
when '0000000143' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_30 = date . "plan trk date for 30
when '0000000144' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_35 = date . "plan trk date for 35
when '0000000145' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_40 = date . "plan trk date for 40
when '0000000146' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_45 = date . "plan trk date for 45
when '0000000147' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_50 = date . "plan trk date for 50
when '0000000148' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_55 = date . "plan trk date for 55
when '0000000149' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_60 = date . "plan trk date for 60
when '0000000150' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_65 = date . "plan trk date for 65
when '0000000151' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_70 = date . "plan trk date for 70
when '0000000152' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_75 = date . "plan trk date for 75
when '0000000153' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_78 = date . "plan trk date for 78
when '0000000202' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_79 = date . "plan trk date for 79
when '0000000154' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_80 = date . "plan trk date for 80
when '0000000155' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_85 = date . "plan trk date for 85
when '0000000156' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_90 = date . "plan trk date for 90
when '0000000157' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_95 = date . "plan trk date for 95
when '0000000158' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_100 = date . "plan trk date for 100
when '0000000159' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_105 = date . "plan trk date for 105
when '0000000160' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_110 = date . "plan trk date for 110
when '0000000161' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_115 = date . "plan trk date for 115
when '0000000162' .
perform date_convert using ausp_itab-atflv changing date .
zsdtab1_itab-pdt_tk_120 = date . "plan trk date for 120
********Additional fields / 24.05.98**********************************
when '0000000099' .
case ausp_itab-atwrt .
when '540' .
zsdtab1_itab-roll_blind = 'X' .
when '482' .
zsdtab1_itab-ground_clr = 'X' .
when '551' .
zsdtab1_itab-anti_theft = 'X' .
when '882' .
zsdtab1_itab-anti_tow = 'X' .
when '656' .
zsdtab1_itab-alloy_whel = 'X' .
when '265' .
zsdtab1_itab-del_class = 'X' .
when '280' .
zsdtab1_itab-str_wheel = 'X' .
when 'CDC' .
zsdtab1_itab-cd_changer = 'X' .
when '205' .
zsdtab1_itab-manual_eng = 'X' .
when '273' .
zsdtab1_itab-conn_handy = 'X' .
when '343' .
zsdtab1_itab-aircleaner = 'X' .
when '481' .
zsdtab1_itab-metal_sump = 'X' .
when '533' .
zsdtab1_itab-speaker = 'X' .
when '570' .
zsdtab1_itab-arm_rest = 'X' .
when '580' .
zsdtab1_itab-aircond = 'X' .
when '611' .
zsdtab1_itab-exit_light = 'X' .
when '613' .
zsdtab1_itab-headlamp = 'X' .
when '877' .
zsdtab1_itab-readlamp = 'X' .
when '808' .
zsdtab1_itab-code_ckd = 'X' .
when '708' .
zsdtab1_itab-del_prt_lc = 'X' .
when '593' .
zsdtab1_itab-ins_glass = 'X' .
when '955' .
zsdtab1_itab-zelcl = 'Elegance' .
when '593' .
zsdtab1_itab-zelcl = 'Classic' .
endcase .
endcase .
endloop .
*--Update the sales data .--
perform get_sales_order using mara_itab-matnr .
perform get_cartype using mara_itab-matnr .
append zsdtab1_itab .
endloop.
<<<
loop at zsdtab1_itab .
if zsdtab1_itab-cartype <> 'W-203'
or zsdtab1_itab-cartype <> 'W-210'
or zsdtab1_itab-cartype <> 'W-211'.
clear zsdtab1_itab-zelcl.
endif.
SELECT SINGLE * FROM ZSDTAB1 WHERE COMMNO = MARA_ITAB-MATNR .
select single * from zsdtab1 where commno = zsdtab1_itab-commno.
if sy-subrc <> 0 .
insert into zsdtab1 values zsdtab1_itab .
else .
update zsdtab1 set :vbeln = zsdtab1_itab-vbeln
bill_doc = zsdtab1_itab-bill_doc
dest = zsdtab1_itab-dest
lgort = zsdtab1_itab-lgort
ship_tp = zsdtab1_itab-ship_tp
country = zsdtab1_itab-country
kunnr = zsdtab1_itab-kunnr
vkbur = zsdtab1_itab-vkbur
customer = zsdtab1_itab-customer
city = zsdtab1_itab-city
region = zsdtab1_itab-region
model = zsdtab1_itab-model
drive = zsdtab1_itab-drive
converter = zsdtab1_itab-converter
transmssn = zsdtab1_itab-transmssn
colour = zsdtab1_itab-colour
ztrim = zsdtab1_itab-ztrim
commno = zsdtab1_itab-commno
trackstage = zsdtab1_itab-trackstage
chassis_no = zsdtab1_itab-chassis_no
engine_no = zsdtab1_itab-engine_no
body_no = zsdtab1_itab-body_no
cockpit = zsdtab1_itab-cockpit
airbag = zsdtab1_itab-airbag
trailer_no = zsdtab1_itab-trailer_no
fininspdat = zsdtab1_itab-fininspdat
entrydate = zsdtab1_itab-entrydate
regist_no = zsdtab1_itab-regist_no
mech_key = zsdtab1_itab-mech_key
side_ab_rt = zsdtab1_itab-side_ab_rt
side_ab_lt = zsdtab1_itab-side_ab_lt
elect_key = zsdtab1_itab-elect_key
head_lamp = zsdtab1_itab-head_lamp
tail_lamp = zsdtab1_itab-tail_lamp
vac_pump = zsdtab1_itab-vac_pump
sd_ab_sn_l = zsdtab1_itab-sd_ab_sn_l
sd_ab_sn_r = zsdtab1_itab-sd_ab_sn_r
asrhydunit = zsdtab1_itab-asrhydunit
gearboxno = zsdtab1_itab-gearboxno
battery = zsdtab1_itab-battery
tyretype = zsdtab1_itab-tyretype
tyremake = zsdtab1_itab-tyremake
tyresize = zsdtab1_itab-tyresize
rr_axle_no = zsdtab1_itab-rr_axle_no
ff_axl_nor = zsdtab1_itab-ff_axl_nor
ff_axl_nol = zsdtab1_itab-ff_axl_nol
drivairbag = zsdtab1_itab-drivairbag
st_box_no = zsdtab1_itab-st_box_no
transport = zsdtab1_itab-transport
OPTIONS-
roll_blind = zsdtab1_itab-roll_blind
ground_clr = zsdtab1_itab-ground_clr
anti_theft = zsdtab1_itab-anti_theft
anti_tow = zsdtab1_itab-anti_tow
alloy_whel = zsdtab1_itab-alloy_whel
del_class = zsdtab1_itab-del_class
str_wheel = zsdtab1_itab-str_wheel
cd_changer = zsdtab1_itab-cd_changer
manual_eng = zsdtab1_itab-manual_eng
conn_handy = zsdtab1_itab-conn_handy
aircleaner = zsdtab1_itab-aircleaner
metal_sump = zsdtab1_itab-metal_sump
speaker = zsdtab1_itab-speaker
arm_rest = zsdtab1_itab-arm_rest
aircond = zsdtab1_itab-aircond
exit_light = zsdtab1_itab-exit_light
headlamp = zsdtab1_itab-headlamp
readlamp = zsdtab1_itab-readlamp
code_ckd = zsdtab1_itab-code_ckd
del_prt_lc = zsdtab1_itab-del_prt_lc
ins_glass = zsdtab1_itab-ins_glass
dat_trk_1 = zsdtab1_itab-dat_trk_1
dat_trk_5 = zsdtab1_itab-dat_trk_5
dat_trk_10 = zsdtab1_itab-dat_trk_10
dat_trk_15 = zsdtab1_itab-dat_trk_15
dat_trk_20 = zsdtab1_itab-dat_trk_20
dat_trk_25 = zsdtab1_itab-dat_trk_25
dat_trk_30 = zsdtab1_itab-dat_trk_30
dat_trk_35 = zsdtab1_itab-dat_trk_35
dat_trk_40 = zsdtab1_itab-dat_trk_40
dat_trk_45 = zsdtab1_itab-dat_trk_45
dat_trk_50 = zsdtab1_itab-dat_trk_50
dat_trk_55 = zsdtab1_itab-dat_trk_55
dat_trk_60 = zsdtab1_itab-dat_trk_60
dat_trk_65 = zsdtab1_itab-dat_trk_65
dat_trk_70 = zsdtab1_itab-dat_trk_70
dat_trk_75 = zsdtab1_itab-dat_trk_75
dat_trk_78 = zsdtab1_itab-dat_trk_78
dat_trk_79 = zsdtab1_itab-dat_trk_79
dat_trk_80 = zsdtab1_itab-dat_trk_80
dat_trk_85 = zsdtab1_itab-dat_trk_85
dat_trk_90 = zsdtab1_itab-dat_trk_90
dat_trk_95 = zsdtab1_itab-dat_trk_95
dattrk_100 = zsdtab1_itab-dattrk_100
dattrk_105 = zsdtab1_itab-dattrk_105
dattrk_110 = zsdtab1_itab-dattrk_110
dattrk_115 = zsdtab1_itab-dattrk_115
dattrk_120 = zsdtab1_itab-dattrk_120
pdt_tk_1 = zsdtab1_itab-pdt_tk_1
pdt_tk_5 = zsdtab1_itab-pdt_tk_5
pdt_tk_10 = zsdtab1_itab-pdt_tk_10
pdt_tk_15 = zsdtab1_itab-pdt_tk_15
pdt_tk_20 = zsdtab1_itab-pdt_tk_20
pdt_tk_25 = zsdtab1_itab-pdt_tk_25
pdt_tk_30 = zsdtab1_itab-pdt_tk_30
pdt_tk_35 = zsdtab1_itab-pdt_tk_35
pdt_tk_40 = zsdtab1_itab-pdt_tk_40
pdt_tk_45 = zsdtab1_itab-pdt_tk_45
pdt_tk_50 = zsdtab1_itab-pdt_tk_50
pdt_tk_55 = zsdtab1_itab-pdt_tk_55
pdt_tk_60 = zsdtab1_itab-pdt_tk_60
pdt_tk_65 = zsdtab1_itab-pdt_tk_65
pdt_tk_70 = zsdtab1_itab-pdt_tk_70
pdt_tk_75 = zsdtab1_itab-pdt_tk_75
pdt_tk_78 = zsdtab1_itab-pdt_tk_78
pdt_tk_79 = zsdtab1_itab-pdt_tk_79
pdt_tk_80 = zsdtab1_itab-pdt_tk_80
pdt_tk_85 = zsdtab1_itab-pdt_tk_85
pdt_tk_90 = zsdtab1_itab-pdt_tk_90
pdt_tk_95 = zsdtab1_itab-pdt_tk_95
pdt_tk_100 = zsdtab1_itab-pdt_tk_100
pdt_tk_105 = zsdtab1_itab-pdt_tk_105
pdt_tk_110 = zsdtab1_itab-pdt_tk_110
pdt_tk_115 = zsdtab1_itab-pdt_tk_115
pdt_tk_120 = zsdtab1_itab-pdt_tk_120
cartype = zsdtab1_itab-cartype
zelcl = zsdtab1_itab-zelcl
excise_no = zsdtab1_itab-excise_no
where commno = zsdtab1_itab-commno .
Update table .---------<<<
endif .
endloop .
perform update_excise_date .
perform update_post_goods_issue_date .
perform update_time.
*///////////////////// end of programe /////////////////////////////////
Get sales data -
form get_sales_order using matnr .
data : corr_vbeln like vbrk-vbeln .
ADDED BY ADITYA / 22.06.98 **************************************
perform get_order using matnr .
select single vbeln lgort into (zsdtab1_itab-vbeln , zsdtab1_itab-lgort)
from vbap where matnr = matnr . " C-22.06.98
from vbap where vbeln = zsdtab1_itab-vbeln .
if sy-subrc = 0 .
************Get the Excise No from Allocation Field*******************
select single * from zsdtab1 where commno = matnr .
if zsdtab1-excise_no = '' .
select * from vbrp where matnr = matnr .
select single vbeln into corr_vbeln from vbrk where
vbeln = vbrp-vbeln and vbtyp = 'M'.
if sy-subrc eq 0.
select single * from vbrk where vbtyp = 'N'
and sfakn = corr_vbeln. "cancelled doc.
if sy-subrc ne 0.
select single * from vbrk where vbeln = corr_vbeln.
if sy-subrc eq 0.
data : year(4) .
move sy-datum+0(4) to year .
select single * from bkpf where awtyp = 'VBRK' and awkey = vbrk-vbeln
and bukrs = 'MBIL' and gjahr = year .
if sy-subrc = 0 .
select single * from bseg where bukrs = 'MBIL' and belnr = bkpf-belnr
and gjahr = year and koart = 'D' and
shkzg = 'S' .
zsdtab1_itab-excise_no = bseg-zuonr .
endif .
endif.
endif.
endif.
endselect.
endif .
select single kunnr vkbur into (zsdtab1_itab-kunnr ,
zsdtab1_itab-vkbur) from vbak
where vbeln = zsdtab1_itab-vbeln .
if sy-subrc = 0 .
select single name1 ort01 regio into (zsdtab1_itab-customer ,
zsdtab1_itab-city , zsdtab1_itab-region) from kna1
where kunnr = zsdtab1_itab-kunnr .
endif.
Get Ship to Party **************************************************
select single * from vbpa where vbeln = zsdtab1_itab-vbeln and
parvw = 'WE' .
if sy-subrc = 0 .
zsdtab1_itab-ship_tp = vbpa-kunnr .
Get Destination Country of Ship to Party .************
select single * from kna1 where kunnr = vbpa-kunnr .
if sy-subrc = 0 .
select single * from t005t where land1 = kna1-land1
and spras = 'E' .
if sy-subrc = 0 .
zsdtab1_itab-country = t005t-landx .
endif .
endif .
endif .
endif .
endform. " GET_SALES
form update_time.
update zstatus set zupddate = sy-datum
uzeit = sy-uzeit
where programm = 'ZSDDET01' .
endform. " UPDATE_TIME
*& Form DATE_CONVERT
form date_convert using atflv changing date .
data : dt(8) , dat type i .
dat = atflv .
dt = dat .
date = dt .
endform. " DATE_CONVERT
*& Form UPDATE_POST_GOODS_ISSUE_DATE
form update_post_goods_issue_date .
types : begin of itab1_type ,
mblnr like mseg-mblnr ,
budat like mkpf-budat ,
end of itab1_type .
data : itab1 type itab1_type occurs 10 with header line .
loop at mara_itab .
select single * from zsdtab1 where commno = mara_itab-matnr .
if sy-subrc = 0 and zsdtab1-postdate = '00000000' .
refresh itab1 . clear itab1 .
select * from mseg where matnr = mara_itab-matnr and bwart = '601' .
itab1-mblnr = mseg-mblnr .
append itab1 .
endselect .
loop at itab1 .
select single * from mkpf where mblnr = itab1-mblnr .
if sy-subrc = 0 .
itab1-budat = mkpf-budat .
modify itab1 .
endif .
endloop .
sort itab1 by budat .
read table itab1 index 1 .
if sy-subrc = 0 .
update zsdtab1 set postdate = itab1-budat
where commno = mara_itab-matnr .
endif .
endif .
endloop .
endform. " UPDATE_POST_GOODS_ISSUE_DATE
*& Form UPDATE_EXCISE_DATE
form update_excise_date.
types : begin of itab2_type ,
mblnr like mseg-mblnr ,
budat like mkpf-budat ,
end of itab2_type .
data : itab2 type itab2_type occurs 10 with header line .
loop at mara_itab .
select single * from zsdtab1 where commno = mara_itab-matnr .
if sy-subrc = 0 and zsdtab1-excise_dat = '00000000' .
refresh itab2 . clear itab2 .
select * from mseg where matnr = mara_itab-matnr and
( bwart = '601' or bwart = '311' ) .
itab2-mblnr = mseg-mblnr .
append itab2 .
endselect .
loop at itab2 .
select single * from mkpf where mblnr = itab2-mblnr .
if sy-subrc = 0 .
itab2-budat = mkpf-budat .
modify itab2 .
endif .
endloop .
sort itab2 by budat .
read table itab2 index 1 .
if sy-subrc = 0 .
update zsdtab1 set excise_dat = itab2-budat
where commno = mara_itab-matnr .
endif .
endif .
endloop .
endform. " UPDATE_EXCISE_DATE
form get_order using matnr .
types : begin of itab_type ,
vbeln like vbap-vbeln ,
posnr like vbap-posnr ,
end of itab_type .
data : itab type itab_type occurs 10 with header line .
refresh itab . clear itab .
select * from vbap where matnr = mara_itab-matnr .
itab-vbeln = vbap-vbeln .
itab-posnr = vbap-posnr .
append itab .
endselect .
loop at itab .
select single * from vbak where vbeln = itab-vbeln .
if vbak-vbtyp <> 'C' .
delete itab .
endif .
endloop .
loop at itab .
select single * from vbfa where vbelv = itab-vbeln and
posnv = itab-posnr and vbtyp_n = 'H' .
if sy-subrc = 0 .
delete itab .
endif .
endloop .
clear : zsdtab1_itab-vbeln , zsdtab1_itab-bill_doc .
loop at itab .
zsdtab1_itab-vbeln = itab-vbeln .
select single * from vbfa where vbelv = itab-vbeln and
posnv = itab-posnr and vbtyp_n = 'M' .
if sy-subrc = 0 .
zsdtab1_itab-bill_doc = vbfa-vbeln .
endif .
endloop .
endform .
*& Form GET_CARTYPE
form get_cartype using matnr .
select single * from mara where matnr = matnr .
zsdtab1_itab-cartype = mara-satnr .
endform. " GET_CARTYPEHi,
I have analysed your program and i would like to share following points for better performance of this report :
(a) Use the field Names instead of Select * or Select Single * as if you use the field names it will consume less amount of resources inside the loop as well as you have lot many Select Single * and u r using very big tables like VBAP and many more.
(b) Trace on ST05 which particular query is mostly effecting your system or use ST12 in current mode to trace for less inputs which run the report for 20-30 min so that we get an idea which queries are effecting the system and taking a lot of time.
(c) In Case of internal tables sort the data properly and use binary search for getting the data.
I think this will help.
Thanks and Regards,
Harsh -
Regarding Internal table and access performance
hey guys.
In my report , Somehow i reduced the query performance time by selecting minimum key fields and moved the selected records to internal table.
Now from this internal table i am restricting the loop
as per my requirements using where statements.(believing that internal table retrieval is more faster than database acces(using query)).
But still my performance goes down.
Could you pls suggest me how to reduce the execution time
in abap programming.
I used below commands.
Read using binary search.
loop ...where statement.
perform statements.
collect staements.
delete itab.(delete duplicates staements too)
sort itab(sorting).
For each above statements do we have any faster way to retrieval records.
If i see my bottle neck at se30.it shows
ABAP programming to 70 percent
database access to 20 percent
R3 system as 10percent.
now how to reduce this abap process.
could you pls reply.
ambichan.
ambichan.Hello Ambichan,
It is difficult to suggest the improvements without looking at the actual code that you are running. However, I can give you some general information.
1. READ using the BINARY SEARCH addition.
This is indeed a good way of doing a READ. But have you made sure that the internal table is <i>sorted by the required fields</i> before you use this statement ?
2. LOOP...WHERE statement.
This is also a good way to avoid looping through unnecessary entries. But further improvement can certainly be achieved if you use FIELD-SYMBOLS.
LOOP AT ITAB INTO <FIELD_SYMBOL_OF_THE_SAME_LINE-TYPE_AS_ITAB>.
ENDLOOP.
3. PERFORM statements.
A perform statement can not be optimized. what matters is the code that you write inside the FORM (or a subroutine).
4. COLLECT statements.
I trust you have used the COLLECT statement to simplify the logic. Let that be as it is. The code is more readable and elegant.
The COLLECT statement is somewhat performance intensive. It takes more time with a normal internal table (STANDARD). See if you can use an internal table of type SORTED. Even better, you can use a HASHED internal table.
5. DELETE itab.(delete duplicates staements too)
If you are making sure that you are deleting several entries based on a condition, then this should be okay. You cannot avoid using the DELETE statement if your functionality requires you to do so.
Also, before deleting the DUPLICATES, ensure that the internal table is sorted.
6. SORT statement.
It depends on how many entries there are in the internal table. If you are using most of the above points on the same internal table, then it is better that you define your internal table to be of type SORTED. That way, inserting entries will take a little more time (to ensure that the table is always sorted), but alll the other operations are going to be much faster.
Get back to me if you need further assistance.
Regards,
<a href="https://www.sdn.sap.com:443http://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.sdnbusinesscard?u=zwcc%2fwm4ups%3d">anand Mandalika</a>. -
How to reduce performance time.
Hi,
Any body guide me how to reduce performance time for this report.
Its taking to much time for execution.
*& Report ZEOU_CST_CLAIM_REP *
REPORT zeou_cst_claim_rep.
*& Program Name : ZEOU_CST_CLAIM_REP *
*& Title : CST Claim Report *
*& Module Name : EOU *
*& Author : Chandra Vangoor *
*& Create Date : 05.05.2006 *
*& Logical DB : None *
*& Program Type : On-Line. *
*& SAP Release : 4.7 *
*& Description : *
*& Log Date Author Reason of change
TABLES
TABLES : a363,
mara,
marc,
makt,
ekko,
ekpo,
mkpf,
mseg,
konp,
konh.
SELECTION-SCREEN
SELECTION-SCREEN : BEGIN OF BLOCK cst WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR mara-matnr, "Material Number
s_lifnr FOR ekko-lifnr, "Account Number of the Vendor
s_bedat FOR ekko-bedat, "Purchasing Document Date
s_kschl FOR konh-kschl OBLIGATORY NO INTERVALS, "Condition type
s_bwart FOR mseg-bwart OBLIGATORY NO INTERVALS. "Movement Type (Inventory Management)
PARAMETERS : p_werks LIKE marc-werks OBLIGATORY. "Plant
SELECTION-SCREEN : END OF BLOCK cst.
INCLUDES
INCLUDE zalv_data.
DATA - INTERNAL TABLES AND FIELD LISTS
DATA : BEGIN OF a363_itab OCCURS 0,
matnr LIKE a363-matnr, "Material Number
lifnr LIKE a363-lifnr, "Account Number of the Vendor
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
knumh LIKE a363-knumh, "Condition record number
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
END OF a363_itab.
DATA : BEGIN OF konp_itab OCCURS 0,
knumh LIKE a363-knumh, "Condition record number
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
lifnr LIKE a363-lifnr, "Account Number of the Vendor
END OF konp_itab.
DATA : BEGIN OF ekko_itab OCCURS 0,
ebeln LIKE ekko-ebeln, "Purchasing Document Number
lifnr LIKE ekko-lifnr, "Account Number of the Vendor
bedat LIKE ekko-bedat, "Purchasing Document Date
END OF ekko_itab.
DATA : BEGIN OF ekpo_itab OCCURS 0,
ebeln LIKE ekpo-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
matnr LIKE ekpo-matnr, "Material Number
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Purchase order quantity
END OF ekpo_itab.
DATA : BEGIN OF v_po_det OCCURS 0, "VENDOR + PLANT + PO DEATILS
lifnr LIKE ekko-lifnr, "Account Number of the Vendor
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Purchase order quantity
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
END OF v_po_det.
DATA : BEGIN OF mseg_itab OCCURS 0,
mblnr LIKE mseg-mblnr, "Number of Material Document
ebeln LIKE mseg-ebeln, "Purchasing Document Number
ebelp LIKE mseg-ebelp, "Item Number of Purchasing Document
matnr LIKE mseg-matnr, "Material Number
lifnr LIKE mseg-lifnr, "Account Number of the Vendor
werks LIKE mseg-werks, "Plant
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
END OF mseg_itab.
DATA : BEGIN OF mkpf_itab OCCURS 0,
mblnr LIKE mkpf-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
END OF mkpf_itab.
DATA : BEGIN OF zeou_pcrdtl_itab OCCURS 0,
matnr LIKE zeou_pcrdtl-matnr, "Material Number
lifnr LIKE zeou_pcrdtl-lifnr, "Account Number of the Vendor
mblnr LIKE zeou_pcrdtl-mblnr, "Number of Material Document
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
END OF zeou_pcrdtl_itab.
DATA : BEGIN OF gr_wh_info OCCURS 0, "INFO OF GR & WH BASED ON MVMT TYPE & PO
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
ebeln LIKE mseg-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
matnr LIKE mseg-matnr, "Material Number
lifnr LIKE mseg-lifnr, "Account Number of the Vendor
werks LIKE mseg-werks, "Plant
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
END OF gr_wh_info.
DATA : BEGIN OF bseg_itab OCCURS 0,
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
bukrs LIKE bseg-bukrs, "Company Code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
END OF bseg_itab.
DATA : BEGIN OF bkpf_itab OCCURS 0,
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
bldat LIKE bkpf-bldat, "Document Date in Document
END OF bkpf_itab.
DATA : BEGIN OF vend_inv OCCURS 0, "VENDOR INVOICE DETAILS
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
bukrs LIKE bseg-bukrs, "Company Code
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
bldat LIKE bkpf-bldat, "Document Date in Document
END OF vend_inv.
DATA : BEGIN OF chckinit OCCURS 0, "CHEQUE INIT INFO
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
END OF chckinit.
DATA : BEGIN OF chckpayer OCCURS 0, "CHEQUE BANK DETAILS
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
gjahr LIKE payr-gjahr, "Fiscal Year
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF chckpayer.
DATA : chckpayer_u LIKE chckpayer OCCURS 0 WITH HEADER LINE. "UNIQUE CHEQUE DETAILS
DATA : BEGIN OF chckfinal OCCURS 0, "CHEQUE FINAL INFO
ebeln LIKE bseg-ebeln, "Purchasing Document Number
ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document
matnr LIKE bseg-matnr, "Material Number
lifnr LIKE bseg-lifnr, "Account Number of the Vendor
werks LIKE bseg-werks, "Plant
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
bukrs LIKE bkpf-bukrs, "Company Code
belnr LIKE bkpf-belnr, "Accounting Document Number
gjahr LIKE bkpf-gjahr, "Fiscal Year
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF chckfinal.
DATA : BEGIN OF mat_desc OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF mat_desc.
DATA : BEGIN OF vend_det OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
j_1icstno LIKE j_1imovend-j_1icstno,
END OF vend_det.
DATA : BEGIN OF cst_rep OCCURS 0, "FINAL CST REPORT
lifnr LIKE a363-lifnr, "Account Number of the Vendor
name1 LIKE lfa1-name1, "Vendor Name
j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
maktx LIKE makt-maktx, "Material Description.
kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
END OF cst_rep.
DATA : BEGIN OF gt_output OCCURS 0, "ALV OUTPUT
slno LIKE sy-tabix, "Serial Number
lifnr LIKE a363-lifnr, "Account Number of the Vendor
name1 LIKE lfa1-name1, "Vendor Name
j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.
werks LIKE a363-werks, "Plant
kschl LIKE a363-kschl, "Condition type
ebeln LIKE ekko-ebeln, "Purchasing Document Number
ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document
bedat LIKE ekko-bedat, "Purchasing Document Date
matnr LIKE ekpo-matnr, "Material Number
maktx LIKE makt-maktx, "Material Description
mblnr LIKE mseg-mblnr, "Number of Material Document
bldat LIKE mkpf-bldat, "Document Date in Document
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount in local currency
cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency
bwart LIKE mseg-bwart, "Movement Type (Inventory Management)
whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.
whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date
buzid LIKE bseg-buzid, "Identification of the Line Item
bschl LIKE bseg-bschl, "Posting Key
wrbtr LIKE bseg-wrbtr, "Amount in document currency
cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency
belnr LIKE bseg-belnr, "Accounting Document Number
gjahr LIKE bseg-gjahr, "Fiscal Year
xblnr LIKE bkpf-xblnr, "Reference Document Number
koart LIKE bseg-koart, "Account type
augbl LIKE bseg-augbl, "Document Number of the Clearing Document
vblnr LIKE payr-vblnr, "Document Number of the Payment Document
zbukr LIKE payr-zbukr, "Paying company code
chect LIKE payr-chect, "Check Number
zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)
hbkid LIKE payr-hbkid, "Short key for a house bank
usr_txt1(20) TYPE c,
usr_txt2(20) TYPE c,
END OF gt_output.
*Working Variables
DATA : cst_gr LIKE mseg-dmbtr,
cst_inv LIKE bseg-wrbtr,
usr_txt1(20) TYPE c,
usr_txt2(20) TYPE c.
START-OF-SELECTION.
*Retreiving Data from a363 table for the given input
SELECT matnr
lifnr
werks
kschl
knumh
FROM a363
INTO TABLE a363_itab
WHERE matnr IN s_matnr AND lifnr IN s_lifnr AND werks EQ p_werks AND kschl IN s_kschl.
*rakesh ***************************
SELECT *
FROM konp
INTO CORRESPONDING FIELDS OF TABLE konp_itab
FOR ALL ENTRIES IN a363_itab
WHERE knumh EQ a363_itab-knumh.
IF a363_itab[] IS NOT INITIAL.
SELECT knumh
kbetr
lifnr
FROM konp INTO TABLE konp_itab
FOR ALL ENTRIES IN a363_itab
WHERE knumh EQ a363_itab-knumh.
ENDIF.
LOOP AT a363_itab.
READ TABLE konp_itab WITH KEY knumh = a363_itab-knumh.
IF sy-subrc EQ 0.
MOVE : konp_itab-kbetr TO a363_itab-kbetr.
MODIFY a363_itab.
ENDIF.
CLEAR : a363_itab, konp_itab.
ENDLOOP.
rakesh****************************
SELECT *
FROM makt
INTO CORRESPONDING FIELDS OF TABLE mat_desc
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr.
SELECT matnr
maktx
FROM makt INTO TABLE mat_desc
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr.
SELECT a~lifnr
a~name1
b~j_1icstno
INTO TABLE vend_det
FROM lfa1 AS a JOIN j_1imovend AS b
ON alifnr EQ blifnr
FOR ALL ENTRIES IN a363_itab
WHERE a~lifnr EQ a363_itab-lifnr.
Retreiving Data from EKKO & EKPO table for the given input
And Populating the V_PO_DETAILS itab
SELECT *
FROM ekko
INTO CORRESPONDING FIELDS OF TABLE ekko_itab
FOR ALL ENTRIES IN a363_itab
WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
IF a363_itab[] IS NOT INITIAL.
SELECT ebeln
lifnr
bedat
FROM ekko INTO TABLE ekko_itab
FOR ALL ENTRIES IN a363_itab
WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.
ENDIF.
SELECT *
FROM ekpo
INTO CORRESPONDING FIELDS OF TABLE ekpo_itab
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
IF a363_itab[] IS NOT INITIAL.
SELECT ebeln
ebelp
matnr
werks
menge
FROM ekpo INTO TABLE ekpo_itab
FOR ALL ENTRIES IN a363_itab
WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.
ENDIF.
LOOP AT ekpo_itab.
MOVE : ekpo_itab-ebelp TO v_po_det-ebelp,
ekpo_itab-matnr TO v_po_det-matnr,
ekpo_itab-werks TO v_po_det-werks,
ekpo_itab-menge TO v_po_det-menge.
READ TABLE ekko_itab WITH KEY ebeln = ekpo_itab-ebeln.
IF sy-subrc EQ 0.
MOVE : ekko_itab-lifnr TO v_po_det-lifnr,
ekko_itab-ebeln TO v_po_det-ebeln,
ekko_itab-bedat TO v_po_det-bedat.
APPEND : v_po_det.
ENDIF.
CLEAR : ekko_itab, ekpo_itab, v_po_det.
ENDLOOP.
LOOP AT v_po_det.
READ TABLE a363_itab WITH KEY matnr = v_po_det-matnr lifnr = v_po_det-lifnr werks = v_po_det-werks.
IF sy-subrc EQ 0.
MOVE : a363_itab-kbetr TO v_po_det-kbetr.
MODIFY v_po_det.
ENDIF.
CLEAR : a363_itab, v_po_det.
ENDLOOP.
Retreiving Data from MKPF & MSEG & ZEOU_PCRDTL table for the given input
And Populating the GR_WH_info itab
SELECT *
FROM mseg
INTO CORRESPONDING FIELDS OF TABLE mseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
IF v_po_det[] IS NOT INITIAL.
SELECT mblnr
ebeln
ebelp
matnr
lifnr
werks
menge
dmbtr
bwart
FROM mseg INTO TABLE mseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.
ENDIF.
IF mseg_itab[] IS NOT INITIAL.
SELECT *
FROM mkpf
INTO CORRESPONDING FIELDS OF TABLE mkpf_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr.
SELECT mblnr
bldat
FROM mkpf INTO TABLE mkpf_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr.
SELECT *
FROM zeou_pcrdtl
INTO CORRESPONDING FIELDS OF TABLE zeou_pcrdtl_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
SELECT matnr
lifnr
mblnr
whssn
whsdt
FROM zeou_pcrdtl INTO TABLE zeou_pcrdtl_itab
FOR ALL ENTRIES IN mseg_itab
WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.
ENDIF.
LOOP AT mseg_itab.
MOVE : mseg_itab-mblnr TO gr_wh_info-mblnr,
mseg_itab-ebeln TO gr_wh_info-ebeln,
mseg_itab-ebelp TO gr_wh_info-ebelp,
mseg_itab-matnr TO gr_wh_info-matnr,
mseg_itab-lifnr TO gr_wh_info-lifnr,
mseg_itab-werks TO gr_wh_info-werks,
mseg_itab-menge TO gr_wh_info-menge,
mseg_itab-dmbtr TO gr_wh_info-dmbtr,
mseg_itab-bwart TO gr_wh_info-bwart.
READ TABLE mkpf_itab WITH KEY mblnr = mseg_itab-mblnr.
IF sy-subrc EQ 0.
MOVE : mkpf_itab-bldat TO gr_wh_info-bldat.
ENDIF.
READ TABLE zeou_pcrdtl_itab WITH KEY mblnr = mseg_itab-mblnr.
IF sy-subrc EQ 0.
MOVE : zeou_pcrdtl_itab-whssn TO gr_wh_info-whssn,
zeou_pcrdtl_itab-whsdt TO gr_wh_info-whsdt.
ENDIF.
APPEND : gr_wh_info.
CLEAR : mseg_itab, mkpf_itab, gr_wh_info.
ENDLOOP.
Retreiving Data from BSEG & BKPF table
And Populating the Vendor Invoice Details
IF v_po_det[] IS NOT INITIAL.
SELECT *
FROM bseg
INTO CORRESPONDING FIELDS OF TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
wrbtr
bukrs
belnr
gjahr
FROM bseg INTO TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
ENDIF.
IF bseg_itab[] IS NOT INITIAL.
SELECT *
FROM bkpf
INTO CORRESPONDING FIELDS OF TABLE bkpf_itab
FOR ALL ENTRIES IN bseg_itab
WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
SELECT bukrs
belnr
gjahr
xblnr
bldat
FROM bkpf INTO TABLE bkpf_itab
FOR ALL ENTRIES IN bseg_itab
WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.
ENDIF.
LOOP AT bseg_itab.
MOVE : bseg_itab-ebeln TO vend_inv-ebeln,
bseg_itab-ebelp TO vend_inv-ebelp,
bseg_itab-matnr TO vend_inv-matnr,
bseg_itab-lifnr TO vend_inv-lifnr,
bseg_itab-werks TO vend_inv-werks,
bseg_itab-buzid TO vend_inv-buzid,
bseg_itab-bschl TO vend_inv-bschl,
bseg_itab-wrbtr TO vend_inv-wrbtr,
bseg_itab-bukrs TO vend_inv-bukrs,
bseg_itab-belnr TO vend_inv-belnr,
bseg_itab-gjahr TO vend_inv-gjahr.
READ TABLE bkpf_itab WITH KEY bukrs = bseg_itab-bukrs belnr = bseg_itab-belnr gjahr = bseg_itab-gjahr.
IF sy-subrc EQ 0.
MOVE : bkpf_itab-xblnr TO vend_inv-xblnr,
bkpf_itab-bldat TO vend_inv-bldat.
APPEND : vend_inv.
ENDIF.
CLEAR : vend_inv, bseg_itab, bkpf_itab.
ENDLOOP.
Retreiving Data from BSEG & BKPF table
And Populating the Cheque Info Details
IF v_po_det[] IS NOT INITIAL.
SELECT *
FROM bseg
INTO CORRESPONDING FIELDS OF TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
bukrs
belnr
gjahr
koart
augbl
FROM bseg INTO TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
ENDIF.
IF chckinit[] IS NOT INITIAL.
SELECT *
FROM payr
INTO CORRESPONDING FIELDS OF TABLE chckpayer
FOR ALL ENTRIES IN chckinit
WHERE vblnr EQ chckinit-augbl.
SELECT vblnr
zbukr
gjahr
chect
zaldt
hbkid
FROM payr INTO TABLE chckpayer
FOR ALL ENTRIES IN chckinit
WHERE vblnr EQ chckinit-augbl.
ENDIF.
SORT chckpayer BY vblnr DESCENDING.
LOOP AT chckpayer.
ON CHANGE OF chckpayer-vblnr.
MOVE : chckpayer TO chckpayer_u.
APPEND : chckpayer_u.
CLEAR : chckpayer_u, chckpayer.
ENDON.
ENDLOOP.
LOOP AT chckinit.
MOVE : chckinit-ebeln TO chckfinal-ebeln,
chckinit-ebelp TO chckfinal-ebelp,
chckinit-matnr TO chckfinal-matnr,
chckinit-lifnr TO chckfinal-lifnr,
chckinit-werks TO chckfinal-werks,
chckinit-buzid TO chckfinal-buzid,
chckinit-bschl TO chckfinal-bschl,
chckinit-bukrs TO chckfinal-bukrs,
chckinit-gjahr TO chckfinal-gjahr,
chckinit-koart TO chckfinal-koart,
chckinit-augbl TO chckfinal-augbl.
READ TABLE chckpayer_u WITH KEY vblnr = chckinit-augbl gjahr = chckinit-gjahr.
IF sy-subrc EQ 0.
MOVE : chckpayer_u-vblnr TO chckfinal-vblnr,
chckpayer_u-zbukr TO chckfinal-zbukr,
chckpayer_u-chect TO chckfinal-chect,
chckpayer_u-zaldt TO chckfinal-zaldt,
chckpayer_u-hbkid TO chckfinal-hbkid.
APPEND : chckfinal.
ENDIF.
CLEAR : chckfinal, chckpayer_u, chckinit.
ENDLOOP.
Populating the final CST TABLE
LOOP AT v_po_det.
MOVE : v_po_det-lifnr TO cst_rep-lifnr,
v_po_det-werks TO cst_rep-werks,
v_po_det-ebeln TO cst_rep-ebeln,
v_po_det-ebelp TO cst_rep-ebelp,
v_po_det-bedat TO cst_rep-bedat,
v_po_det-matnr TO cst_rep-matnr,
v_po_det-kbetr TO cst_rep-kbetr.
READ TABLE gr_wh_info WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : gr_wh_info-mblnr TO cst_rep-mblnr,
gr_wh_info-bldat TO cst_rep-bldat,
gr_wh_info-menge TO cst_rep-menge,
gr_wh_info-dmbtr TO cst_rep-dmbtr,
gr_wh_info-bwart TO cst_rep-bwart,
gr_wh_info-whssn TO cst_rep-whssn,
gr_wh_info-whsdt TO cst_rep-whsdt.
ENDIF.
READ TABLE vend_inv WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : vend_inv-buzid TO cst_rep-buzid,
vend_inv-bschl TO cst_rep-bschl,
vend_inv-wrbtr TO cst_rep-wrbtr,
vend_inv-belnr TO cst_rep-belnr,
vend_inv-gjahr TO cst_rep-gjahr,
vend_inv-xblnr TO cst_rep-xblnr.
ENDIF.
READ TABLE chckfinal WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : chckfinal-augbl TO cst_rep-augbl,
chckfinal-vblnr TO cst_rep-vblnr,
chckfinal-zbukr TO cst_rep-zbukr,
chckfinal-chect TO cst_rep-chect,
chckfinal-zaldt TO cst_rep-zaldt,
chckfinal-hbkid TO cst_rep-hbkid.
ENDIF.
READ TABLE mat_desc WITH KEY matnr = v_po_det-matnr.
IF sy-subrc EQ 0.
MOVE : mat_desc-maktx TO cst_rep-maktx.
ENDIF.
READ TABLE vend_det WITH KEY lifnr = v_po_det-lifnr.
IF sy-subrc EQ 0.
MOVE : vend_det-name1 TO cst_rep-name1,
vend_det-j_1icstno TO cst_rep-j_1icstno.
ENDIF.
APPEND : cst_rep.
CLEAR : cst_rep, v_po_det, gr_wh_info, vend_inv, chckfinal.
ENDLOOP.
Populating GT_output
LOOP AT cst_rep.
cst_gr = cst_rep-dmbtr * ( cst_rep-kbetr / 1000 ).
cst_inv = cst_rep-wrbtr * ( cst_rep-kbetr / 1000 ).
MOVE : cst_gr TO cst_rep-cst_dmbtr,
cst_inv TO cst_rep-cst_wrbtr.
MODIFY : cst_rep.
CLEAR : cst_rep, cst_gr, cst_inv.
ENDLOOP.
LOOP AT cst_rep.
MOVE : sy-tabix TO gt_output-slno,
cst_rep-lifnr TO gt_output-lifnr,
cst_rep-name1 TO gt_output-name1,
cst_rep-j_1icstno TO gt_output-j_1icstno,
cst_rep-werks TO gt_output-werks,
cst_rep-matnr TO gt_output-matnr,
cst_rep-maktx TO gt_output-maktx,
cst_rep-ebeln TO gt_output-ebeln,
cst_rep-ebelp TO gt_output-ebelp,
cst_rep-bedat TO gt_output-bedat,
cst_rep-mblnr TO gt_output-mblnr,
cst_rep-bldat TO gt_output-bldat,
cst_rep-menge TO gt_output-menge,
cst_rep-dmbtr TO gt_output-dmbtr,
cst_rep-cst_dmbtr TO gt_output-cst_dmbtr,
cst_rep-bwart TO gt_output-bwart,
cst_rep-whssn TO gt_output-whssn,
cst_rep-whsdt TO gt_output-whsdt,
cst_rep-buzid TO gt_output-buzid,
cst_rep-bschl TO gt_output-bschl,
cst_rep-wrbtr TO gt_output-wrbtr,
cst_rep-cst_wrbtr TO gt_output-cst_wrbtr,
cst_rep-belnr TO gt_output-belnr,
cst_rep-gjahr TO gt_output-gjahr,
cst_rep-xblnr TO gt_output-xblnr,
cst_rep-augbl TO gt_output-augbl,
cst_rep-vblnr TO gt_output-vblnr,
cst_rep-zbukr TO gt_output-zbukr,
cst_rep-chect TO gt_output-chect,
cst_rep-zaldt TO gt_output-zaldt,
cst_rep-hbkid TO gt_output-hbkid.
APPEND gt_output.
CLEAR : cst_rep, gt_output, sy-tabix.
ENDLOOP.
END-OF-SELECTION.
*-ALV Routine
PERFORM alv_forms.
*& Form alv_forms
FORM alv_forms.
PERFORM alv_routines.
gx_variant = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
vari = gx_variant-variant.
ENDIF.
PERFORM comment_build USING gt_list_top_of_page[].
PERFORM fieldcat_init USING gt_fieldcat[].
PERFORM layout_build USING gs_layout.
PERFORM print_build USING gs_print.
PERFORM alv_output.
ENDFORM. " alv_forms
*& Form alv_routines
FORM alv_routines.
PERFORM eventtab_build USING gt_events[].
PERFORM e06_t_sort_build USING gt_sort[].
PERFORM sp_group_build USING gt_sp_group[].
g_save = 'A'.
PERFORM variant_init.
ENDFORM. " alv_routines
*& Form eventtab_build
----Hi Anu,
These two statements taking to much time for execution what I can do for reducing execution time.
Regards,
Rakesh
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
wrbtr
bukrs
belnr
gjahr
FROM bseg INTO TABLE bseg_itab
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.
ENDIF.
SELECT ebeln
ebelp
matnr
lifnr
werks
buzid
bschl
bukrs
belnr
gjahr
koart
augbl
FROM bseg INTO TABLE chckinit
FOR ALL ENTRIES IN v_po_det
WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.
ENDIF. -
How to find the program performance
Hi SAP Gurus,
I came to know that we can check the object performance with se30 t.code.
There we can find all the components performance of the system.
My question is !
If the performance is calculate by the request and response time, some times server is in good speed and sometimes in normal speed to execute. If i execute the same program in both the cases, Is there any changes in runtime analsys. If yes how can we find the perfect performance of my object.
Please give me the answer you will be rewarded with points for the best answer.
thanks
kishoreHi kishore,
ols available in SAP to pin-point a performance problem
The runtime analysis (SE30)
SQL Trace (ST05)
Tips and Tricks tool
The performance database
Optimizing the load of the database
Using table buffering
Using buffered tables improves the performance considerably. Note that in some cases a stament can not be used with a buffered table, so when using these staments the buffer will be bypassed. These staments are:
Select DISTINCT
ORDER BY / GROUP BY / HAVING clause
Any WHERE clasuse that contains a subquery or IS NULL expression
JOIN s
A SELECT... FOR UPDATE
If you wnat to explicitly bypass the bufer, use the BYPASS BUFFER addition to the SELECT clause.
Use the ABAP SORT Clause Instead of ORDER BY
The ORDER BY clause is executed on the database server while the ABAP SORT statement is executed on the application server. The datbase server will usually be the bottleneck, so sometimes it is better to move thje sort from the datsbase server to the application server.
If you are not sorting by the primary key ( E.g. using the ORDER BY PRIMARY key statement) but are sorting by another key, it could be better to use the ABAP SORT stament to sort the data in an internal table. Note however that for very large result sets it might not be a feasible solution and you would want to let the datbase server sort it.
Avoid ther SELECT DISTINCT Statement
As with the ORDER BY clause it could be better to avoid using SELECT DISTINCT, if some of the fields are not part of an index. Instead use ABAP SORT + DELETE ADJACENT DUPLICATES on an internal table, to delete duplciate rows.
Rgds,
P.Nag -
Error when executing statement for table/stored proc
Hi All,
I am getting this error when executing IDOC to JDBC (Stored Procedure) Scenario.
In my stored procedure I have three insert statements to insert rows in to 3 tables.
This stored procedure is working fine for two insert statements i.e,
For this I have created data type for stored procedure with 10 elements and executed the scenario and was successfully running.
when I added 3rd insert statement to stored procedure ie., when i added 5 more elements to the datatype (totally 15 elements) it starts giving the bellow error in Message Monitoring.
<i><b>Exception caught by adapter framework: Error processing request in sax parser: Error when executing statement for table/stored proc. 'COGRP_TMP_PROC_1' (structure 'Statements'): java.sql.SQLException: General error</b></i>
<i><b>Delivery of the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'COGRP_TMP_PROC_1' (structure 'Statements'): java.sql.SQLException: General error</b></i>
Note:- I have run the stored procedure with three insert statements in Sql Server, and also by calling an external program also, and was working fine.
<i><b> Note : Is there any structure needs to be follow when working with IDOC to Stored procedure.</b></i>
I am struck up with the error, can any body resolve this issue.
Thanks in Advance,
MurthyHi narasimha,
This seems to be any error due to incorrect query formation.In your receiver jdbc channel set the parameter logSQLstatement = true.you can find this parameter in the advanced mode. Using this parameter you will be able to see the sql query which is generated at runtime in the audit log in RWB.
Regards,
Pragati -
How to declare local variables in PL/SQL stored programs
Where do I declare local variables in a PL/SQL stored program?
I get compiler errors with either of the options below:
FUNCTION GET_PRINCIPAL_BALANCE (CUT_OFF_DATE IN DATE, TITLE_SN IN DATE, TOTAL_BALANCE OUT NUMBER) RETURN NUMBER IS
TOTAL_BALANCE NUMBER;
BEGIN
RETURN TOTAL_BALANCE;
END;
FUNCTION GET_PRINCIPAL_BALANCE (CUT_OFF_DATE IN DATE, TITLE_SN IN DATE, TOTAL_BALANCE OUT NUMBER) RETURN NUMBER IS
BEGIN
TOTAL_BALANCE NUMBER;
RETURN TOTAL_BALANCE;
END;Your local variable cannot have the same name as the formal out parameter. This is a procedure example, but since functions should not have out parameters anyway ...
session2> CREATE PROCEDURE p (p_id IN NUMBER, p_did OUT NUMBER) AS
2 p_did NUMBER;
3 BEGIN
4 p_did := p_id * 2;
5 END;
6 /
Warning: Procedure created with compilation errors.
session2> show error
Errors for PROCEDURE P:
LINE/COL ERROR
0/0 PL/SQL: Compilation unit analysis terminated
1/1 PLS-00410: duplicate fields in RECORD,TABLE or argument list are
not permittedThe proper way to create a function would be something like:
CREATE FUNCTION f (p_id IN NUMBER) RETURN NUMBER AS
l_did NUMBER;
BEGIN
l_did := p_id * 2;
RETURN l_did;
END;You should really assign a value to the variable before you return it.
John -
CDHDR table query taking long time
Hi all,
Select query from CDHDR table is taking long time,in where condition i am giving OBJECTCLASS = 'MAT_FULL' udate = sy-datum and langu = 'EN'.
any suggestion to improve the performance.i want to select all the article which got changed on current date
regards
shibuThis will always be slow for large data volumes, since CDHDR is designed for quick access by object ID (in this case material number), not by date.
I'm afraid you would need to introduce a secondary index on OBJECTCLAS and UDATE, if that query is crucial enough to warrant the additional disk space and processing time taken by the new index.
Greetings
Thomas -
How to call a stored procedure on time basis with out using sql job and GOTO
Hi,
I wanted to call a stored proc, on time basis ,
please tel me how it can be done with out using sql job , goto .
1) That is, is there any timer aviable in sqlserver.
q2) And which one is better GOTO or sql job.
yours sincerleyRaj, Check if my explanation helps you:
Your job runs every 10 seconds.
Lets say first time you are scheduling and running your job at 12:00:00 PM
Now your proc will start executing.
Say it got finished at 12:00:07.
Now the next schedule time is 12:00:10 PM.
The moment this time hits, the job will get invoked and start executing the proc.
Lets say this time it finished at 12:00:22 PM (It took 2 extra seconds)
This time the scheduled time is already gone (12:00:20 PM), thus it'll now run at the next schedule that is 12:00:30 PM.
Thus if anytime your job takes more than 10 seconds to run, it'll just miss those particular schedules overlapping with execution time. Otherwise you are good to go.
PS: A job is the best way to handle this, in your problem statement you don't need a job but that would be wrong. You have another way to do that, if you keep running your procedure all the time and the moment your timestamp hits a multiple of 10
seconds you can run your logic and then returning to the timer. But this is extremely wrong for a system. Even if your requirement is extremely transactional and complex, I would not suggest this. If the job is taking more than 10seconds (which it might if
your logics inside are complex), you should optimize your code and table architecture.
Chaos isn’t a pit. Chaos is a ladder. Many who try to climb it fail and never get to try again. The fall breaks them. And some are given a chance to climb, but they refuse. They cling to the realm, or the gods, or love. Illusions. Only the ladder is real.
The climb is all there is. -
Is it true that a query running on a table with default values of null is slower than a query running on a table with default values of ceros and blank spaces? If it's true, why does this happens, and if not , what is the main factor that affects query performance time?
If anyone can answer me, i will be grateful!!!Hi,
It happends cause columns with NULL, NOT NULL or no constraint influence CBO (Cost Based Optimizer) when he chooses his explain plan.
For a complete explication, check the documentation on CBO on technet.
Good Luck,
Fred -
Updating database table via program
Hi,
I am updating a DB table (Sap standard table) via my program.
I have few doubts with regard to same. They are given below,
1. I came to know that it is not best practise to update the sap standard table via program using "update" statement. Why so? Is there any other way or statement in doing the same?
2. The sap standard table which i update via my program is BDRGIN. Now my question is, when my program is modifying the values of the table, if some other user also modifies the value at the same time via SE16 then conflict occurs. How to resolve it? Is SAP uses any automatic handling for such conflicts?
kindly help me out.
Regards,
Raghavendraprasad.NHi,
Its not a good practise to modify the Standards tables through programs, because most of the standard tables will be interdependant with forign key relation ships (check table relations). So incase we create an irrelavant entry, then it will cause a lot of confusions.
For example we create entries in MARA/MAKT table using MM01/02 transactions.
There are a few standard tables like TVSA (containing customising data), these have to be maintained through the SPRO transaction. You can open SPRO transaction and search for the node to maintain entries in it or you can go to the transaction SM30 and you can give the table name and click on customizng to go the SPRO node.
Still if you are trying to create entries in your table, Enque/Lock the table do the updations and then Deque/Unlock the table, so that there will be no conflicts happening during that time.
Regards,
S.Dakshna Nagaratnam. -
How to create internal table storing instances of ABAP class
Hi experts, any one knows how to create internal table storing instances of ABAP class or alternative to implement such function?
Hi
Please see below example from ABAPDOCU, this might help you.
Internal Table cnt_tab is used to store class objects.
Regards,
Vishal
REPORT demo_objects_references.
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD.
METHOD increment.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
get_value = count.
ENDMETHOD.
ENDCLASS.
DATA: cnt_1 TYPE REF TO counter,
cnt_2 TYPE REF TO counter,
cnt_3 TYPE REF TO counter,
cnt_tab TYPE TABLE OF REF TO counter.
DATA number TYPE i.
START-OF-SELECTION.
CREATE OBJECT: cnt_1,
cnt_2.
MOVE cnt_2 TO cnt_3.
CLEAR cnt_2.
cnt_3 = cnt_1.
CLEAR cnt_3.
APPEND cnt_1 TO cnt_tab.
CREATE OBJECT: cnt_2,
cnt_3.
APPEND: cnt_2 TO cnt_tab,
cnt_3 TO cnt_tab.
CALL METHOD cnt_1->set EXPORTING set_value = 1.
CALL METHOD cnt_2->set EXPORTING set_value = 10.
CALL METHOD cnt_3->set EXPORTING set_value = 100.
DO 3 TIMES.
CALL METHOD: cnt_1->increment,
cnt_2->increment,
cnt_3->increment.
ENDDO.
LOOP AT cnt_tab INTO cnt_1.
CALL METHOD cnt_1->get IMPORTING get_value = number.
WRITE / number.
ENDLOOP. -
How to list all tables/stored procedures used by the report
All the reports i create are getting data from stored procedure(s). Is there a way to obtaining a listing of all the stored procedures without having to open report by report and check under Database > Set Datasource Location > Properties > Table Name?
Finding this info it would be extremely valuable, as it would help me to judge the impact of any changes that i might be considering to one or more of the stored proc.
So far i maintained a manual listing but it is not up-to-date and reliable. I would rather prefer to get an updated listing every time i want to change/drop a stored procedure.
Thanks so much for your help.
RickDell can you be a little bit more specific about the SDK solution. I could ask one of the developers to help me but i need to gather more details.
I took a look .rpt inspector Pro but it does not do what i need. All i need is the the listing of all the database tables (in my case stored procs) used in my reports. No need to replace or change anything. I need to scan the directory where i have all the reports for the different applications and get report names and table/stored procs used. i can export the txt file to excel and that's all.
Maybe you are looking for
-
How do I get the Movies off my new Sony Handycam using iMovie?
WOW! I didn’t think that this would be such an issue! So, I purchase a new Sony Handycam DCR-SR42 with a 30 GB Hard Drive in it. I ask the sales person “Is this camera compatible with my G5 Mac?” He says, it sure is! I take it home record the kids ar
-
Dreamweaver CS5 unable to properly display BridgeCS5 HTML gallery's second page and all others
HI!I would really appreciate your help in solving this. Here is the link:http://www.roulasorour.com/drawing1.html As you can see ,only the first page of the gallery displays properly . But when you press on next you get the following message: Error 4
-
The Number of Screens in Note 4 (Verizon Edition)?
Note 4: 1. Flipboard 2. Home Screen 3. Amazon Screen 4. S Health Screen 5. Essential Screen Note 2 (my previous primary phone and now the back up phone) : 1. Screen 1 2. Amazon Screen 3. Home Screen 4. Screen 4 5. Screen 5 6. Screen 6 7. Screen 7
-
I've found a bug in drag and drop in responsive projects
I've created a simple, one slide project which has two sources and four targets. Before running the drag and drop wizard, the project previews and publishes. Once I've added the drag and drop wizard, it never previews nor publishes. Any ideas anyone?
-
Compare the current value with the previous value in the same column
Hi all, I have to include a statement in a query which allows to compare the current value of column A with the previous value of column A (same column). from there, I need to add a condition in order to have the expected result. Let's take an exampl