EP6 sp12 Performance Issue, Need help to improve performance
We have a Portal development environment with EP6.0 sp12.
What we are experiencing is performance issue, It's not extremely slow, but slow compared to normal ( compared to our prod box). For example, after putting the username and password and clicking the <Log on> Button it's taking more than 10 secs for the first home page to appear. Also currently we have hooked the Portal with 3 xAPPS system and one BW system. The time taken for a BW query to appear ( with selection screen) is also more than 10 secs. However access to one other xAPPS is comparatively faster.
Do we have a simple to use guide( Not a very elaborate one) with step by step guidance to immediately improve the performance of the Portal.
Simple guide, easy to implement, with immediate effect is what we are looking for in the short term
Thanks
Arunabha
Hi Eric,
I have searched but didn't find the Portal Tuning and Optimization Guide as you have suggested, Can you help to find this.
Subrato,
This is good and I would obviously read through this, The issue here is this is only for Network.
But do you know any other guide, which as very basic ( may be 10 steps) and show step by step the process, it would be very helpful. I already have some information from the thread Portal Performance - page loads slow, client cache reset/cleared too often
But really looking for answer ( steps to do it quickly and effectively) instead of list of various guides.
It would be very helpful if you or anybody( who has actually done some performance tuning) can send a basic list of steps that I can do immediately, instead of reading through these large guides.
I know I am looking for a shortcut, but this is the need of the hour.
Thanks
Arun
Similar Messages
-
Performance Issue ---Need help
Hello Friends,
Could you guys please help me in improving the performance. This query takes 2 minutes to run and I was wondering if you guys can just take a look and suggest something. I would really appreciate your help on this
ALTER PROCEDURE [dbo].test
@loginid int,
@branchid int,
@asofdate datetime,
@ageperiod int,
@showdetails bit,
@programstatus INT,
@propertytype INT,
@sortby nvarchar(100)
AS
BEGIN
SET FMTONLY OFF -- will allow temp tables on procedures for fyi reporting
SET NOCOUNT ON
SELECT
mecdate = CONVERT( DATETIME, CONVERT(NVARCHAR(4),monthendyear) + '-' + CONVERT(NVARCHAR(2),monthendmonth) + '-1 00:00:00.000' ),
branchid
INTO
#mecs
FROM
tmonthendcompleted
WHERE
companyid = 1 -- we should put it as parameter but we only have one company
AND
@branchid = -999
OR branchid = @branchid
--Create temp table
CREATE TABLE #tmpAR
branchid int not null default (0),
accountid int not null default (0),
siteid int not null default (0),
programid int not null default (0),
routeid int not null default(0),
invoiceid int not null default (0),
paymentid int not null default(0),
transactiondate datetime not null,
eventname nvarchar(50) not null,
agingbucketnumber int not null default (0),
invoicetotal money not null default (0),
paymenttotal money not null default (0),
prepay money not null default (0),
prepayid int not null default(0)
--Get pending invoices
INSERT INTO
#tmpAR (branchid, accountid, siteid, programid, routeid, invoiceid, transactiondate, eventname, agingbucketnumber, invoicetotal)
SELECT
invitem.servicecenterid, inv.accountid, est.siteid, invitem.programid,
ISNULL((select top 1 routeid from tprogramvalue WHERE programid = invitem.programid AND effectivedate <= @asofdate and routeid > 0 order by effectivedate desc, utctimestamp desc), 0),
inv.invoiceid, inv.invoicedate, max(invitem.itemdescription),
-- go to first day of invoice month, get max MEC date and datediff to get bucket # (according to asofdate)
ISNULL((DATEDIFF(MONTH, DATEADD(month, DATEDIFF(month, 0, inv.invoicedate), 0), (SELECT MAX(mecdate) FROM #mecs WHERE branchid = invitem.servicecenterid AND mecdate <= @asofdate)) ),0),
SUM(invitem.subtotalregular + invitem.fedtaxregular + invitem.statetaxregular + invitem.localtaxregular)
FROM
tinvoiceitem invitem
INNER JOIN tinvoice inv ON invitem.invoiceid = inv.invoiceid
INNER JOIN tprogram prog ON invitem.programid = prog.programid
INNER JOIN tprogramsetup ON prog.programtypeid = tprogramsetup.programtypeid
INNER JOIN testimate est ON prog.estimateid = est.estimateid
INNER JOIN vreportlogin on invitem.servicecenterid = vreportlogin.branchid
INNER JOIN ttempkeyid tmpkey on tprogramsetup.reportcategory=tmpkey.keyid and tmpkey.typeid=64 and tmpkey.loginid = @loginid
WHERE
vreportlogin.loginid = @loginid
AND (@branchid=-999 or vreportlogin.branchid = @branchid)
AND inv.invoicedate < @asofdate
GROUP BY
invitem.servicecenterid, inv.accountid, est.siteid, invitem.programid, inv.routeid,
inv.invoiceid, inv.invoicedate
HAVING
(ROUND(SUM(ISNULL([subtotalregular],0) + ISNULL([fedtaxregular],0) + ISNULL([statetaxregular],0) + ISNULL([localtaxregular],0)),2)
ROUND(ISNULL((select sum(tpaymentitem.amount)
from tpaymentitem
inner join tpayment on tpayment.paymentid = tpaymentitem.headerid
where invoiceid=inv.invoiceid
and tpayment.datereceived < @asofdate),0)
,2)
) > 0
--Get payments to pending invoices
INSERT INTO
#tmpAR (branchid, accountid, siteid, programid, routeid, invoiceid, paymentid, transactiondate, eventname, agingbucketnumber, paymenttotal)
SELECT
payitem.servicecenterid, pay.accountid, est.siteid, payitem.programid,
ISNULL((select top 1 routeid from tprogramvalue WHERE programid =payitem.programid AND effectivedate <= @asofdate and routeid > 0 order by effectivedate desc, utctimestamp desc), 0),
payitem.invoiceid, pay.paymentid, pay.datereceived,
(select max(tinvoiceitem.itemdescription) from tinvoiceitem where invoiceid = payitem.invoiceid),
-- go to first day of invoice month, get max MEC date and datediff to get bucket # (according to asofdate)
ISNULL((DATEDIFF(MONTH, DATEADD(month, DATEDIFF(month, 0, inv.invoicedate), 0), (SELECT MAX(mecdate) FROM #mecs WHERE branchid = payitem.servicecenterid AND mecdate <= @asofdate)) ),0),
SUM(payitem.amount)
FROM
tpaymentitem payitem
INNER JOIN tpayment pay ON payitem.headerid = pay.paymentid
INNER JOIN tprogram prog ON payitem.programid = prog.programid
INNER JOIN tprogramsetup ON prog.programtypeid = tprogramsetup.programtypeid
INNER JOIN testimate est ON prog.estimateid = est.estimateid
INNER JOIN tinvoice inv ON payitem.invoiceid = inv.invoiceid
INNER JOIN vreportlogin on payitem.servicecenterid = vreportlogin.branchid
INNER JOIN ttempkeyid tmpkey on tprogramsetup.reportcategory=tmpkey.keyid and tmpkey.typeid=64 and tmpkey.loginid = @loginid
WHERE
vreportlogin.loginid = @loginid
AND (@branchid=-999 or vreportlogin.branchid = @branchid)
AND payitem.invoiceid in (select invoiceid from #tmpAR)
AND pay.datereceived < @asofdate
GROUP BY
payitem.servicecenterid, pay.accountid, est.siteid, payitem.programid, inv.routeid,
payitem.invoiceid, inv.invoicedate, pay.paymentid, pay.datereceived
--Get payments to cop
INSERT INTO
#tmpAR (branchid, accountid, siteid, programid, routeid, prepayid, transactiondate, eventname, prepay)
SELECT
payitem.servicecenterid, pay.accountid, est.siteid, payitem.programid,
ISNULL((select top 1 routeid from tprogramvalue WHERE programid =payitem.programid AND effectivedate <= @asofdate and routeid > 0 order by effectivedate desc, utctimestamp desc), 0) as routeid,
pay.paymentid, pay.datereceived, max(progname.programname), SUM(payitem.amount)
FROM
tpaymentitem payitem
INNER JOIN tpayment pay ON payitem.headerid = pay.paymentid
INNER JOIN tprogram prog ON payitem.programid = prog.programid
INNER JOIN tprogramsetup ON prog.programtypeid = tprogramsetup.programtypeid
INNER JOIN tprogramsetupname000 progname ON progname.programtypeid = prog.programtypeid
INNER JOIN testimate est ON prog.estimateid = est.estimateid
INNER JOIN vreportlogin on payitem.servicecenterid = vreportlogin.branchid
INNER JOIN ttempkeyid tmpkey on tprogramsetup.reportcategory=tmpkey.keyid and tmpkey.typeid=64 and tmpkey.loginid = @loginid
WHERE
vreportlogin.loginid = @loginid
AND (@branchid=-999 or vreportlogin.branchid = @branchid)
AND pay.datereceived < @asofdate
AND payitem.invoiceid = 0
GROUP BY
pay.paymentid, payitem.servicecenterid, pay.accountid, est.siteid, payitem.programid, pay.datereceived
CREATE TABLE #tmpAR2
branchid int not null default (0),
accountid int not null default (0),
siteid int not null default(0),
programid int not null default(0),
routeid int not null default(0),
invoiceid int not null default(0),
paymentid int not null default(0),
prepayid int not null default(0),
transactiondate datetime,
transactiondescription nvarchar(200),
eventname nvarchar(50),
InBucket01 money default (0),
InBucket2 money default (0),
InBucket3 money default (0),
InBucket4 money default (0),
InBucket5 money default (0),
prepay money default (0),
ProgramInBucket01 money not null default(0),
ProgramInBucket2 money not null default(0),
ProgramInBucket3 money not null default(0),
ProgramInBucket4 money not null default(0),
ProgramInBucket5 money not null default(0),
ProgramDebit money not null default(0),
ProgramCredit money not null default(0),
ProgramBalance money not null default(0),
RouteInBucket01 money not null default(0),
RouteInBucket2 money not null default(0),
RouteInBucket3 money not null default(0),
RouteInBucket4 money not null default(0),
RouteInBucket5 money not null default(0),
RouteDebit money not null default(0),
RouteCredit money not null default(0),
RouteBalance money not null default(0),
BranchInBucket01 money not null default(0),
BranchInBucket2 money not null default(0),
BranchInBucket3 money not null default(0),
BranchInBucket4 money not null default(0),
BranchInBucket5 money not null default(0),
BranchDebit money not null default(0),
BranchCredit money not null default(0),
BranchBalance money not null default(0)
update #tmpAR
set agingbucketnumber = 4
where agingbucketnumber > 4
--Bucket 0 INVOICES
INSERT INTO #tmpAR2 (branchid, accountid, invoiceid, transactiondate, transactiondescription, eventname, InBucket01, siteid, programid, routeid)
SELECT branchid, accountid, invoiceid, transactiondate, dbo.fngetTransactionDescription(invoiceid,1) as description, eventname, invoicetotal, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 0
AND invoicetotal > 0
--Bucket 0 PAYMENTS
INSERT INTO #tmpAR2 (branchid, accountid, paymentid, transactiondate, transactiondescription, eventname, InBucket01, siteid, programid, routeid)
SELECT branchid, accountid, paymentid, transactiondate, dbo.fngetTransactionDescription(paymentid,2) as description, eventname, paymenttotal*-1, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 0
AND paymenttotal <> 0
--Bucket 1 INVOICE
INSERT INTO #tmpAR2 (branchid, accountid, invoiceid, transactiondate, transactiondescription, eventname, InBucket2, siteid, programid, routeid)
SELECT branchid, accountid, invoiceid, transactiondate, dbo.fngetTransactionDescription(invoiceid,1) as description, eventname, invoicetotal, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 1
AND invoicetotal > 0
--Bucket 1 PAYMENT
INSERT INTO #tmpAR2 (branchid, accountid, paymentid, transactiondate, transactiondescription, eventname, InBucket2, siteid, programid, routeid)
SELECT branchid, accountid, paymentid, transactiondate, dbo.fngetTransactionDescription(paymentid,2) as description, eventname, paymenttotal*-1, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 1
AND paymenttotal <> 0
--Bucket 2 INVOICES
INSERT INTO #tmpAR2 (branchid, accountid, invoiceid, transactiondate, transactiondescription, eventname, InBucket3, siteid, programid, routeid)
SELECT branchid, accountid, invoiceid, transactiondate, dbo.fngetTransactionDescription(invoiceid,1) as description, eventname, invoicetotal, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 2
AND invoicetotal > 0
--Bucket 2 PAYMENT
INSERT INTO #tmpAR2 (branchid, accountid, paymentid, transactiondate, transactiondescription, eventname, InBucket3, siteid, programid, routeid)
SELECT branchid, accountid, paymentid, transactiondate, dbo.fngetTransactionDescription(paymentid,2) as description, eventname, paymenttotal*-1, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 2
AND paymenttotal <> 0
--Bucket 3 (91-120 days) INVOICES
INSERT INTO #tmpAR2 (branchid, accountid, invoiceid, transactiondate, transactiondescription, eventname, InBucket4, siteid, programid, routeid)
SELECT branchid, accountid, invoiceid, transactiondate, dbo.fngetTransactionDescription(invoiceid,1) as description, eventname, invoicetotal, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 3
AND invoicetotal > 0
--Bucket 3 (91-120 days) PAYMENTS
INSERT INTO #tmpAR2 (branchid, accountid, paymentid, transactiondate, transactiondescription, eventname, InBucket4, siteid, programid, routeid)
SELECT branchid, accountid, paymentid, transactiondate, dbo.fngetTransactionDescription(paymentid,2) as description, eventname, paymenttotal*-1, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 3
AND paymenttotal <> 0
--Bucket 4 (over 120 days) INVOICES
INSERT INTO #tmpAR2 (branchid, accountid, invoiceid, transactiondate, transactiondescription, eventname, InBucket5, siteid, programid, routeid)
SELECT branchid, accountid, invoiceid, transactiondate, dbo.fngetTransactionDescription(invoiceid,1) as description, eventname, invoicetotal, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 4
AND invoicetotal > 0
--Bucket 4 (over 120 days) PAYMENTS
INSERT INTO #tmpAR2 (branchid, accountid, paymentid, transactiondate, transactiondescription, eventname, InBucket5, siteid, programid, routeid)
SELECT branchid, accountid, paymentid, transactiondate, dbo.fngetTransactionDescription(paymentid,2) as description, eventname, paymenttotal*-1, siteid, programid, routeid
FROM #tmpAR
WHERE agingbucketnumber = 4
AND paymenttotal <> 0
--Prepay
INSERT INTO #tmpAR2 (branchid, accountid, prepayid, transactiondate, transactiondescription, eventname, prepay, siteid, programid, routeid)
SELECT branchid, accountid, prepayid, transactiondate, dbo.fngetTransactionDescription(prepayid,2) as description, eventname, prepay*-1, siteid, programid, routeid
FROM #tmpAR
WHERE prepay <> 0
DECLARE @InBucket01Total money
DECLARE @InBucket2Total money
DECLARE @InBucket3Total money
DECLARE @InBucket4Total money
DECLARE @InBucket5Total money
DECLARE @DebitBalance money
DECLARE @CreditBalance money
DECLARE @Balance money
--PROGRAM TOTALS
SELECT
INTO
#tmpProgramTotals
FROM
#tmpAR2
DECLARE @programid int
DECLARE @routeid int
WHILE (select COUNT(*) from #tmpProgramTotals) > 0
BEGIN
select top 1 @programid = programid, @routeid = routeid from #tmpProgramTotals
--Get Program Totals
select
@InBucket01Total = SUM(InBucket01),
@InBucket2Total = SUM(InBucket2),
@InBucket3Total = SUM(InBucket3),
@InBucket4Total = SUM(InBucket4),
@InBucket5Total = SUM(InBucket5),
@DebitBalance = SUM(InBucket01) + SUM(InBucket2) + SUM(InBucket3) + SUM(InBucket4) + SUM(InBucket5),
@CreditBalance = SUM(prepay),
@Balance = ((SUM(InBucket01) + SUM(InBucket2) + SUM(InBucket3) + SUM(InBucket4) + SUM(InBucket5)) + SUM(prepay))
from #tmpProgramTotals where programid = @programid and routeid = @routeid
UPDATE
#tmpAR2
SET
ProgramInBucket01 = @InBucket01Total,
ProgramInBucket2 = @InBucket2Total,
ProgramInBucket3 = @InBucket3Total,
ProgramInBucket4 = @InBucket4Total,
ProgramInBucket5 = @InBucket5Total,
ProgramDebit = @DebitBalance,
ProgramCredit = @CreditBalance,
ProgramBalance = @Balance
WHERE
programid = @programid
AND routeid = @routeid
delete #tmpProgramTotals where programid = @programid and routeid = @routeid
END
DROP TABLE #tmpProgramTotals
CREATE TABLE #tmpIncludedprepay (paymentid int)
SELECT
INTO
#tmpProgramCredits
FROM
#tmpAR2
WHILE (select COUNT(*) from #tmpProgramCredits) > 0
BEGIN
select top 1 @programid = programid, @routeid = routeid from #tmpProgramCredits
declare @programcreditbalance money
select @programcreditbalance = ProgramCredit from #tmpAR2 where programid = @programid and routeid = @routeid
while @programcreditbalance < 0
BEGIN
declare @creditamount money
declare @paymentid int
select top 1 @creditamount = prepay, @paymentid = prepayid
from #tmpAR2
where programid = @programid and routeid = @routeid
and prepayid <> 0 and prepayid not in (select paymentid from #tmpIncludedprepay)
and prepay < 0
order by transactiondate desc
insert into #tmpIncludedprepay values (@paymentid)
if @programcreditbalance - @creditamount > 0
BEGIN
UPDATE
#tmpAR2
SET
prepay = @programcreditbalance
WHERE
prepayid = @paymentid
END
set @programcreditbalance = @programcreditbalance - @creditamount
END
delete #tmpProgramCredits where programid = @programid and routeid = @routeid
END
DROP TABLE #tmpProgramCredits
DELETE FROM #tmpAR2
WHERE prepayid <> 0 AND prepayid not in (select paymentid from #tmpIncludedprepay)
DROP TABLE #tmpIncludedprepay
SELECT
acct.accountid,
acct.accountnum,
br.branchid,
br.branchname,
r.routeid,
r.routename,
CASE scontact.businessname WHEN '' THEN scontact.lastname + '. ' + scontact.firstname ELSE scontact.businessname END as Name,
sphone.phonenumber,
CASE WHEN prog.canceldate is not null THEN 'Cancelled'
ELSE CASE WHEN prog.pendingcanceldate is not null THEN 'Pending Cancel'
ELSE CASE WHEN prog.warrantyexpirationdate <= @asofdate THEN 'Expired'
ELSE 'Active' END
END
END as programstatus,
CASE WHEN prog.canceldate is not null THEN 3
ELSE CASE WHEN prog.pendingcanceldate is not null THEN 4
ELSE CASE WHEN prog.warrantyexpirationdate <= @asofdate THEN 2
ELSE 1 END
END
END as programstatus_indicator,
prog.programid,
convert(varchar, transactiondate, 101) as transactiondate,
transactiondescription,
eventname,
(CASE WHEN prepay <> 0 then prepay else InBucket01 END) as InBucket01,
InBucket2,
InBucket3,
InBucket4,
InBucket5,
ProgramDebit,
ProgramCredit,
ProgramBalance,
ProgramInBucket01,
ProgramInBucket2,
ProgramInBucket3,
ProgramInBucket4,
ProgramInBucket5,
RouteInBucket01,
RouteInBucket2,
RouteInBucket3,
RouteInBucket4,
RouteInBucket5,
RouteDebit,
RouteCredit,
RouteBalance,
BranchInBucket01,
BranchInBucket2,
BranchInBucket3,
BranchInBucket4,
BranchInBucket5,
BranchDebit,
BranchCredit,
BranchBalance,
Detail = 1,
Age = CASE @ageperiod
WHEN 0 THEN 'Debits'
WHEN 1 THEN 'Credits'
WHEN 2 THEN '31-60 Days and older'
WHEN 3 THEN '61-90 Days and older'
WHEN 4 THEN '91-120 Days and older'
WHEN 5 THEN '120 Days and older'
WHEN -999 THEN 'All Balance'
END,
PropertyType = CASE sit.propertytype
WHEN 1 THEN 'Residential'
WHEN 2 THEN 'Commercial'
WHEN 5 THEN 'National'
ELSE ''
END
INTO
#results
FROM
#tmpAR2
INNER JOIN taccount acct ON acct.accountid = #tmpAR2.accountid
INNER JOIN tbranch br ON br.branchid = #tmpAR2.branchid
INNER JOIN troute r ON r.routeid = #tmpAR2.routeid
INNER JOIN tprogram prog ON prog.programid = #tmpAR2.programid
INNER JOIN testimate est ON est.estimateid = prog.estimateid
INNER JOIN tsite sit ON sit.siteid = est.siteid
INNER JOIN tcontact scontact on acct.primarycontactid = scontact.contactid
INNER JOIN taddress saddr on acct.billingaddressid = saddr.addressid
LEFT JOIN tcontactphonenumber sphone ON scontact.primaryphoneid = sphone.phoneid
WHERE
--Debit Balance
(@ageperiod <> 0 OR ProgramBalance > 0)
--Credit Balance
AND (@ageperiod <> 1 OR ProgramBalance < 0)
--31-60 Days and older
AND (@ageperiod <> 2 OR (ProgramInBucket2 > 0 or ProgramInBucket3 > 0 or ProgramInBucket4 > 0 or ProgramInBucket5 > 0))
--61-90 Days and older
AND (@ageperiod <> 3 OR (ProgramInBucket3 > 0 or ProgramInBucket4 > 0 or ProgramInBucket5 > 0))
--90 Days and older
AND (@ageperiod <> 4 OR (ProgramInBucket4 > 0 or ProgramInBucket5 > 0))
--120 Days and older
AND (@ageperiod <> 5 OR ProgramInBucket5 > 0)
-- property type
AND (@propertytype = -999 OR sit.propertytype = @propertytype)
--Need to add a line with null values for the timeline if details are not showing
IF @showdetails = 0
BEGIN
INSERT INTO
#results
SELECT DISTINCT
--TFS-8903 .. JL ... 2/12/2014
accountid,
accountnum, branchid, branchname, routeid, routename, Name,
phonenumber, programstatus,programstatus_indicator,programid, null, null, null,
null, null, null, null, null,
ProgramDebit,ProgramCredit, ProgramBalance,
ProgramInBucket01, ProgramInBucket2, ProgramInBucket3, ProgramInBucket4, ProgramInBucket5,
RouteInBucket01, RouteInBucket2, RouteInBucket3, RouteInBucket4, RouteInBucket5,
RouteDebit, RouteCredit, RouteBalance,
BranchInBucket01, BranchInBucket2, BranchInBucket3, BranchInBucket4, BranchInBucket5,
BranchDebit, BranchCredit, BranchBalance,
0, Age, PropertyType
FROM
#results
DELETE FROM #results
WHERE Detail = 1
END
IF @programstatus <> -999 AND @programstatus <> 1 -- ACTIVE
BEGIN
DELETE r
FROM
#results r
INNER JOIN tprogram p
ON r.programid = p.programid
WHERE
r.programstatus_indicator = 1
END
IF @programstatus <> -999 AND @programstatus <> 2 -- Expired
BEGIN
DELETE r
FROM
#results r
INNER JOIN tprogram p
ON r.programid = p.programid
WHERE
r.programstatus_indicator = 2
END
IF @programstatus <> -999 AND @programstatus <> 3 -- CANCELLED
BEGIN
DELETE r
FROM
#results r
INNER JOIN tprogram p
ON r.programid = p.programid
WHERE
r.programstatus_indicator = 3
END
IF @programstatus <> -999 AND @programstatus <> 4 -- PENDING CANCEL
BEGIN
DELETE r
FROM
#results r
INNER JOIN tprogram p
ON r.programid = p.programid
WHERE
r.programstatus_indicator = 4
END
SELECT
branchid,
routeid
INTO
#branchesRoutes
FROM
tbranchroute
IF @branchid <> -999
BEGIN
DELETE FROM #branchesRoutes
WHERE branchid <> @branchid
END
SELECT
accountid = ISNULL(res.accountid,0),
accountnum = ISNULL(res.accountnum, ''),
branchid = b.branchid,
branchname = b.branchname,
routeid = r.routeid,
routename = r.routename,
Name = ISNULL(Name,''),
phonenumber,
programstatus,
programid = ISNULL(programid,0),
transactiondate = transactiondate,
transactiondescription,
eventname,
detail0to30 = InBucket01,
detail31to60 = InBucket2,
detail61to90 = InBucket3,
detailOver90 = InBucket4,
detailOver120 = InBucket5,
ProgramDebit = ISNULL(ProgramDebit,0),
ProgramCredit = ISNULL(ProgramCredit,0),
ProgramBalance = ISNULL(ProgramBalance,0),
Program0to30 = ISNULL(ProgramInBucket01,0),
Program31to60 = ISNULL(ProgramInBucket2,0),
Program61to90 = ISNULL(ProgramInBucket3,0),
ProgramOver90 = ISNULL(ProgramInBucket4,0),
ProgramOver120 = ISNULL(ProgramInBucket5,0),
Route0to30 = ISNULL(RouteInBucket01,0),
Route31to60 = ISNULL(RouteInBucket2,0),
Route61to90 = ISNULL(RouteInBucket3,0),
RouteOver90 = ISNULL(RouteInBucket4,0),
RouteOver120 = ISNULL(RouteInBucket5,0),
RouteDebit = ISNULL(RouteDebit,0),
RouteCredit = ISNULL(RouteCredit,0),
RouteBalance = ISNULL(RouteBalance,0),
Branch0to30 = ISNULL(BranchInBucket01,0),
Branch31to60 = ISNULL(BranchInBucket2,0),
Branch61to90 = ISNULL(BranchInBucket3,0),
BranchOver90 = ISNULL(BranchInBucket4,0),
BranchOver120 = ISNULL(BranchInBucket5,0),
BranchDebit = ISNULL(BranchDebit,0),
BranchCredit = ISNULL(BranchCredit,0),
BranchBalance = ISNULL(BranchBalance,0),
ISNULL((select top 1 tfinancestatussetup.financestatus
from tevent inner join tfinancestatussetup on tevent.financestatusid = tfinancestatussetup.financestatusid
inner join tprogram on tevent.programid = tprogram.programid
inner join #results r2 on r2.programid = tprogram.programid
inner join testimate on testimate.estimateid = tprogram.estimateid
where testimate.accountid = res.accountid
order by tevent.submitteddate desc), '') as racstatus,
Detail = ISNULL(Detail,0),
Age,
Case
when (acc.allowautobill = 1) or
(select count(accp.programid) from taccountebaprogram accp
where accp.accountid = acc.accountid ) > 0 then 'Auto Pay'
else ''
END as StatusNote,
CASE @sortby
WHEN 'name' THEN 1
ELSE 0
END as Sort,
PropertyType,
hasservices = CASE WHEN res.accountid IS NULL THEN 0 ELSE 1 END
INTO
#results2
FROM
#results res
inner join taccount acc on acc.accountid=res.accountid
inner join #branchesRoutes br on br.routeid = res.routeid AND br.branchid = res.branchid
inner join troute r ON r.routeid = br.routeid
inner join tbranch b on b.branchid = br.branchid
--Set Route Totals
SELECT
routeid,
SUM(ProgramInBucket01) as RouteInBucket01,
SUM(ProgramInBucket2) as RouteInBucket2,
SUM(ProgramInBucket3) as RouteInBucket3,
SUM(ProgramInBucket4) as RouteInBucket4,
SUM(ProgramInBucket5) as RouteInBucket5, --xx
SUM(ProgramDebit) as RouteDebit,
SUM(ProgramCredit) as RouteCredit,
SUM(ProgramBalance) as RouteBalance
INTO
#routetotals
FROM
(select distinct
routeid, programid, ProgramInBucket01, ProgramInBucket2, ProgramInBucket3, ProgramInBucket4, ProgramInBucket5, ProgramDebit, ProgramCredit, ProgramBalance
from
#results
) t
GROUP BY
routeid
UPDATE
#results2
SET
Route0to30 = t.RouteInBucket01,
Route31to60 = t.RouteInBucket2,
Route61to90 = t.RouteInBucket3,
RouteOver90 = t.RouteInBucket4,
RouteOver120 = t.RouteInBucket5,
RouteDebit = t.RouteDebit,
RouteCredit = t.RouteCredit,
RouteBalance = t.RouteBalance
FROM
#results2
INNER JOIN #routetotals t on t.routeid = #results2.routeid
--Set Branch Totals
SELECT
branchid,
SUM(Route0to30) as BranchInBucket01,
SUM(Route31to60) as BranchInBucket2,
SUM(Route61to90) as BranchInBucket3,
SUM(RouteOver90) as BranchInBucket4,
SUM(RouteOver120) as BranchInBucket5,
SUM(RouteDebit) as BranchDebit,
SUM(RouteCredit) as BranchCredit,
SUM(RouteBalance) as BranchBalance
INTO
#branchtotals
FROM
(select distinct
branchid, routeid, Route0to30, Route31to60, Route61to90, RouteOver90, RouteOver120, RouteDebit, RouteCredit, RouteBalance
from
#results2
) t
GROUP BY
branchid
UPDATE
#results2
SET
Branch0to30 = t.BranchInBucket01,
Branch31to60 = t.BranchInBucket2,
Branch61to90 = t.BranchInBucket3,
BranchOver90 = t.BranchInBucket4,
BranchOver120 = t.BranchInBucket5,
BranchDebit = t.BranchDebit,
BranchCredit = t.BranchCredit,
BranchBalance = t.BranchBalance
FROM
#results2
INNER JOIN #branchtotals t on t.branchid = #results2.branchid
SELECT * FROM #results2 -- order by routeid, branchid
drop table #branchesRoutes
drop table #tmpAR
drop table #branchtotals
drop table #routetotals
drop table #tmpAR2
drop table #results
drop table #results2
drop table #mecs
ENDUse this tool on my web site:
http://www.sommarskog.se/sqlutil/sqltrace.html
The stored procedure sp_sqltrace sets up a trace filtered for you own spid, and accepts a command batch, which in your case is a call to your stored procedure. It will aggregrate the data per statement. This procedure helps you identify what is taking time.
Erland Sommarskog, SQL Server MVP, [email protected] -
RE: Need help to improve performance!!
Hi Experts,
There is an standard SAP tcode FPREPT which is to re-print a receipt. The execution of the Query time takes 5+ minutes.
Can anybody suggest me the best way to improve this and if hlp me with any SAP note available for the same.
vishalHi,
Check this note
Note 607651 - FPREPT/FPY1: Performance for receipt number assignment
It is a old one for release 471 (FI-CA)
What is your release ?
Regards -
Need help in improving performance of prorating quantities to stores for existing orders
I have a code written to allocate quantities to stores for an existing order. Suppose there is a supplier order with quantity of 100 and this needs to distributed among 4 stores which has a demand of 50,40,30 and 20. Since total demand not equal to available quantity. the available quantity needs to be allocated to stores using an algorithm.
ALgorithm is like allocating the stores in small pieces of innersize. Innersize is nothing but
quantity within the pack of packs i.e. pack has 4 pieces and each pieces internally has 10 pieces,
this 10 is called innersize.
While allocating, each store is provided quantities of innersize first and this looping continues
until available quantity is over
Ex:
store1=10
store2=10
store3=10
store4=10
second time:
store1=10(old)+10
store2=10(old)+10
store3=10(old)+10
store4=10(old)+10--demand fulfilled
third time
store1=20(old)+10
store2=20(old)+10
-- available quantity is over and hence stopped.
My code below-
=================================================
int prorate_allocation()
char *function = "prorate_allocation";
long t_cnt_st;
int t_innersize;
int t_qty_ordered;
int t_cnt_lp;
bool t_complete;
sql_cursor alloc_cursor;
EXEC SQL DECLARE c_order CURSOR FOR -- cursor to get orders, item in that, inner size and available qty.
SELECT oh.order_no,
ol.item,
isc.inner_pack_size,
ol.qty_ordered
FROM ABRL_ALC_CHG_TEMP_ORDHEAD oh,
ordloc ol,
item_supp_country isc
WHERE oh.order_no=ol.order_no
AND oh.supplier=isc.supplier
and ol.item=isc.item
AND EXISTS (SELECT 1 FROM abrl_alc_chg_details aacd WHERE oh.order_no=aacd.order_no)
AND ol.qty_ordered>0;
char v_order_no[10];
char v_item[25];
double v_innersize;
char v_qty_ordered[12];
char v_alloc_no[11];
char v_location[10];
char v_qty_allocated[12];
int *store_quantities;
bool *store_processed_flag;
EXEC SQL OPEN c_order;
if (SQL_ERROR_FOUND)
sprintf(err_data,"CURSOR OPEN: cursor=c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL ALLOCATE :alloc_cursor;
while(1)
EXEC SQL FETCH c_order INTO :v_order_no,
:v_item,
:v_innersize,
:v_qty_ordered;
if (SQL_ERROR_FOUND)
sprintf(err_data,"CURSOR FETCH: cursor=c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
if (NO_DATA_FOUND) break;
t_qty_ordered =atoi(v_qty_ordered);
t_innersize =(int)v_innersize;
t_cnt_lp = t_qty_ordered/t_innersize;
t_complete =FALSE;
EXEC SQL SELECT COUNT(*) INTO :t_cnt_st
FROM abrl_alc_chg_ad ad,
alloc_header ah
WHERE ah.alloc_no=ad.alloc_no
AND ah.order_no=:v_order_no
AND ah.item=:v_item
AND ad.qty_allocated!=0;
if SQL_ERROR_FOUND
sprintf(err_data,"SELECT: ALLOC_DETAIL, count = %s\n",t_cnt_st);
strcpy(table,"ALLOC_DETAIL");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
if (t_cnt_st>0)
store_quantities=(int *) calloc(t_cnt_st,sizeof(int));
store_processed_flag=(bool *) calloc(t_cnt_st,sizeof(bool));
EXEC SQL EXECUTE
BEGIN
OPEN :alloc_cursor FOR SELECT ad.alloc_no,
ad.to_loc,
ad.qty_allocated
FROM alloc_header ah,
abrl_alc_chg_ad ad
WHERE ah.alloc_no=ad.alloc_no
AND ah.item=:v_item
AND ah.order_no=:v_order_no
order by ad.qty_allocated desc;
END;
END-EXEC;
while (t_cnt_lp>0)
EXEC SQL WHENEVER NOT FOUND DO break;
for(int i=0;i<t_cnt_st;i++)
EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
:v_location,
:v_qty_allocated;
if (store_quantities[i]!=(int)v_qty_allocated)
store_quantities[i]=store_quantities[i]+t_innersize;
t_cnt_lp--;
if (t_cnt_lp==0)
EXEC SQL CLOSE :alloc_cursor;
break;
else
if(store_processed_flag[i]==FALSE)
store_processed_flag[i]=TRUE;
t_cnt_st--;
if (t_cnt_st==0)
t_complete=TRUE;
break;
if (t_complete==TRUE && t_cnt_lp!=0)
for (int i=0;i<t_cnt_st;i++)
store_quantities[i]=store_quantities[i]+v_innersize;
t_cnt_lp--;
if (t_cnt_lp==0)
EXEC SQL CLOSE :alloc_cursor;
break;
}/*END OF WHILE*/
EXEC SQL EXECUTE
BEGIN
OPEN :alloc_cursor FOR SELECT ad.alloc_no,
ad.to_loc,
ad.qty_allocated
FROM alloc_header ah,
abrl_alc_chg_ad ad
WHERE ah.alloc_no=ad.alloc_no
AND ah.item=:v_item
AND ah.order_no=:v_order_no
order by ad.qty_allocated desc;
END;
END-EXEC;
EXEC SQL WHENEVER NOT FOUND DO break;
for (int i=0;i<t_cnt_st;i++)
EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
:v_location,
:v_qty_allocated;
EXEC SQL UPDATE abrl_alc_chg_ad
SET qty_allocated=:store_quantities[i]
WHERE to_loc=:v_location
AND alloc_no=:v_alloc_no;
if SQL_ERROR_FOUND
sprintf(err_data,"UPDATE: ALLOC_DETAIL, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
strcpy(table,"ALLOC_DETAIL");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL UPDATE ABRL_ALC_CHG_DETAILS
SET PROCESSED='Y'
WHERE LOCATION=:v_location
AND alloc_no=:v_alloc_no
AND PROCESSED IN ('E','U');
if SQL_ERROR_FOUND
sprintf(err_data,"UPDATE: ABRL_ALC_CHG_DETAILS, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
strcpy(table,"ABRL_ALC_CHG_DETAILS");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL COMMIT;
EXEC SQL CLOSE :alloc_cursor;
free(store_quantities);
free(store_processed_flag);
}/*END OF IF*/
}/*END OF OUTER WHILE LOOP*/
EXEC SQL CLOSE c_order;
if SQL_ERROR_FOUND
sprintf(err_data,"CURSOR CLOSE: cursor = c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
return(0);
} /* end prorate_allocation*/I have a code written to allocate quantities to stores for an existing order. Suppose there is a supplier order with quantity of 100 and this needs to distributed among 4 stores which has a demand of 50,40,30 and 20. Since total demand not equal to available quantity. the available quantity needs to be allocated to stores using an algorithm.
ALgorithm is like allocating the stores in small pieces of innersize. Innersize is nothing but
quantity within the pack of packs i.e. pack has 4 pieces and each pieces internally has 10 pieces,
this 10 is called innersize.
While allocating, each store is provided quantities of innersize first and this looping continues
until available quantity is over
Ex:
store1=10
store2=10
store3=10
store4=10
second time:
store1=10(old)+10
store2=10(old)+10
store3=10(old)+10
store4=10(old)+10--demand fulfilled
third time
store1=20(old)+10
store2=20(old)+10
-- available quantity is over and hence stopped.
My code below-
=================================================
int prorate_allocation()
char *function = "prorate_allocation";
long t_cnt_st;
int t_innersize;
int t_qty_ordered;
int t_cnt_lp;
bool t_complete;
sql_cursor alloc_cursor;
EXEC SQL DECLARE c_order CURSOR FOR -- cursor to get orders, item in that, inner size and available qty.
SELECT oh.order_no,
ol.item,
isc.inner_pack_size,
ol.qty_ordered
FROM ABRL_ALC_CHG_TEMP_ORDHEAD oh,
ordloc ol,
item_supp_country isc
WHERE oh.order_no=ol.order_no
AND oh.supplier=isc.supplier
and ol.item=isc.item
AND EXISTS (SELECT 1 FROM abrl_alc_chg_details aacd WHERE oh.order_no=aacd.order_no)
AND ol.qty_ordered>0;
char v_order_no[10];
char v_item[25];
double v_innersize;
char v_qty_ordered[12];
char v_alloc_no[11];
char v_location[10];
char v_qty_allocated[12];
int *store_quantities;
bool *store_processed_flag;
EXEC SQL OPEN c_order;
if (SQL_ERROR_FOUND)
sprintf(err_data,"CURSOR OPEN: cursor=c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL ALLOCATE :alloc_cursor;
while(1)
EXEC SQL FETCH c_order INTO :v_order_no,
:v_item,
:v_innersize,
:v_qty_ordered;
if (SQL_ERROR_FOUND)
sprintf(err_data,"CURSOR FETCH: cursor=c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
if (NO_DATA_FOUND) break;
t_qty_ordered =atoi(v_qty_ordered);
t_innersize =(int)v_innersize;
t_cnt_lp = t_qty_ordered/t_innersize;
t_complete =FALSE;
EXEC SQL SELECT COUNT(*) INTO :t_cnt_st
FROM abrl_alc_chg_ad ad,
alloc_header ah
WHERE ah.alloc_no=ad.alloc_no
AND ah.order_no=:v_order_no
AND ah.item=:v_item
AND ad.qty_allocated!=0;
if SQL_ERROR_FOUND
sprintf(err_data,"SELECT: ALLOC_DETAIL, count = %s\n",t_cnt_st);
strcpy(table,"ALLOC_DETAIL");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
if (t_cnt_st>0)
store_quantities=(int *) calloc(t_cnt_st,sizeof(int));
store_processed_flag=(bool *) calloc(t_cnt_st,sizeof(bool));
EXEC SQL EXECUTE
BEGIN
OPEN :alloc_cursor FOR SELECT ad.alloc_no,
ad.to_loc,
ad.qty_allocated
FROM alloc_header ah,
abrl_alc_chg_ad ad
WHERE ah.alloc_no=ad.alloc_no
AND ah.item=:v_item
AND ah.order_no=:v_order_no
order by ad.qty_allocated desc;
END;
END-EXEC;
while (t_cnt_lp>0)
EXEC SQL WHENEVER NOT FOUND DO break;
for(int i=0;i<t_cnt_st;i++)
EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
:v_location,
:v_qty_allocated;
if (store_quantities[i]!=(int)v_qty_allocated)
store_quantities[i]=store_quantities[i]+t_innersize;
t_cnt_lp--;
if (t_cnt_lp==0)
EXEC SQL CLOSE :alloc_cursor;
break;
else
if(store_processed_flag[i]==FALSE)
store_processed_flag[i]=TRUE;
t_cnt_st--;
if (t_cnt_st==0)
t_complete=TRUE;
break;
if (t_complete==TRUE && t_cnt_lp!=0)
for (int i=0;i<t_cnt_st;i++)
store_quantities[i]=store_quantities[i]+v_innersize;
t_cnt_lp--;
if (t_cnt_lp==0)
EXEC SQL CLOSE :alloc_cursor;
break;
}/*END OF WHILE*/
EXEC SQL EXECUTE
BEGIN
OPEN :alloc_cursor FOR SELECT ad.alloc_no,
ad.to_loc,
ad.qty_allocated
FROM alloc_header ah,
abrl_alc_chg_ad ad
WHERE ah.alloc_no=ad.alloc_no
AND ah.item=:v_item
AND ah.order_no=:v_order_no
order by ad.qty_allocated desc;
END;
END-EXEC;
EXEC SQL WHENEVER NOT FOUND DO break;
for (int i=0;i<t_cnt_st;i++)
EXEC SQL FETCH :alloc_cursor INTO :v_alloc_no,
:v_location,
:v_qty_allocated;
EXEC SQL UPDATE abrl_alc_chg_ad
SET qty_allocated=:store_quantities[i]
WHERE to_loc=:v_location
AND alloc_no=:v_alloc_no;
if SQL_ERROR_FOUND
sprintf(err_data,"UPDATE: ALLOC_DETAIL, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
strcpy(table,"ALLOC_DETAIL");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL UPDATE ABRL_ALC_CHG_DETAILS
SET PROCESSED='Y'
WHERE LOCATION=:v_location
AND alloc_no=:v_alloc_no
AND PROCESSED IN ('E','U');
if SQL_ERROR_FOUND
sprintf(err_data,"UPDATE: ABRL_ALC_CHG_DETAILS, location = %s , alloc_no =%s\n", v_location,v_alloc_no);
strcpy(table,"ABRL_ALC_CHG_DETAILS");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
EXEC SQL COMMIT;
EXEC SQL CLOSE :alloc_cursor;
free(store_quantities);
free(store_processed_flag);
}/*END OF IF*/
}/*END OF OUTER WHILE LOOP*/
EXEC SQL CLOSE c_order;
if SQL_ERROR_FOUND
sprintf(err_data,"CURSOR CLOSE: cursor = c_order");
strcpy(table,"ORDHEAD, ORDLOC, ITEM_SUPP_COUNTRY");
WRITE_ERROR(SQLCODE,function,table,err_data);
return(-1);
return(0);
} /* end prorate_allocation*/ -
Need help in improving the performance for the sql query
Thanks in advance for helping me.
I was trying to improve the performance of the below query. I tried the following methods used merge instead of update, used bulk collect / Forall update, used ordered hint, created a temp table and upadated the target table using the same. The methods which I used did not improve any performance. The data count which is updated in the target table is 2 million records and the target table has 15 million records.
Any suggestions or solutions for improving performance are appreciated
SQL query:
update targettable tt
set mnop = 'G',
where ( x,y,z ) in
select a.x, a.y,a.z
from table1 a
where (a.x, a.y,a.z) not in (
select b.x,b.y,b.z
from table2 b
where 'O' = b.defg
and mnop = 'P'
and hijkl = 'UVW';987981 wrote:
I was trying to improve the performance of the below query. I tried the following methods used merge instead of update, used bulk collect / Forall update, used ordered hint, created a temp table and upadated the target table using the same. The methods which I used did not improve any performance. And that meant what? Surely if you spend all that time and effort to try various approaches, it should mean something? Failures are as important teachers as successes. You need to learn from failures too. :-)
The data count which is updated in the target table is 2 million records and the target table has 15 million records.Tables have rows btw, not records. Database people tend to get upset when rows are called records, as records exist in files and a database is not a mere collection of records and files.
The failure to find a single faster method with the approaches you tried, points to that you do not know what the actual performance problem is. And without knowing the problem, you still went ahead, guns blazing.
The very first step in dealing with any software engineering problem, is to identify the problem. Seeing the symptoms (slow performance) is still a long way from problem identification.
Part of identifying the performance problem, is understanding the workload. Just what does the code task the database to do?
From your comments, it needs to find 2 million rows from 15 million rows. Change these rows. And then write 2 million rows back to disk.
That is not a small workload. Simple example. Let's say that the 2 million row find is 1ms/row and the 2 million row write is also 1ms/row. This means a 66 minute workload. Due to the number of rows, an increase in time/row either way, will potentially have 2 million fold impact.
So where is the performance problem? Time spend finding the 2 million rows (where other tables need to be read, indexes used, etc)? Time spend writing the 2 million rows (where triggers and indexes need to be fired and maintained)? Both? -
Need help with premiere pro cs6 having performance issues please help
need help with premiere pro cs6 having performance issues please help
Welcome to the forum.
First thing that I would do would be to look at this Adobe KB Article to see if it helps.
Next, I would try the tips in this ARTICLE.
If that does not help, a Repair Install would definitely be in order.
Good luck,
Hunt -
Need help troubleshooting poor performance loading cubes
I need ideas on how to troubleshoot performance issues we are having when loading our infocube. There are eight infopackages running in parallel to update the cube. Each infopackage can execute three datapackages at a time. The load performance is erractic. For example, if an infopackage needs five datapackages to load the data, data package 1 is sometimes the last one to complete. Sometimes the slow performance is in the Update Rules processing and other times it is on the Insert into the fact table.
Sometimes there are no performance problems and the load completes in 20 mins. Other times, the loads complete in 1.5+ hours.
Does anyone know how to tell which server a data package was executed on? Can someone tell me any transactions to use to monitor the loads while they are running to help pinpoint what the bottleneck is?
Thanks.
Regards,
RyanSome sugegstions:
1. Collect BW statistics for all the cubes. Goto RSA1 and go to the cube and on tool bar - tools - BW statistics. Check thed boxes to collect both OLAP and WHM.
2. Activate all the technical content cubes and reports and relevant objects. You will find them if you search with 0BWTC* in the business content.
3. Start loading data to the Technical content cubes.
4. There are a few reports out of these statistical cubes and run them and you will get some ideas.
5. Try to schedule sequentially instead of parallel loads.
Ravi Thothadri -
Performance Issues - Urgent Help Required.
Hi All,
I have some performance problems on the application that is running on WLS 6.1
SP2.
1. I have a UI (jsp), in which the user can select either single or multiple product
IDs. If the user just selects one product ID and then submit the request to the
server the response is faster. However when the user submits multiple product
IDs, all these are submitted to the server and it takes a longer response time.
I was just thinking of generating multiple requests in batches (say 5) to optimise
the performance. If I submit multiple requests, how will i be able to manage the
response and display in the presentation layer. Any comments / suggestions are
welcome.
2. In my application, I have data access objects which fetches the data from the
Database. After the rows are fetched, these data is processed by business process
which converts them to java objects and returns them to clients. The business
process of converting the data fetched from Database to java objects is slow.
We need to improve the response time. What do we need to do?.
3. Is there any performance benchmarking info / comparision available between
WeblogicServer 6.1 and WebLogicServer 7 or any higher versions?.
Will appreciate any help to address the above problem.
Regards,
RengaTo Really figure whats going on, you need to get some performance numbers,
more specifically where things are slowing down. It could be anywhere from a
sql query thats doing a full table scan verses using index, or some method
somewhere slowing things down, or even something slow on the network. You
might want to try something like JProbe or OptimizeIt that can profile your
application and give you slow methods/modules of your application.
Haider
"Renganathan" <[email protected]> wrote in message
news:[email protected]..
>
Hi All,
I have some performance problems on the application that is running on WLS6.1
SP2.
1. I have a UI (jsp), in which the user can select either single ormultiple product
IDs. If the user just selects one product ID and then submit the requestto the
server the response is faster. However when the user submits multipleproduct
IDs, all these are submitted to the server and it takes a longer responsetime.
I was just thinking of generating multiple requests in batches (say 5) tooptimise
the performance. If I submit multiple requests, how will i be able tomanage the
response and display in the presentation layer. Any comments / suggestionsare
welcome.
2. In my application, I have data access objects which fetches the datafrom the
Database. After the rows are fetched, these data is processed by businessprocess
which converts them to java objects and returns them to clients. Thebusiness
process of converting the data fetched from Database to java objects isslow.
We need to improve the response time. What do we need to do?.
3. Is there any performance benchmarking info / comparision availablebetween
WeblogicServer 6.1 and WebLogicServer 7 or any higher versions?.
Will appreciate any help to address the above problem.
Regards,
Renga -
Spry Menu Bar issue, NEED HELP...???
Here is the coding for a menu bar that i created with CS3, for some reason i am having an issue when i open the web page in IE, on firefox and safari it looks fine, the menu drops down to sub menu's fine, but for some reason when i open it in IE, the submenu's show on the very top of the page rather than right below the menu itself, please check my coding and see if there is an issue???
i ran compatability and there are no issues shown.
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
cursor: default;
width: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: 10.4em;
float: left;
background-image: url(tab2.png);
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: 8.2em;
position: absolute;
left: -1000em;
text-decoration: underline;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
background-image: url(../tab1.png);
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 8.2em;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin: -5% 0 0 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: default;
padding: 0.5em 0.75em;
color: #FFFFFF;
text-decoration: none;
border-left-color: #0063bd;
border-right-color: #0063bd;
border-right-width: 3px;
border-left-width: thin;
font-family: Calibri;
font-weight: bold;
font-size: 19px;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #000000;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
color: #000000;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(SpryMenuBarDown.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarDownHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline-block;
f\loat: left;
position: relative;Hey gramps, thanks for the info, i have updated my spry framework to 1.6.1 but the problem is still the same, i recreated my menu with the new 1.6 and it still doing the same thing, the submenu's are like vertically reversed... ugh need help.
here the new code
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
cursor: default;
width: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: 10.4em;
float: left;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: 8.2em;
position: absolute;
left: -1000em;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
background-image: url(../tab1.png);
line-height: 18px;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 8.2em;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin: -5% 0 0 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border: 1px solid #CCC;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
padding: 0.5em 0.75em;
color: #FFFFFF;
text-decoration: none;
font-size: 19px;
font-family: Calibri;
font-weight: bolder;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #000000;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
color: #000000;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-repeat: no-repeat;
background-position: 95% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left; -
Concurrent crystal license timeout Issue, need help.
Hi,
My company is using crystal enterprise 10 with 18 concurrent user license.
However, we often hit out of crystal license issues.
Does time to wait for exporting crystal reports to excel/pdf takes up licenses?
Does time to wait for crystal report to be printed or viewed on the web browser takes up licenses?
We all know that user sessions take up user licenses. 1 user login take up 1 license.
Does crystal pruning job takes up user licenses too?
Need help urgently, much appreciated.Hi Daren,
Support on Cystal Enterprise 10 has expired. Make sure that your users are actually logging off and not just closing their browser.
One user can take up multiple licenses by not logging off or opening multiple browsers to view multiple reports. Scheduled jobs that are running do not take up license, but a user veiwing a historical instance does take up a license.
In your metrics tab in the Cyrsatl Management Console -> Servers-> cms you should be able to see the active number of sessions- system connections are backend connections between the servers and these do not take up any licenses.
Best Regards,
Jadie -
T400 LCD dim issue - Need help!!
I'm having a LCD dim issue with a T400. Have changed the LCD panel, LCD cable and systemboard but still having same issue. If i removed the lcd card, then the display is working fine. I've tested the lcd card in another working unit and it's working as well (means the lcd card is working). I use a working lcd card and plug into this T400 but LCD still dim.
I've try to switch the problematic lcd cable and lcd panel to a working systemboard and it kills the systemboard. Have try to switch a few things but still unable to find the root cause. Urgently need help on this. Any advice will be appreciated.
Model : 6475-RM5hey bhoh
i suggest uninstalling your current graphic card driver, let windows install its own generic drivers and see if that makes any difference
WW Social Media
Important Note: If you need help, post your question in the forum, and include your system type, model number and OS. Do not post your serial number.
Did someone help you today? Press the star on the left to thank them with a Kudo!
If you find a post helpful and it answers your question, please mark it as an "Accepted Solution"!
Follow @LenovoForums on Twitter!
Have you checked out the Community Knowledgebase yet?!
How to send a private message? --> Check out this article. -
Stuttering flv playback issue- need help asap
We need help asap. Have a project is due to deliver today (5/14).
We have a video to go on a dvd-rom, live action with Motion Graphics behind.
When output is done thru Projector the Motion Graphics stutter as they scroll.
Here is more technical info:
Stuttering flv playback issue:
Prores 422 timeline 29.97fps 1280x720 output from fcp using current settings.
Mov file is approx 7gb, plays relatively smooth on a mac pro with no raid.
Frame by frame analysis shows all frames are present with no jumps tears or skips.
Tried several output paths, programs and settings to create a smooth flv file to no avail.
We adjusted data rates from 2k, 3.5k, 4k and 8k, no luck
We adjusted keyframe rates from low to all frames, no luck.
We tried cs3 flash encoder, cs5 media encoder, squeeze ect, same results.
Playback in the flash projector seems to choke slightly no matter what we do.
Have also posted in the Director Forum.
Any help much appreciated!Here are a few ideas off the top of my head:
Try playing the file using a different xtra, sometimes different ones will work better. If you have Director 11.5, there is a native flv playback xtra.
You can build a player easily in Flash using the flvPlayback component, then bring that into Director as a swf.
Once you have the video in Director, try making the member Direct To Stage (DTS). If it is already DTS, try making it not DTS.
Make sure the video is not transparent, and nothing in Director overlaps the video... in fact, when the video is playing, nothing should be moving at all, and try to keep the amount of code that is running to a minimum.
Try lowering your video's data rate further or try using a different codec.
Using VBR (Variable Bit Rate) compression often makes the video appear to play smoother.
Try compressing the flv with different software. FFMpeg, for example, is free and does a very good job, often better than the Flash Video Encoder that comes with Flash/Creative Suite. -
Need Help with site performance
Looking for Help..
In particular we would like help from experts in ssl, browser experts
(how browsers handle encryption, de-encryption), iPlanet experts, Sun
crypto card experts, webdesign for performance experts.
Our website is hosted on a Sun Enterprise 450 server running Solaris v7
The machine is hosted at Exodus. These are the following software
servers that perform the core functions of the website:
iPlanet Web Server v. 4.1 ( Java server is enabled)
IBM db2 v. 7.1
SAA uses SmartSite, a proprietary system developed by Adaptations
(www.adaptations.com). At the level of individual HTML pages, SmartSite
uses
proprietary markup tags and Tcl code embedded in HTML comments to
publish
content stored in a database. SmartSite allows for control over when,
how and
to whom content appears. It is implemented as a java servlet which
stores its data on the db2 server and uses a tcl like scripting language
(jacl- orginally developed by Sun)
CHALLENGE:
In late June this year we launched a redesigned website with ssl enabled
on all pages. (a departure from the previous practice of maintaining
most of the site on non-secure server and only some pages on a ssl
server). We also introduced a new website design with greater use of
images, nested tables and javascript.
We have found that the introduction of the "secure everywhere" policy
has had a detrimental effect on the web site user experience, due to
decreased web server and web browser performance. In other words, the
site got slower. Specifically, we have
identified the following problems:
1. Web server performance degradation. Due to unidentified increases in
web
server resource demand caused (probably) by the global usage of SSL, the
web
server experienced instability. This was resolved by increasing the
amount of
operating system (OS) resources available to the server.
2. Web browser performance degradation. Several categories are noted:
2.1. Page load and rendering. Page load and rendering time has
increased dramatically on the new site, particularly in the case of
Netscape Navigator. Some of this may be attributed to the usage of SSL.
Particularly, the rendering time of complex tables and images may be
markedly slower on slower client machines.
2.2. Non-caching of content. Web browsers should not cache any content
derived from https on the local hard disk. The amount of RAM caching
ability varies form browser to browser, and machine to machine, but is
generally much less than for disk caching. In addition, some browser may
not cache content in RAM cache at all. The overall effect of reduced
caching is increased accesses to the web server to retrieve content.
This
will degrade server performance, as it services more content, and also
web browser performance, as it will spend more time waiting for page
content before and while rendering it.
Things that have been attempted to improve performance:
1) Reducing javascript redundancy (less compiling time required)
2) Optimizing HTML code (taking out nested tables, hard coding in specs
where possible to reduce compiling time)
3) Optimizing page content assembly (reducing routine redundancy,
enabling things to be compiled ahead of time)
4) Installing an encryption card (to speed page encryption rate) - was
removed as it did not seem to improve performance, but seemed to have
degraded performanceFred Martinez wrote:
Looking for Help..
In particular we would like help from experts in ssl, browser experts
(how browsers handle encryption, de-encryption), iPlanet experts, Sun
crypto card experts, webdesign for performance experts.
Our website is hosted on a Sun Enterprise 450 server running Solaris v7
The machine is hosted at Exodus. These are the following software
servers that perform the core functions of the website:
iPlanet Web Server v. 4.1 ( Java server is enabled)
IBM db2 v. 7.1
SAA uses SmartSite, a proprietary system developed by Adaptations
(www.adaptations.com). Since I don't see iPlanet's application server in the mix here this (a
newsgroup
for performance questions for iAS) is not the newsgroup to ask in.
Kent -
RSI Issue: Need help on IBM/Lenovo external keyboards w Trackpoint? Pic
Need help on IBM/Lenovo external keyboards w Trackpoint? Pic
I started my journey with Thinkpads on a T42, then T43.. then T61, X61T, R61 & T410 (bought for 2 cousins & they love it), W510 (dads new laptop). I may be a much recent convert but I swear by them now.
MAJOR ISSUE: Recently started feeling RSI (Repetitive Stress) & Carpal Tunnel symptoms (already doing stretches.. adjusted the desk.. & finding new adjustable LCD stand) since I am not using the Thinkpad directly... but using it docked with an External keyboard. Lot of Mousing as well. I'd like to go back to Thinkpad FEEL... or atleast have keyboard with a pointing device so my hands dont have to keep moving back n forth.
So, it would be great it some of my fellow T4x/T6x/X6x 'ers would guide me a bit on this... share their first hand experience, or what they've seen on these keyboards and feel free to point me to reliable sources of information.
Currently this would greatly be use with T61 - Adv Mini Dock - 30" XHD3000 LCD as shown in my signature below.
Anyone who has used or know something about one of these Thinkpad related keyboard (ideally both of these to give a comparative response).
Which of the following have you used?
How was the experience?
(Maybe point me to thread with peoples experiences)
If you've used several, which one do you prefer / recommend? Why?
At the moment I have a "slim" BTC 6200C desktop keyboard. It has laptop like scissor keyswitches, so I like it the slim notebook like profile.
The way I have positioned my 30" LCD I'd like to be able to keep the keyboard on my lap at times while on my chair and maybe on the desk at times.
ThinkPad Full-Size UltraNav USB Keyboard
The keyboard and trackpad of the IBM Lenovo Thinkplus USB Keyboard with Ultranav:
ThinkPad Travel UltraNav USB Keyboard
The travel version of the above:
Newer:
ThinkPad USB Keyboard with TrackPoint
A 2009 replacement for the previous one but not the full keyboard nor wireless:
Thinkpads:
T61 8892-02U: 14.1"SXGA+/2.2C2D/4G/XP|Adv Mini Dock|30" Gateway XHD3000 WQXGA via Dual-link DVI
X61T 7767-96U: 12.1"SXGA+/1.6C2D/3G/Vista|Ultrabase
W510 4319-2PU: 15.6"FHD/i7-720QM/4G/Win7Pro64 (for dad)
T43 1875-DLU: 14.1"XGA/1.7PM-740/1G/XP
Dell:
Inspiron 9300: 17"WUXGA/NVidiaGeForce6800/2.2PM/2G/XP (old)I had the same issue - had to go to voice command for a few weeks (sucked) wore wrist gards to keep things netural.
Everything went away when I changed to a USB keyboard with the Ultra nav (I use the track point and disable the pad).
I've been working like that for 6+ years now... no issues.
(as a side note, sleeping with wrist guards on helped heal me the fastest. I had neoprine, with a metal plate in them - from a local drug store) -
Need pointers to improve performance of a select query to table vbrk
Hey Folks,
I have a query , whose performance needs to be tuned , as such:
SELECT a~vbeln
a~fkart
a~waerk
a~fkdat
b~posnr
b~vgbel
b~vgpos
b~matnr
b~arktx
b~prctr
b~txjcd
INTO TABLE gi_billing_items
FROM vbrk AS a
INNER JOIN vbrp AS b
ON a~vbeln = b~vbeln
FOR ALL ENTRIES IN gi_sales_items
WHERE b~vgbel = gi_sales_items-vbeln
AND b~vgpos = gi_sales_items-posnr
AND b~matnr = gi_sales_items-matnr
AND b~werks = gi_sales_items-werks.
where
gi_sales_items is an internal table consisting of 278 entries,.
The result set collected in table gi_billing_items is 200 records
The total execution time for this query for the afore given data is 72,983 ms with the average time/record being ~ 9,471 ms which is too high.
When I try to verify the Explain Plan of the query in ST05, in the Access path I see that the performance of Query Block 1 is bad. Query Block 1 is of the QBLOCK_TYPE UNIONA. Its the very first step in the Query execution internally.
The indexes are defined on participating tables VBRK and VBRP as:
VBRK~0 MANDT,VBELN
VBRK~LOC MANDT,LCNUM
VBRP~0 MANDT,VBELN,POSNR
VBRP~Z01 FPLNR,MANDT
VBRP~Z02 MANDT,MATNR,WERKS
Its clear from the ST05, STAD and SE30 traces that there is a performance issue in this query. Does anyone have any pointers as to how to resolve this issue? Is there a protocol one needs to follow when using the "FOR ALL ENTRIES IN" clause? Or is there a need for any secondary indexes to be created?
Please let me know
Thanks and Best Regards,
Rashmi.Hi,
Try using the VBFA...to get the Invoice number and line item..and then use that value in VBRK...
* Declare the internal table for T_VBFA.
IF NOT gi_sales_items[] IS INITIAL.
SELECT VBELV
POSNV
VBELN
POSNN
VBTYP_N
INTO TABLE T_VBFA
FOR ALL ENTRIES IN gi_sales_items
WHERE VBELV = gi_sales_items-VBELN
AND POSNV = gi_sales_items-POSNR
AND VBTYP_N = 'M'. "Invoice ""Added this..
ENDIF.
**Add two columns to GI_SALES_ITEMS..to store the VBELN POSNN the data from t_vbfa..let's assume it is VBELN_VF and POSNR_VF
* Basically merge gi_sales_items AND t_vbfa
** Then use that field in
IF NOT GI_SALES_ITEMS[] IS INITIAL.
SELECT a~vbeln
a~fkart
a~waerk
a~fkdat
b~posnr
b~vgbel
b~vgpos
b~matnr
b~arktx
b~prctr
b~txjcd
INTO TABLE gi_billing_items
FROM vbrk AS a
INNER JOIN vbrp AS b
ON a~vbeln = b~vbeln
FOR ALL ENTRIES IN gi_sales_items
WHERE b~vbeln = gi_sales_items-vbeln_vf " Change here
AND b~posnr = gi_sales_items-posnr_vf " Change here
AND b~matnr = gi_sales_items-matnr
AND b~werks = gi_sales_items-werks.
ENDIF.
Thanks
Naren
Edited by: Narendran Muthukumaran on Oct 15, 2008 11:35 PM
Maybe you are looking for
-
Jabber and Desk Phone Integration
When stting up "Desk Phone Integration" on cisco Jabber on a test iPhone, Jabber loops forever when verifying account information saying just "verifying...". It never display an error message. It will eventually stop, the "Desk Phone Integration" sta
-
Fax issue with HP OfficeJet 7210 All-in-one
Hi everyone, I've got an issue with my HP OfficeJet 7210 All-in-one printer/fax (USB connection) I'm under Mac OS X 10.5 (Leopard). When I was under Tiger, my printer/fax worked properly. After the upgrade to Leopard, the printer/fax was still instal
-
How to assign project specific task with the newly created projects ?
Hi All, I need help. I need to assign project specific tasks (which i will be taking from staging table) other than the default task which are assigned during project creation. How do I proceed with this within same package. I am attaching the code o
-
Attempting to dowload trial of Lightroom 5 and it never "opened". I can find the file on my computer but when I try to open nothing happens?
-
ok when ever i go and down load i tunes 9, it says this An error has occured during the installing of assembly 'microsft.vc80.crt/verison='8.0.50727.4053'.type=''win32'',publickeytoken=''1fc 8b39a1e18e3b'',processorArchitecture=''x86''. please refer