TRIGGER PROCEDURE FOR WRITE OF RuestAuf NEW BUFFER NRuestAuf OLD BUFFER ORuestAuf. DEFINE VARIABLE lBatch AS LOGICAL NO-UNDO. DEFINE VARIABLE iDiff AS INTEGER NO-UNDO. DEFINE BUFFER bHoRelager FOR HoReLager. DEFINE BUFFER bLotLager FOR LotLager . DEFINE BUFFER bAufLot FOR AufLot . lBatch = DYNAMIC-FUNCTION ('getBatch':U) NO-ERROR. IF lBatch = ? THEN lBatch = TRUE. IF ORuestAuf.MGeli = 0 AND NRuestAuf.MGeli = 0 THEN RETURN. iDiff = NRuestAuf.MGeli - ORuestAuf.MGeli. IF iDiff = 0 THEN RETURN. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND Aufze NO-LOCK WHERE Aufze.Firma = NRuestAuf.Firma AND Aufze.Aufnr = NRuestAuf.Aufnr AND Aufze.Pos = NRuestAuf.Pos NO-ERROR. FIND FIRST bHoReLager WHERE bHoReLager.Firma = NRuestAuf.Firma AND bHoReLager.cSort = NRuestAuf.Lagerort AND bHoRelager.Artnr = NRuestAuf.Artnr NO-ERROR. IF NOT AVAILABLE bHoRelager THEN RETURN. bHoRelager.Bestand = bHoRelager.Bestand - iDiff. FOR EACH bAuflot WHERE bAufLot.Firma = Aufze.Firma AND bAufLot.Aufnr = Aufze.Aufnr AND bAufLot.Pos = Aufze.Pos: FIND FIRST bLotLager USE-INDEX LotLager-k1 WHERE bLotLager.HoReLager_Id = bHoRelager.HoReLager_Id AND bLotLager.Artnr = Aufze.Artnr AND bLotLager.Verfall = bAufLot.Verfall AND bLotLager.Lotnummer = bAufLot.Nummer NO-ERROR. IF NOT AVAILABLE bLotLager THEN DO: CREATE bLotLager. ASSIGN bLotLager.Firma = bAufLot.Firma bLotLager.Lager = bAufLot.Lager bLotLager.Artnr = bAufLot.Artnr bLotLager.Inhalt = NRuestAuf.Inhalt bLotLager.Jahr = NRuestAuf.Jahr bLotLager.Verfall = bAufLot.Verfall bLotLager.Eingang = TODAY bLotLager.HoReLager_Id = bHoRelager.HoReLager_Id bLotLager.Lotnummer = bAufLot.Nummer. END. bLotLager.Bestand = bLotLager.Bestand - iDiff. IF bLotLager.Bestand < 0 THEN bLotLager.Bestand = 0. END. RELEASE bHoRelager. RELEASE bAufLot . RELEASE bLotLager . LEAVE. END.