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