ImportLager_1.p 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. DEF VAR ii AS INT.
  2. DEFINE VARIABLE iSf AS INTEGER NO-UNDO.
  3. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO.
  4. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'.
  5. DEFINE TEMP-TABLE tHoReLager LIKE HoReLager
  6. FIELD lBenutzt AS LOG
  7. INDEX tHoReLager-k1 IS PRIMARY
  8. Firma
  9. Art
  10. Lager
  11. Regal
  12. Platz
  13. Niveau
  14. Sf
  15. INDEX tHoReLager-k3
  16. Firma
  17. Art
  18. Lager
  19. Artnr
  20. Inhalt
  21. Jahr
  22. .
  23. DEFINE TEMP-TABLE tExcel
  24. FIELD cRegal AS CHARACTER /* Spalte A */
  25. FIELD cPlatz AS CHARACTER /* Spalte B */
  26. FIELD cNiveau AS CHARACTER /* Spalte C */
  27. FIELD iArtnr AS INTEGER /* Spalte D */
  28. FIELD cBez AS CHARACTER /* Spalte E */
  29. FIELD iJahr AS INTEGER /* Spalte F */
  30. FIELD AlkGehalt AS CHARACTER /* Spalte G */
  31. FIELD cGebinde AS CHARACTER /* Spalte H */
  32. FIELD iBestand AS CHARACTER /* Spalte I */
  33. FIELD cSf AS CHARACTER
  34. INDEX tExcel-k1 IS PRIMARY
  35. cRegal
  36. cPlatz
  37. cNiveau
  38. cSf
  39. .
  40. /* FOR EACH HoReLager: */
  41. /* DELETE HoReLager. */
  42. /* END. */
  43. DISABLE TRIGGERS FOR LOAD OF ArtLager.
  44. FOR EACH HoReLager NO-LOCK
  45. WHERE HoReLager.Firma = cFirma:
  46. CREATE tHoReLager.
  47. BUFFER-COPY HoReLager TO tHoReLager
  48. ASSIGN tHoReLager.lBenutzt = FALSE
  49. tHoReLager.Sf = ''
  50. tHoReLager.iStatus = 0.
  51. IF HoReLager.Artnr = 0 THEN NEXT.
  52. ASSIGN tHoReLager.iStatus = 1
  53. tHoReLager.lBenutzt = TRUE.
  54. FIND FIRST ArtLager OF HoReLager NO-ERROR.
  55. IF AVAILABLE ArtLager THEN ArtLager.Ort = ''.
  56. END.
  57. INPUT FROM 'C:\Entwicklung\TEMP\Huber\Lagerliste_20201229_1.csv' NO-MAP NO-CONVERT.
  58. REPEAT TRANSACTION ON STOP UNDO, LEAVE:
  59. CREATE tExcel.
  60. IMPORT DELIMITER ';' tExcel.
  61. ii = ii + 1.
  62. END.
  63. INPUT CLOSE.
  64. MESSAGE ii
  65. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  66. FOR EACH tExcel
  67. WHERE tExcel.cRegal <> ''
  68. AND tExcel.cNiveau <> ''
  69. AND tExcel.cPlatz <> ''
  70. AND tExcel.iArtnr > 0
  71. :
  72. /* lFound = FALSE. */
  73. /* FOR EACH tHoReLager USE-INDEX tHoReLager-k3 */
  74. /* WHERE tHoReLager.Firma = cFirma */
  75. /* AND tHoReLager.Art = 1 */
  76. /* AND tHoReLager.Lager = 0 */
  77. /* AND tHoReLager.Artnr = tExcel.iArtnr */
  78. /* AND tHoReLager.Regal = tExcel.cRegal */
  79. /* AND tHoReLager.Platz = tExcel.cPlatz */
  80. /* AND tHoReLager.Niveau = tExcel.cNiveau : */
  81. /* lFound = TRUE. */
  82. /* LEAVE. */
  83. /* END. */
  84. /* IF lFound THEN DO: /* Artikel an diesem Platz bereits vorhanden */ */
  85. /* tHoReLager.lBenutzt = TRUE. */
  86. /* NEXT. */
  87. /* END. */
  88. /* */
  89. /* FIND FIRST tHoReLager USE-INDEX tHoReLager-k3 */
  90. /* WHERE tHoReLager.Firma = cFirma */
  91. /* AND tHoReLager.Art = 1 */
  92. /* AND tHoReLager.Lager = 0 */
  93. /* AND tHoReLager.Artnr = tExcel.iArtnr NO-ERROR. */
  94. /* IF AVAILABLE tHoReLager THEN DO: /* Artikel an einem anderen Platz vorhanden */ */
  95. /* DELETE tHoReLager. */
  96. /* ii = ii + 1. */
  97. /* END. */
  98. CREATE tHoReLager.
  99. ASSIGN tHoReLager.Firma = cFirma
  100. tHoReLager.Lager = 0
  101. tHoReLager.Art = 1
  102. tHoReLager.Regal = tExcel.cRegal
  103. tHoReLager.Platz = tExcel.cPlatz
  104. tHoReLager.Niveau = tExcel.cNiveau
  105. tHoReLager.Artnr = tExcel.iArtnr
  106. tHoReLager.Jahr = tExcel.iJahr
  107. tHoReLager.iStatus = (IF tExcel.iArtnr = 0 THEN 0 ELSE 1)
  108. tHoReLager.lBenutzt = TRUE.
  109. END.
  110. FOR EACH HoReLager
  111. WHERE HoReLager.Firma = cFirma
  112. AND HoReLager.Art = 1
  113. AND HoReLager.Lager = 0:
  114. DELETE HoReLager.
  115. END.
  116. FOR EACH tHoReLager
  117. BREAK BY tHoReLager.Regal
  118. BY tHoReLager.Platz
  119. BY tHoReLager.Niveau
  120. BY tHoReLager.Artnr:
  121. IF FIRST-OF ( tHoReLager.Niveau ) AND
  122. LAST-OF ( tHoReLager.Niveau ) THEN DO:
  123. CREATE HoReLager.
  124. BUFFER-COPY tHoReLager
  125. EXCEPT Sf HoReLager_Id
  126. TO HoReLager
  127. ASSIGN HoReLager.Sf = ''.
  128. NEXT.
  129. END.
  130. IF FIRST-OF ( tHoReLager.Niveau ) THEN iSf = 0.
  131. iSf = iSf + 1.
  132. CREATE HoReLager.
  133. BUFFER-COPY tHoReLager
  134. EXCEPT Sf HoReLager_Id
  135. TO HoReLager
  136. ASSIGN HoReLager.Sf = STRING(iSf,'99').
  137. END.
  138. FOR EACH HoReLager
  139. WHERE HoReLager.Firma = cFirma
  140. AND HoReLager.Art = 1
  141. AND HoReLager.Lager = 0:
  142. HoReLager.cSort = SUBSTITUTE('&1-&2-&3', HoReLager.Regal, HoReLager.Platz, HoReLager.Niveau).
  143. IF HoReLager.Sf <> '' THEN HoReLager.cSort = HoReLager.cSort + '-' + HoReLager.Sf.
  144. IF HoReLager.Artnr = 0 THEN NEXT.
  145. FOR EACH ArtLager
  146. WHERE ArtLager.Firma = cFirma
  147. AND ArtLager.Lager = HoReLager.Lager
  148. AND ArtLager.Artnr = HoReLager.Artnr:
  149. ArtLager.Ort = HoReLager.cSort.
  150. END.
  151. END.