DEFINE VARIABLE iSf AS INTEGER NO-UNDO. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO. DEFINE VARIABLE cSf AS CHARACTER NO-UNDO. DEF TEMP-TABLE tExcel FIELD cSort AS CHAR FIELD iArtnr AS INT . DEFINE TEMP-TABLE tHoReLager FIELD cRegal AS CHARACTER /* Spalte A */ FIELD cPlatz AS CHARACTER /* Spalte B */ FIELD cNiveau AS CHARACTER /* Spalte C */ FIELD iArtnr AS INTEGER /* Spalte D */ FIELD cBez AS CHARACTER /* Spalte E */ FIELD iJahr AS INTEGER /* Spalte F */ FIELD AlkGehalt AS DECIMAL /* Spalte G */ FIELD cGebinde AS CHARACTER /* Spalte H */ FIELD iBestand AS INTEGER /* Spalte I */ FIELD cSf AS CHARACTER INDEX tHoReLager-k1 IS PRIMARY cRegal cPlatz cNiveau cSf . /* FOR EACH HoReLager: */ /* DELETE HoReLager. */ /* END. */ /* EMPTY TEMP-TABLE tHoReLager. */ /* FOR EACH HoReLager NO-LOCK */ /* WHERE HoReLager.Firma = '1000' */ /* AND HoReLager.Lager = 0: */ /* */ /* CREATE tHoReLager. */ /* BUFFER-COPY HoReLager TO tHoReLager. */ /* END. */ INPUT FROM 'C:\Entwicklung\TEMP\Huber\TankLager_Import.csv' NO-MAP NO-CONVERT. REPEAT TRANSACTION ON STOP UNDO, LEAVE ON ERROR UNDO, NEXT: CREATE tExcel. IMPORT DELIMITER ';' tExcel NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. END. INPUT CLOSE. FOR EACH tExcel BY tExcel.cSort : ASSIGN cRegal = '' cPlatz = '' cNiveau = '' cSf = ''. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'): CASE ii: WHEN 1 THEN cRegal = TRIM(ENTRY(ii, tExcel.cSort, '-')). WHEN 2 THEN cPlatz = TRIM(ENTRY(ii, tExcel.cSort, '-')). WHEN 3 THEN cNiveau = TRIM(ENTRY(ii, tExcel.cSort, '-')). WHEN 4 THEN cSf = TRIM(ENTRY(ii, tExcel.cSort, '-')). END CASE. END. FIND FIRST tHoReLager WHERE tHoReLager.cRegal = cRegal AND tHoReLager.cPlatz = cPlatz AND tHoReLager.cNiveau = cNiveau NO-ERROR. /* -------------------------------------------------- */ /* Lagerplatz ohne Sf gibt es noch nicht */ /* -------------------------------------------------- */ IF NOT AVAILABLE tHoReLager THEN DO: CREATE tHoReLager. ASSIGN tHoReLager.cRegal = cRegal tHoReLager.cPlatz = cPlatz tHoReLager.cNiveau = cNiveau tHoReLager.cSf = cSf tHoReLager.iArtnr = tExcel.iArtnr. NEXT. END. IF tHoReLager.iArtnr = tExcel.iArtnr THEN NEXT. /* HoReLager vorhanden / Test auf Sf */ IF tHoReLager.cSf = '' THEN tHoReLager.cSf = '01'. FIND LAST tHoReLager WHERE tHoReLager.cRegal = cRegal AND tHoReLager.cPlatz = cPlatz AND tHoReLager.cNiveau = cNiveau NO-ERROR. iSf = INTEGER(tHoReLager.cSf) + 1. cSf = STRING(iSf,'99'). CREATE tHoReLager. ASSIGN tHoReLager.cRegal = cRegal tHoReLager.cPlatz = cPlatz tHoReLager.cNiveau = cNiveau tHoReLager.cSf = cSf tHoReLager.iArtnr = tExcel.iArtnr. END. FOR EACH tHoReLager: CREATE HoReLager. ASSIGN HoReLager.Firma = cFirma HoReLager.Lager = 0 HoReLager.Art = 1 HoReLager.Regal = tHoReLager.cRegal HoReLager.Niveau = tHoReLager.cNiveau HoReLager.Platz = tHoReLager.cPlatz HoReLager.Sf = tHoReLager.cSf HoReLager.Artnr = tHoReLager.iArtnr HoReLager.Inhalt = 0 HoReLager.Jahr = 0 HoReLager.Bestand = 0 HoReLager.iStatus = (IF tHoReLager.iArtnr = 0 THEN 0 ELSE 1). IF HoReLager.Sf = '' THEN HoReLager.cSort = SUBSTITUTE('&1-&2-&3', HoReLager.Regal, HoReLager.Platz, HoReLager.Niveau). ELSE HoReLager.cSort = SUBSTITUTE('&1-&2-&3-&4', HoReLager.Regal, HoReLager.Platz, HoReLager.Niveau, HoReLager.Sf). IF HoReLager.Artnr = 0 THEN NEXT. FOR EACH ArtLager WHERE ArtLager.Firma = HoReLager.Firma AND ArtLager.Lager = HoReLager.Lager AND ArtLager.Artnr = HoReLager.Artnr AND ArtLager.Inhalt = HoReLager.Inhalt : ArtLager.Ort = HoReLager.cSort. END. END.