TRIGGER PROCEDURE FOR WRITE OF ArtLief NEW BUFFER NArtLief OLD BUFFER OArtLief. DEF VAR cDiff AS CHAR NO-UNDO. DEF VAR cFeld AS CHAR NO-UNDO. DEF VAR kk AS INT NO-UNDO. DEF VAR kx AS INT NO-UNDO. DEF VAR cWort AS CHAR NO-UNDO. DEFINE BUFFER bBesze FOR Besze . DEFINE BUFFER bArtst FOR Artst . DEFINE BUFFER bArtLief FOR ArtLief . DISABLE TRIGGERS FOR LOAD OF Artbez . DISABLE TRIGGERS FOR LOAD OF Artst . IF NArtLief.S_Artnr <> OArtLief.S_Artnr AND NArtLief.S_Artnr <> '' THEN DO: FOR EACH Besze NO-LOCK WHERE Besze.Firma = NArtLief.Firma AND Besze.Artnr = NArtLief.Artnr AND Besze.Inhalt = NArtLief.Inhalt AND Besze.Jahr = NArtLief.Jahr AND Besze.Best_Sta < 4 AND Besze.S_Artnr <> NArtLief.S_Artnr, FIRST Besko NO-LOCK WHERE Besko.Firma = Besze.Firma AND Besko.Besnr = Besze.Besnr AND Besko.Knr = NArtLief.Knr : FIND bBesze EXCLUSIVE-LOCK WHERE RECID(bBesze) = RECID(Besze) NO-WAIT NO-ERROR. IF NOT AVAILABLE bBesze THEN NEXT. bBesze.S_Artnr = NArtLief.S_Artnr. RELEASE bBesze. END. END. BUFFER-COMPARE NArtLief USING S_Artnr S_Bez1 S_Bez2 S_Preis S_Preis_Frw Strichcode_GGeb Strichcode_VGeb Strichcode_KGeb Min_GGebinde Min_VGebinde Min_KGebinde TO OArtLief SAVE RESULT IN cDiff. IF cDiff = '' THEN RETURN. cWort = ''. RUN BEREINIGEN ( 0, NArtLief.Strichcode_KGeb ). RUN BEREINIGEN ( 0, NArtLief.Strichcode_VGeb ). FOR EACH bArtLief NO-LOCK WHERE bArtLief.Firma = NArtLief.Firma AND bArtLief.Artnr = NArtLief.Artnr AND bArtLief.Inhalt = NArtLief.Inhalt AND bArtLief.Jahr = NArtLief.Jahr AND bArtLief.Knr <> NArtLief.Knr: IF bArtLief.Min_GGebinde = NArtLief.Min_GGebinde AND bArtLief.Min_VGebinde = NArtLief.Min_VGebinde AND bArtLief.Min_KGebinde = NArtLief.Min_KGebinde AND bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb AND bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN NEXT. FIND CURRENT bArtLief EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. ASSIGN bArtLief.Min_GGebinde = (IF OArtLief.Min_GGebinde = NArtLief.Min_GGebinde THEN bArtLief.Min_GGebinde ELSE NArtLief.Min_GGebinde) bArtLief.Min_VGebinde = (IF OArtLief.Min_VGebinde = NArtLief.Min_VGebinde THEN bArtLief.Min_VGebinde ELSE NArtLief.Min_VGebinde) bArtLief.Min_KGebinde = (IF OArtLief.Min_KGebinde = NArtLief.Min_KGebinde THEN bArtLief.Min_KGebinde ELSE NArtLief.Min_KGebinde) bArtLief.Strichcode_VGeb = (IF OArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb THEN bArtLief.Strichcode_VGeb ELSE NArtLief.Strichcode_VGeb) bArtLief.Strichcode_KGeb = (IF OArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb THEN bArtLief.Strichcode_KGeb ELSE NArtLief.Strichcode_KGeb). IF bArtLief.Strichcode_KGeb = '' AND NArtLief.Strichcode_KGeb <> '' THEN bArtLief.Strichcode_KGeb = NArtLief.Strichcode_KGeb. IF bArtLief.Strichcode_VGeb = '' AND NArtLief.Strichcode_VGeb <> '' THEN bArtLief.Strichcode_VGeb = NArtLief.Strichcode_VGeb. RELEASE bArtLief. END. FIND Artbez USE-INDEX Artbez-k1 WHERE Artbez.Firma = NArtLief.Firma AND Artbez.Artnr = NArtLief.Artnr AND Artbez.Inhalt = NArtLief.Inhalt AND Artbez.Jahr = NArtLief.Jahr AND Artbez.Sprcd = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF NOT AVAILABLE Artbez THEN RETURN. RUN BEREINIGEN ( 0, Artbez.Bez1 ). RUN BEREINIGEN ( 0, Artbez.Bez2 ). DO kk = 1 TO 10: cFeld = Artbez.Zustext[kk]. IF cFeld = '' THEN NEXT. RUN BEREINIGEN ( 0, cFeld ). END. FIND Artst NO-LOCK OF NArtLief NO-ERROR. IF AVAILABLE Artst THEN DO: RUN BEREINIGEN ( 0, Artst.Suchbe ). RUN BEREINIGEN ( 0, Artst.Strichcode ). RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ). IF Artst.FremdNr <> '' THEN DO: RUN BEREINIGEN ( 0, STRING(Artst.FremdNr,'XXXXXX XXXX XXXX')). RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(SUBSTRING(Artst.FremdNr,01,06)),'>>>>>9'))). END. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = Artst.Firma AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR. IF AVAILABLE KGebinde THEN RUN BEREINIGEN ( 0, KGebinde.KBez ). IF NArtLief.Strichcode_KGeb <> '' AND Artst.Strichcode <> NArtLief.Strichcode_KGeb THEN DO: FIND bArtst EXCLUSIVE-LOCK WHERE RECID(bArtst) = RECID(Artst) NO-WAIT NO-ERROR. IF AVAILABLE bArtst THEN bArtst.Strichcode = NArtLief.Strichcode_KGeb. RELEASE bArtst. END. END. RUN BEREINIGEN ( 0, NArtLief.S_Artnr ). RUN BEREINIGEN ( 0, NArtLief.S_Bez1 ). RUN BEREINIGEN ( 0, NArtLief.S_Bez2 ). cFeld = 'XLIEFSTX' + STRING(NArtLief.Knr,'999999'). RUN BEREINIGEN ( 0, cFeld ). FOR EACH ArtLief NO-LOCK WHERE ArtLief.Firma = NArtLief.Firma AND ArtLief.Artnr = NArtLief.Artnr AND ArtLief.Inhalt = NArtLief.Inhalt AND ArtLief.Jahr = NArtLief.Jahr AND ArtLief.Knr <> NArtLief.Knr : RUN BEREINIGEN ( 0, ArtLief.S_Artnr ). /* RUN BEREINIGEN ( 0, ArtLief.S_Bez1 ). RUN BEREINIGEN ( 0, ArtLief.S_Bez2 ). */ cFeld = 'XLIEFSTX' + STRING(ArtLief.Knr,'999999'). RUN BEREINIGEN ( 0, cFeld ). END. Artbez.WortIndex = TRIM(cWort). RELEASE Artbez. RELEASE Artst. RELEASE ArtLief. RETURN. PROCEDURE BEREINIGEN: DEF INPUT PARAMETER ipArt AS INT NO-UNDO. DEF INPUT PARAMETER ipString AS CHAR NO-UNDO. DEF VAR wString AS CHAR NO-UNDO. DEF VAR xString AS CHAR NO-UNDO. DEF VAR yy AS INT NO-UNDO. IF ipString = '' THEN RETURN. wString = ipString. IF ipArt = 1 THEN DO: wString = REPLACE(wString, ' ', ''). wString = REPLACE(wString, '.', ''). wString = REPLACE(wString, '/', ''). wString = REPLACE(wString, '-', ''). END. wString = REPLACE(wString, '*' , '' ). wString = REPLACE(wString, '&' , ' '). wString = REPLACE(wString, '+' , '' ). wString = REPLACE(wString, '(' , '' ). wString = REPLACE(wString, ')' , '' ). wString = REPLACE(wString, '!' , '' ). wString = REPLACE(wString, '|' , '' ). wString = REPLACE(wString, '^' , '' ). wString = REPLACE(wString, ';' , '' ). wString = REPLACE(wString, "'" , '' ). wString = REPLACE(wString, ',' , '' ). wString = REPLACE(wString, ' ', ' '). wString = REPLACE(wString, '-' , ' '). wString = TRIM(wString). IF wString = '' THEN RETURN. DO yy = 1 TO NUM-ENTRIES(wString, ' '): xString = ENTRY(yy, wString, ' '). IF LOOKUP(xString, cWort, ' ') > 0 THEN NEXT. cWort = cWort + (IF cWort = '' THEN '' ELSE ' ') + xString. END. END PROCEDURE.