CREATE PROCEDURE "demoadm".p_k_buch(
pv_action char(1),
pv_mandant char(2),
pv_journr int, -- k_buch.journr
pv_periode int, -- k_buch.periode
pv_kto char(15), -- k_buch.kto
pv_gktr char(15), -- k_buch.gktr
pv_gkst char(15), -- k_buch.gkst
pv_betrag decimal(13,2), -- k_buch.betrag
pv_menge char(15) -- k_buch.kanzahl
)
DEFINE dw_oper varchar(50,0);
DEFINE err_sql int;
DEFINE err_isam int;
DEFINE err_txt varchar(150,0);
DEFINE err_msg varchar(250,0);
DEFINE i int;
DEFINE sv_kst_nr char(15);
DEFINE sv_ktr_nr char(15);
DEFINE sv_kart_nr char(15);
DEFINE sv_mandant char(2);
DEFINE sv_jahr decimal(4,0);
DEFINE sv_periode decimal(2,0);
DEFINE sv_betrag decimal(13,2);
DEFINE sv_menge decimal(22,7);
LET dw_oper = ' Start';
BEGIN
ON EXCEPTION
SET err_sql, err_isam, err_txt
LET err_msg = 'ISAM['||err_isam||']:'||err_txt||' #'||dw_oper;
IF pv_menge = ' ' THEN
LET sv_menge = 0.0;
ELSE
LET sv_menge = pv_menge;
END IF
INSERT INTO DWE_k_buch VALUES (0,err_sql,err_msg,0,'sr_saldo_k',
pv_action,
pv_mandant,
pv_journr,
pv_periode,
pv_kto,
pv_gktr,
pv_gkst,
pv_betrag,
sv_menge
);
END EXCEPTION;
SET LOCK MODE TO WAIT 10;
LET dw_oper = ' Computing variables';
LET sv_kst_nr = pv_gkst;
LET sv_ktr_nr = pv_gktr;
LET sv_kart_nr = pv_kto;
LET sv_mandant = pv_mandant;
LET sv_jahr = 1900 + TRUNC(pv_journr/10000000);
LET sv_periode = pv_periode;
LET sv_betrag = pv_betrag;
IF pv_menge = ' ' THEN
LET sv_menge = 0.0;
ELSE
LET sv_menge = pv_menge;
END IF
-- Negate Values --
IF pv_action = 'D' THEN
LET sv_betrag = -sv_betrag;
LET sv_menge = -sv_menge;
END IF
LET dw_oper = 'Updating sr_saldo_k';
UPDATE sr_saldo_k SET
betrag = betrag + sv_betrag,
menge = menge + sv_menge
WHERE (kst_nr = sv_kst_nr)
AND (ktr_nr = sv_ktr_nr)
AND (kart_nr = sv_kart_nr)
AND (mandant = sv_mandant)
AND (jahr = sv_jahr)
AND (periode = sv_periode)
;
IF DBINFO('sqlca.sqlerrd2') < 1 THEN
INSERT INTO sr_saldo_k (
kst_nr,
ktr_nr,
kart_nr,
mandant,
jahr,
periode,
betrag,
menge
)
VALUES (
sv_kst_nr,
sv_ktr_nr,
sv_kart_nr,
sv_mandant,
sv_jahr,
sv_periode,
sv_betrag,
sv_menge
);
END IF
END
SET LOCK MODE TO NOT WAIT;
END PROCEDURE
HTML-Autor: Rohloff, Datenbank: demodb, Datenstand: 31.05.00 17:07