MHDAbExcelEinlesen.p 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. DEF VAR ii AS INT NO-UNDO.
  2. DEF VAR iMenge AS INT NO-UNDO.
  3. DEF VAR dDatum AS DATE NO-UNDO.
  4. DEF VAR cRegal AS CHAR NO-UNDO.
  5. DEF VAR cPlatz AS CHAR NO-UNDO.
  6. DEF VAR cNiveau AS CHAR NO-UNDO.
  7. DEF VAR cSf AS CHAR NO-UNDO.
  8. DEF VAR cFirma AS CHAR NO-UNDO INIT '1000'.
  9. DEF VAR iLager AS INT NO-UNDO INIT 0.
  10. DEF TEMP-TABLE tExcel
  11. FIELD cSort AS CHAR
  12. FIELD Menge AS INT
  13. FIELD MHD AS CHAR
  14. FIELD iStatus AS INT
  15. FIELD Artnr AS INT
  16. FIELD Bestand AS INT
  17. FIELD Dummy AS CHAR EXTENT 5
  18. FIELD dMHD AS DATE
  19. .
  20. INPUT FROM 'C:\Entwicklung\TEMP\Huber\SirupeAnLager.csv' NO-MAP NO-CONVERT.
  21. REPEAT TRANSACTION ON STOP UNDO, LEAVE:
  22. CREATE tExcel.
  23. IMPORT DELIMITER ';' tExcel.
  24. END.
  25. INPUT CLOSE.
  26. FOR EACH tExcel:
  27. IF tExcel.cSort = '' THEN DO:
  28. DELETE tExcel.
  29. NEXT.
  30. END.
  31. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'):
  32. CASE ii:
  33. WHEN 1 THEN cRegal = ENTRY(ii, tExcel.cSort, '-').
  34. WHEN 2 THEN cPlatz = ENTRY(ii, tExcel.cSort, '-').
  35. WHEN 3 THEN cNiveau = ENTRY(ii, tExcel.cSort, '-').
  36. WHEN 4 THEN cSf = ENTRY(ii, tExcel.cSort, '-').
  37. END CASE.
  38. END.
  39. DO WHILE LENGTH(cPlatz) < 3:
  40. cPlatz = '0' + cPlatz.
  41. END.
  42. DO WHILE LENGTH(cNiveau) < 2:
  43. cNiveau = '0' + cNiveau.
  44. END.
  45. DO WHILE cSF <> '' AND LENGTH(cSf) < 2:
  46. cSf = '0' + cSf.
  47. END.
  48. tExcel.cSort = SUBSTITUTE('&1-&2-&3', cRegal, cPlatz, cNiveau).
  49. IF cSF <> '' THEN tExcel.cSort = tExcel.cSort + '-' + cSf.
  50. IF tExcel.Artnr = 0 THEN NEXT.
  51. IF tExcel.Menge = 0 THEN tExcel.Menge = Bestand.
  52. IF tExcel.MHD = '' THEN NEXT.
  53. ii = INDEX(tExcel.MHD, 'x').
  54. IF ii = 0 THEN DO:
  55. tExcel.dMHD = DATE(tExcel.MHD) NO-ERROR.
  56. IF ERROR-STATUS:ERROR THEN DO:
  57. MESSAGE tExcel.MHD
  58. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  59. NEXT.
  60. END.
  61. NEXT.
  62. END.
  63. iMenge = INTEGER(TRIM(SUBSTRING(tExcel.MHD,01,ii - 1))).
  64. dDatum = DATE (TRIM(SUBSTRING(tExcel.MHD,ii + 1))) NO-ERROR.
  65. ASSIGN tExcel.Menge = iMenge
  66. tExcel.dMHD = dDatum.
  67. END.
  68. FOR EACH tExcel:
  69. FIND FIRST HoReLager NO-LOCK
  70. WHERE HoReLager.Firma = '1000'
  71. AND HoReLager.cSort = tExcel.cSort NO-ERROR.
  72. IF AVAILABLE HoReLager THEN NEXT.
  73. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'):
  74. CASE ii:
  75. WHEN 1 THEN cRegal = ENTRY(ii, tExcel.cSort, '-').
  76. WHEN 2 THEN cPlatz = ENTRY(ii, tExcel.cSort, '-').
  77. WHEN 3 THEN cNiveau = ENTRY(ii, tExcel.cSort, '-').
  78. WHEN 4 THEN cSf = ENTRY(ii, tExcel.cSort, '-').
  79. END CASE.
  80. END.
  81. CREATE HoReLager.
  82. ASSIGN
  83. HoReLager.Firma = cFirma
  84. HoReLager.Lager = iLager
  85. HoReLager.Art = 1
  86. HoReLager.Regal = cRegal
  87. HoReLager.Niveau = cNiveau
  88. HoReLager.Platz = cPlatz
  89. HoReLager.Sf = cSf
  90. HoReLager.Artnr = 0
  91. HoReLager.Inhalt = 0
  92. HoReLager.Jahr = 0
  93. HoReLager.Bestand = 0
  94. HoReLager.iStatus = (IF HoReLager.Artnr = 0 THEN 0 ELSE 1)
  95. HoReLager.cSort = tExcel.cSort.
  96. END.
  97. FOR EACH tExcel:
  98. IF tExcel.cSort = '' THEN NEXT.
  99. IF tExcel.Artnr = 0 THEN NEXT.
  100. FIND FIRST HoReLager WHERE HoRelager.cSort = tExcel.cSort.
  101. IF HoReLager.Artnr > 0 AND
  102. HoReLager.Artnr <> tExcel.Artnr THEN DO:
  103. MESSAGE 'Artikel passt nicht' VIEW-AS ALERT-BOX.
  104. NEXT.
  105. END.
  106. HoReLager.Bestand = tExcel.Bestand.
  107. FIND FIRST Artst NO-LOCK
  108. WHERE Artst.Firma = cFirma
  109. AND Artst.Artnr = tExcel.Artnr NO-ERROR.
  110. IF NOT Artst.lVerfall THEN DO:
  111. HoReLager.Eingang = TODAY.
  112. HoReLager.iStatus = (IF HoReLager.Bestand = 0 THEN 1 ELSE 2).
  113. NEXT.
  114. END.
  115. FIND FIRST LotLager
  116. WHERE LotLager.HoReLager_Id = HoReLager.HoReLager_Id
  117. AND LotLager.Verfall = tExcel.dMHD NO-ERROR.
  118. IF AVAILABLE LotLager THEN DO:
  119. LotLager.Bestand = tExcel.Menge.
  120. NEXT.
  121. END.
  122. CREATE LotLager.
  123. ASSIGN
  124. LotLager.HoReLager_Id = HoReLager.HoReLager_Id
  125. LotLager.Artnr = Artst.Artnr
  126. LotLager.Inhalt = Artst.Inhalt
  127. LotLager.Jahr = Artst.Jahr
  128. LotLager.Eingang = TODAY
  129. LotLager.Verfall = tExcel.dMHD
  130. LotLager.Lotnummer = ''
  131. LotLager.Firma = cFirma
  132. LotLager.Barcode = ''.
  133. LotLager.Bestand = tExcel.Menge.
  134. END.