Hi.
I use temp-tables in my code and its so slow that it takes ours to create a raport.. I don't know what i am doing wrong with temp-tables.. Please help me if You can.
Here it is:
DEFINE VARIABLE data_u LIKE wo_rel_date NO-UNDO INITIAL TODAY.
DEFINE VARIABLE data_u1 LIKE wo_rel_date NO-UNDO INITIAL TODAY.
DEFINE VARIABLE buyer1 LIKE wo_cc.
DEFINE VARIABLE buyer2 LIKE wo_cc.
DEFINE VARIABLE buyer3 LIKE wo_cc.
DEFINE VARIABLE part1 LIKE wo_part.
DEFINE VARIABLE part2 LIKE wo_part.
DEFINE VARIABLE pierwszy AS LOGICAL INITIAL TRUE.
DEFINE VARIABLE lp AS INTEGER FORMAT 99999 INITIAL 0.
DEFINE VARIABLE lp2 AS INTEGER FORMAT 99999 INITIAL 0.
DEFINE VARIABLE zapas LIKE ld_qty_oh FORMAT "->>>>>9.99".
DEFINE VARIABLE Zapas_mag LIKE ld_qty_oh FORMAT "->>>>>9.99".
DEFINE VARIABLE ilosc_tym LIKE wod_qty_req FORMAT "->>>9.99".
DEFINE VARIABLE tym_id LIKE wo_lot.
DEFINE TEMP-TABLE ZR
FIELD lp AS INTEGER FORMAT 99999
FIELD woreldate LIKE wo_rel_date
FIELD id LIKE wo_lot
FIELD indeks_z LIKE wo_part
FIELD indeks_k LIKE wod_part
FIELD ilosc LIKE wod_qty_req FORMAT "->>>9.99"
FIELD zapas_p LIKE ld_qty_oh FORMAT "->>>>>9.99"
FIELD zapas_k LIKE ld_qty_oh FORMAT "->>>>>9.99"
FIELD osodp LIKE wo_cc
FIELD opis LIKE pt_desc2
FIELD zszp LIKE wo_so_job
FIELD grupa LIKE pt_group
FIELD nazwa LIKE pt_desc1
FIELD proj LIKE wo_project FORMAT "x(3)"
INDEX lp lp
INDEX sort1 osodp indeks_k woreldate ID zapas_p.
DEFINE BUFFER b_ZR FOR ZR.
bcdparm = "".
FOR EACH wo_mstr NO-LOCK WHERE
wo_due_date >= data_u AND wo_rel_date >= data_u AND wo_rel_DATE <= data_u1
AND wo_cc >= buyer1 AND wo_cc <= buyer2
AND wo_part >= part1 AND wo_part <= part2
AND (wo_status = "R")
GROUP BY wo_cc:
FOR EACH wod_det WHERE wod_lot = wo_lot:
FIND pt_mstr WHERE pt_part = wod_part NO-LOCK NO-ERROR.
ilosc_tym = wod_qty_req - wod_qty_iss.
IF ilosc_tym > 0 THEN DO:
IF pt_pm_code <> "P" THEN DO:
lp = lp + 1.
CREATE ZR.
ZR.lp = lp.
ZR.woreldate = wo_rel_date.
ZR.id = wo_lot.
ZR.indeks_z = wo_part.
ZR.indeks_k = wod_part.
ZR.ilosc = wod_qty_req - wod_qty_iss.
ZR.zapas_p = 0.
ZR.zapas_k = 0.
ZR.osodp = pt_buyer.
ZR.opis = pt_desc2.
ZR.zszp = wo_so_job.
ZR.grupa = pt_group.
ZR.nazwa = pt_desc1.
ZR.proj = SUBSTR(wo_project,1,3).
END. /*IF 0/1*/
END. /*IF*/
END. /*wod_det*/
END. /*wo_mstr*/
FOR EACH ZR USE-INDEX sort1 GROUP BY indeks_k BY woreldate BY id :
IF FIRST-OF (indeks_k) THEN DO:
zapas_mag = 0.
FOR EACH ld_det WHERE ld_part = ZR.indeks_k :
zapas_mag = zapas_mag + ld_qty_oh.
END.
END.
zapas_k = zapas_mag.
zapas_p = zapas_mag - ilosc.
zapas_mag = zapas_p.
END. /*ZR*/
FOR EACH ZR USE-INDEX sort1 GROUP by ZR.osodp BY ZR.indeks_k BY ZR.woreldate BY ZR.ID BY ZR.zapas_p DESC:
FIND FIRST pt_mstr WHERE pt_part = ZR.indeks_z NO-LOCK NO-ERROR.
FIND FIRST b_ZR WHERE b_ZR.indeks_k = ZR.indeks_k AND zapas_p < 0 NO-LOCK NO-ERROR.
IF AVAILABLE b_ZR THEN DO:
IF FIRST-OF (ZR.indeks_k) THEN lp2 = lp2 + 1.
PUT
lp2 AT 1
ZR.indeks_k AT 7
ZR.osodp FORMAT "X(4)" AT 26
ZR.grupa AT 31
ZR.nazwa AT 40
ZR.opis AT 65
ZR.woreldate AT 90
ZR.id AT 99
ZR.proj AT 108
ZR.zszp AT 114
pt_buyer FORMAT "X(4)" AT 123
ZR.indeks_z AT 128
ZR.ilosc AT 191
ZR.zapas_k AT 200
ZR.zapas_p AT 211
SKIP.
END.
DELETE ZR.
END.
Please help!
I use temp-tables in my code and its so slow that it takes ours to create a raport.. I don't know what i am doing wrong with temp-tables.. Please help me if You can.
Here it is:
DEFINE VARIABLE data_u LIKE wo_rel_date NO-UNDO INITIAL TODAY.
DEFINE VARIABLE data_u1 LIKE wo_rel_date NO-UNDO INITIAL TODAY.
DEFINE VARIABLE buyer1 LIKE wo_cc.
DEFINE VARIABLE buyer2 LIKE wo_cc.
DEFINE VARIABLE buyer3 LIKE wo_cc.
DEFINE VARIABLE part1 LIKE wo_part.
DEFINE VARIABLE part2 LIKE wo_part.
DEFINE VARIABLE pierwszy AS LOGICAL INITIAL TRUE.
DEFINE VARIABLE lp AS INTEGER FORMAT 99999 INITIAL 0.
DEFINE VARIABLE lp2 AS INTEGER FORMAT 99999 INITIAL 0.
DEFINE VARIABLE zapas LIKE ld_qty_oh FORMAT "->>>>>9.99".
DEFINE VARIABLE Zapas_mag LIKE ld_qty_oh FORMAT "->>>>>9.99".
DEFINE VARIABLE ilosc_tym LIKE wod_qty_req FORMAT "->>>9.99".
DEFINE VARIABLE tym_id LIKE wo_lot.
DEFINE TEMP-TABLE ZR
FIELD lp AS INTEGER FORMAT 99999
FIELD woreldate LIKE wo_rel_date
FIELD id LIKE wo_lot
FIELD indeks_z LIKE wo_part
FIELD indeks_k LIKE wod_part
FIELD ilosc LIKE wod_qty_req FORMAT "->>>9.99"
FIELD zapas_p LIKE ld_qty_oh FORMAT "->>>>>9.99"
FIELD zapas_k LIKE ld_qty_oh FORMAT "->>>>>9.99"
FIELD osodp LIKE wo_cc
FIELD opis LIKE pt_desc2
FIELD zszp LIKE wo_so_job
FIELD grupa LIKE pt_group
FIELD nazwa LIKE pt_desc1
FIELD proj LIKE wo_project FORMAT "x(3)"
INDEX lp lp
INDEX sort1 osodp indeks_k woreldate ID zapas_p.
DEFINE BUFFER b_ZR FOR ZR.
bcdparm = "".
FOR EACH wo_mstr NO-LOCK WHERE
wo_due_date >= data_u AND wo_rel_date >= data_u AND wo_rel_DATE <= data_u1
AND wo_cc >= buyer1 AND wo_cc <= buyer2
AND wo_part >= part1 AND wo_part <= part2
AND (wo_status = "R")
GROUP BY wo_cc:
FOR EACH wod_det WHERE wod_lot = wo_lot:
FIND pt_mstr WHERE pt_part = wod_part NO-LOCK NO-ERROR.
ilosc_tym = wod_qty_req - wod_qty_iss.
IF ilosc_tym > 0 THEN DO:
IF pt_pm_code <> "P" THEN DO:
lp = lp + 1.
CREATE ZR.
ZR.lp = lp.
ZR.woreldate = wo_rel_date.
ZR.id = wo_lot.
ZR.indeks_z = wo_part.
ZR.indeks_k = wod_part.
ZR.ilosc = wod_qty_req - wod_qty_iss.
ZR.zapas_p = 0.
ZR.zapas_k = 0.
ZR.osodp = pt_buyer.
ZR.opis = pt_desc2.
ZR.zszp = wo_so_job.
ZR.grupa = pt_group.
ZR.nazwa = pt_desc1.
ZR.proj = SUBSTR(wo_project,1,3).
END. /*IF 0/1*/
END. /*IF*/
END. /*wod_det*/
END. /*wo_mstr*/
FOR EACH ZR USE-INDEX sort1 GROUP BY indeks_k BY woreldate BY id :
IF FIRST-OF (indeks_k) THEN DO:
zapas_mag = 0.
FOR EACH ld_det WHERE ld_part = ZR.indeks_k :
zapas_mag = zapas_mag + ld_qty_oh.
END.
END.
zapas_k = zapas_mag.
zapas_p = zapas_mag - ilosc.
zapas_mag = zapas_p.
END. /*ZR*/
FOR EACH ZR USE-INDEX sort1 GROUP by ZR.osodp BY ZR.indeks_k BY ZR.woreldate BY ZR.ID BY ZR.zapas_p DESC:
FIND FIRST pt_mstr WHERE pt_part = ZR.indeks_z NO-LOCK NO-ERROR.
FIND FIRST b_ZR WHERE b_ZR.indeks_k = ZR.indeks_k AND zapas_p < 0 NO-LOCK NO-ERROR.
IF AVAILABLE b_ZR THEN DO:
IF FIRST-OF (ZR.indeks_k) THEN lp2 = lp2 + 1.
PUT
lp2 AT 1
ZR.indeks_k AT 7
ZR.osodp FORMAT "X(4)" AT 26
ZR.grupa AT 31
ZR.nazwa AT 40
ZR.opis AT 65
ZR.woreldate AT 90
ZR.id AT 99
ZR.proj AT 108
ZR.zszp AT 114
pt_buyer FORMAT "X(4)" AT 123
ZR.indeks_z AT 128
ZR.ilosc AT 191
ZR.zapas_k AT 200
ZR.zapas_p AT 211
SKIP.
END.
DELETE ZR.
END.
Please help!