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. DEF VAR hBuffer AS HANDLE NO-UNDO. DEF VAR hFeld1 AS HANDLE NO-UNDO. DEF VAR iArt AS INT NO-UNDO. DISABLE TRIGGERS FOR LOAD OF Artbez. DISABLE TRIGGERS FOR LOAD OF Artst. DISABLE TRIGGERS FOR LOAD OF ArtLief. DISABLE TRIGGERS FOR LOAD OF Adresse. FOR EACH Adresse: ASSIGN cWort = '' Adresse.WortIndex = ''. hBuffer = BUFFER Adresse:HANDLE. DO kk = 1 TO hBuffer:NUM-FIELDS: hFeld1 = hBuffer:BUFFER-FIELD(kk). IF hFeld1:EXTENT > 0 THEN NEXT. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT. cFeld = hFeld1:NAME. IF cFeld BEGINS 'Erf' THEN NEXT. IF cFeld BEGINS 'Mut' THEN NEXT. IF cFeld BEGINS 'Anzeig' THEN NEXT. IF cFeld BEGINS 'Anschr' THEN NEXT. IF cFeld BEGINS 'Word' THEN NEXT. IF cFeld BEGINS 'Brief' THEN NEXT. IF cFeld BEGINS 'Cd' THEN NEXT. IF cFeld BEGINS 'Wort' THEN NEXT. IF cFeld BEGINS 'Bem' THEN NEXT. IF cFeld = 'Firma' THEN NEXT. iArt = 0. IF cFeld BEGINS 'Tel' THEN iArt = 1. IF cFeld BEGINS 'Nat' THEN iArt = 1. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ). END. hFeld1 = hBuffer:BUFFER-FIELD('Knr'). RUN BEREINIGEN ( 0, TRIM(STRING(INTEGER(hFeld1:BUFFER-VALUE(0)),'>>>>>>9')) ). FOR EACH Ansprech NO-LOCK WHERE Ansprech.Firma = Adresse.Firma AND Ansprech.Knr = Adresse.Knr : hBuffer = BUFFER Ansprech:HANDLE. DO kk = 1 TO hBuffer:NUM-FIELDS: hFeld1 = hBuffer:BUFFER-FIELD(kk). IF hFeld1:EXTENT > 0 THEN NEXT. IF NOT hFeld1:DATA-TYPE BEGINS 'CHAR' THEN NEXT. cFeld = hFeld1:NAME. IF cFeld BEGINS 'Erf' THEN NEXT. IF cFeld BEGINS 'Mut' THEN NEXT. IF cFeld BEGINS 'Anzeig' THEN NEXT. IF cFeld BEGINS 'Anschr' THEN NEXT. IF cFeld BEGINS 'Word' THEN NEXT. IF cFeld BEGINS 'Brief' THEN NEXT. IF cFeld BEGINS 'Cd' THEN NEXT. IF cFeld BEGINS 'Wort' THEN NEXT. IF cFeld BEGINS 'Bem' THEN NEXT. IF cFeld = 'Firma' THEN NEXT. iArt = 0. IF cFeld BEGINS 'Tel' THEN iArt = 1. IF cFeld BEGINS 'Nat' THEN iArt = 1. RUN BEREINIGEN ( iArt, hFeld1:BUFFER-VALUE(0) ). END. END. FOR EACH Steuer NO-LOCK WHERE Steuer.Firma < '9999' AND Steuer.AdFirma = Adresse.Firma: IF CAN-FIND ( Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Steuer.Firma AND Debst.Knr = Adresse.Knr AND Debst.Aktiv) THEN DO: RUN BEREINIGEN ( 0, 'XDEBSTX' ). END. IF CAN-FIND ( Liefst NO-LOCK USE-INDEX Liefst-k1 WHERE Liefst.Firma = Steuer.Firma AND Liefst.Knr = Adresse.Knr AND Liefst.Aktiv) THEN DO: RUN BEREINIGEN ( 0, 'XLIEFSTX' ). END. END. Adresse.WortIndex = cWort. END. FOR EACH Artst: cWort = ''. FIND Artbez USE-INDEX Artbez-k1 WHERE Artbez.Firma = Artst.Firma AND Artbez.Artnr = Artst.Artnr AND Artbez.Inhalt = Artst.Inhalt AND Artbez.Jahr = Artst.Jahr AND Artbez.Sprcd = 1 EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF NOT AVAILABLE Artbez THEN NEXT. 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. RUN BEREINIGEN ( 0, Artst.Suchbe ). RUN BEREINIGEN ( 0, Artst.Strichcode ). RUN BEREINIGEN ( 0, TRIM(STRING(Artst.Artnr,'>>>>>9')) ). IF Artst.Inhalt > 0 THEN RUN BEREINIGEN ( 0, 'Inhalt=' + TRIM(STRING(Artst.Inhalt,'>>>>>9')) ). IF Artst.Jahr > 0 THEN RUN BEREINIGEN ( 0, 'Jahr=' + TRIM(STRING(Artst.Jahr ,'>>>>>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 ). FOR EACH ArtLief NO-LOCK USE-INDEX ArtLief-k1 WHERE ArtLief.Firma = Artst.Firma AND ArtLief.Artnr = Artst.Artnr AND ArtLief.Inhalt = Artst.Inhalt AND ArtLief.Jahr = Artst.Jahr : 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 Artst . RELEASE KGebinde. RELEASE Artbez . RELEASE ArtLief . END. 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 NEXT. 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 NEXT. 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.