DEF VAR ii AS INT NO-UNDO. DEF VAR iMenge AS INT NO-UNDO. DEF VAR dDatum AS DATE NO-UNDO. DEF VAR cRegal AS CHAR NO-UNDO. DEF VAR cPlatz AS CHAR NO-UNDO. DEF VAR cNiveau AS CHAR NO-UNDO. DEF VAR cSf AS CHAR NO-UNDO. DEF VAR cFirma AS CHAR NO-UNDO INIT '1000'. DEF VAR iLager AS INT NO-UNDO INIT 0. DEF TEMP-TABLE tExcel FIELD cSort AS CHAR FIELD Menge AS INT FIELD MHD AS CHAR FIELD iStatus AS INT FIELD Artnr AS INT FIELD Bestand AS INT FIELD Dummy AS CHAR EXTENT 5 FIELD dMHD AS DATE . INPUT FROM 'C:\Entwicklung\TEMP\Huber\SirupeAnLager.csv' NO-MAP NO-CONVERT. REPEAT TRANSACTION ON STOP UNDO, LEAVE: CREATE tExcel. IMPORT DELIMITER ';' tExcel. END. INPUT CLOSE. FOR EACH tExcel: IF tExcel.cSort = '' THEN DO: DELETE tExcel. NEXT. END. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'): CASE ii: WHEN 1 THEN cRegal = ENTRY(ii, tExcel.cSort, '-'). WHEN 2 THEN cPlatz = ENTRY(ii, tExcel.cSort, '-'). WHEN 3 THEN cNiveau = ENTRY(ii, tExcel.cSort, '-'). WHEN 4 THEN cSf = ENTRY(ii, tExcel.cSort, '-'). END CASE. END. DO WHILE LENGTH(cPlatz) < 3: cPlatz = '0' + cPlatz. END. DO WHILE LENGTH(cNiveau) < 2: cNiveau = '0' + cNiveau. END. DO WHILE cSF <> '' AND LENGTH(cSf) < 2: cSf = '0' + cSf. END. tExcel.cSort = SUBSTITUTE('&1-&2-&3', cRegal, cPlatz, cNiveau). IF cSF <> '' THEN tExcel.cSort = tExcel.cSort + '-' + cSf. IF tExcel.Artnr = 0 THEN NEXT. IF tExcel.Menge = 0 THEN tExcel.Menge = Bestand. IF tExcel.MHD = '' THEN NEXT. ii = INDEX(tExcel.MHD, 'x'). IF ii = 0 THEN DO: tExcel.dMHD = DATE(tExcel.MHD) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: MESSAGE tExcel.MHD VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. NEXT. END. NEXT. END. iMenge = INTEGER(TRIM(SUBSTRING(tExcel.MHD,01,ii - 1))). dDatum = DATE (TRIM(SUBSTRING(tExcel.MHD,ii + 1))) NO-ERROR. ASSIGN tExcel.Menge = iMenge tExcel.dMHD = dDatum. END. FOR EACH tExcel: FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = '1000' AND HoReLager.cSort = tExcel.cSort NO-ERROR. IF AVAILABLE HoReLager THEN NEXT. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'): CASE ii: WHEN 1 THEN cRegal = ENTRY(ii, tExcel.cSort, '-'). WHEN 2 THEN cPlatz = ENTRY(ii, tExcel.cSort, '-'). WHEN 3 THEN cNiveau = ENTRY(ii, tExcel.cSort, '-'). WHEN 4 THEN cSf = ENTRY(ii, tExcel.cSort, '-'). END CASE. END. CREATE HoReLager. ASSIGN HoReLager.Firma = cFirma HoReLager.Lager = iLager HoReLager.Art = 1 HoReLager.Regal = cRegal HoReLager.Niveau = cNiveau HoReLager.Platz = cPlatz HoReLager.Sf = cSf HoReLager.Artnr = 0 HoReLager.Inhalt = 0 HoReLager.Jahr = 0 HoReLager.Bestand = 0 HoReLager.iStatus = (IF HoReLager.Artnr = 0 THEN 0 ELSE 1) HoReLager.cSort = tExcel.cSort. END. FOR EACH tExcel: IF tExcel.cSort = '' THEN NEXT. IF tExcel.Artnr = 0 THEN NEXT. FIND FIRST HoReLager WHERE HoRelager.cSort = tExcel.cSort. IF HoReLager.Artnr > 0 AND HoReLager.Artnr <> tExcel.Artnr THEN DO: MESSAGE 'Artikel passt nicht' VIEW-AS ALERT-BOX. NEXT. END. HoReLager.Bestand = tExcel.Bestand. FIND FIRST Artst NO-LOCK WHERE Artst.Firma = cFirma AND Artst.Artnr = tExcel.Artnr NO-ERROR. IF NOT Artst.lVerfall THEN DO: HoReLager.Eingang = TODAY. HoReLager.iStatus = (IF HoReLager.Bestand = 0 THEN 1 ELSE 2). NEXT. END. FIND FIRST LotLager WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id AND LotLager.Verfall = tExcel.dMHD NO-ERROR. IF AVAILABLE LotLager THEN DO: LotLager.Bestand = tExcel.Menge. NEXT. END. CREATE LotLager. ASSIGN LotLager.HoReLager_Id = HoReLager.HoReLager_Id LotLager.Artnr = Artst.Artnr LotLager.Inhalt = Artst.Inhalt LotLager.Jahr = Artst.Jahr LotLager.Eingang = TODAY LotLager.Verfall = tExcel.dMHD LotLager.Lotnummer = '' LotLager.Firma = cFirma LotLager.Barcode = ''. LotLager.Bestand = tExcel.Menge. END.