ImportLager_Neu.p 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. DEFINE VARIABLE iSf AS INTEGER NO-UNDO.
  2. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'.
  3. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  4. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO.
  5. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO.
  6. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO.
  7. DEFINE VARIABLE cSf AS CHARACTER NO-UNDO.
  8. DEF TEMP-TABLE tExcel
  9. FIELD cSort AS CHAR
  10. FIELD iArtnr AS INT
  11. .
  12. DEFINE TEMP-TABLE tHoReLager
  13. FIELD cRegal AS CHARACTER /* Spalte A */
  14. FIELD cPlatz AS CHARACTER /* Spalte B */
  15. FIELD cNiveau AS CHARACTER /* Spalte C */
  16. FIELD iArtnr AS INTEGER /* Spalte D */
  17. FIELD cBez AS CHARACTER /* Spalte E */
  18. FIELD iJahr AS INTEGER /* Spalte F */
  19. FIELD AlkGehalt AS DECIMAL /* Spalte G */
  20. FIELD cGebinde AS CHARACTER /* Spalte H */
  21. FIELD iBestand AS INTEGER /* Spalte I */
  22. FIELD cSf AS CHARACTER
  23. INDEX tHoReLager-k1 IS PRIMARY
  24. cRegal
  25. cPlatz
  26. cNiveau
  27. cSf
  28. .
  29. /* FOR EACH HoReLager: */
  30. /* DELETE HoReLager. */
  31. /* END. */
  32. /* EMPTY TEMP-TABLE tHoReLager. */
  33. /* FOR EACH HoReLager NO-LOCK */
  34. /* WHERE HoReLager.Firma = '1000' */
  35. /* AND HoReLager.Lager = 0: */
  36. /* */
  37. /* CREATE tHoReLager. */
  38. /* BUFFER-COPY HoReLager TO tHoReLager. */
  39. /* END. */
  40. INPUT FROM 'C:\Entwicklung\TEMP\Huber\TankLager_Import.csv' NO-MAP NO-CONVERT.
  41. REPEAT TRANSACTION ON STOP UNDO, LEAVE ON ERROR UNDO, NEXT:
  42. CREATE tExcel.
  43. IMPORT DELIMITER ';' tExcel NO-ERROR.
  44. IF ERROR-STATUS:ERROR THEN NEXT.
  45. END.
  46. INPUT CLOSE.
  47. FOR EACH tExcel
  48. BY tExcel.cSort :
  49. ASSIGN cRegal = ''
  50. cPlatz = ''
  51. cNiveau = ''
  52. cSf = ''.
  53. DO ii = 1 TO NUM-ENTRIES(tExcel.cSort, '-'):
  54. CASE ii:
  55. WHEN 1 THEN cRegal = TRIM(ENTRY(ii, tExcel.cSort, '-')).
  56. WHEN 2 THEN cPlatz = TRIM(ENTRY(ii, tExcel.cSort, '-')).
  57. WHEN 3 THEN cNiveau = TRIM(ENTRY(ii, tExcel.cSort, '-')).
  58. WHEN 4 THEN cSf = TRIM(ENTRY(ii, tExcel.cSort, '-')).
  59. END CASE.
  60. END.
  61. FIND FIRST tHoReLager
  62. WHERE tHoReLager.cRegal = cRegal
  63. AND tHoReLager.cPlatz = cPlatz
  64. AND tHoReLager.cNiveau = cNiveau NO-ERROR.
  65. /* -------------------------------------------------- */
  66. /* Lagerplatz ohne Sf gibt es noch nicht */
  67. /* -------------------------------------------------- */
  68. IF NOT AVAILABLE tHoReLager THEN DO:
  69. CREATE tHoReLager.
  70. ASSIGN tHoReLager.cRegal = cRegal
  71. tHoReLager.cPlatz = cPlatz
  72. tHoReLager.cNiveau = cNiveau
  73. tHoReLager.cSf = cSf
  74. tHoReLager.iArtnr = tExcel.iArtnr.
  75. NEXT.
  76. END.
  77. IF tHoReLager.iArtnr = tExcel.iArtnr THEN NEXT.
  78. /* HoReLager vorhanden / Test auf Sf */
  79. IF tHoReLager.cSf = '' THEN tHoReLager.cSf = '01'.
  80. FIND LAST tHoReLager
  81. WHERE tHoReLager.cRegal = cRegal
  82. AND tHoReLager.cPlatz = cPlatz
  83. AND tHoReLager.cNiveau = cNiveau NO-ERROR.
  84. iSf = INTEGER(tHoReLager.cSf) + 1.
  85. cSf = STRING(iSf,'99').
  86. CREATE tHoReLager.
  87. ASSIGN tHoReLager.cRegal = cRegal
  88. tHoReLager.cPlatz = cPlatz
  89. tHoReLager.cNiveau = cNiveau
  90. tHoReLager.cSf = cSf
  91. tHoReLager.iArtnr = tExcel.iArtnr.
  92. END.
  93. FOR EACH tHoReLager:
  94. CREATE HoReLager.
  95. ASSIGN
  96. HoReLager.Firma = cFirma
  97. HoReLager.Lager = 0
  98. HoReLager.Art = 1
  99. HoReLager.Regal = tHoReLager.cRegal
  100. HoReLager.Niveau = tHoReLager.cNiveau
  101. HoReLager.Platz = tHoReLager.cPlatz
  102. HoReLager.Sf = tHoReLager.cSf
  103. HoReLager.Artnr = tHoReLager.iArtnr
  104. HoReLager.Inhalt = 0
  105. HoReLager.Jahr = 0
  106. HoReLager.Bestand = 0
  107. HoReLager.iStatus = (IF tHoReLager.iArtnr = 0 THEN 0 ELSE 1).
  108. IF HoReLager.Sf = '' THEN HoReLager.cSort = SUBSTITUTE('&1-&2-&3',
  109. HoReLager.Regal,
  110. HoReLager.Platz,
  111. HoReLager.Niveau).
  112. ELSE HoReLager.cSort = SUBSTITUTE('&1-&2-&3-&4',
  113. HoReLager.Regal,
  114. HoReLager.Platz,
  115. HoReLager.Niveau,
  116. HoReLager.Sf).
  117. IF HoReLager.Artnr = 0 THEN NEXT.
  118. FOR EACH ArtLager
  119. WHERE ArtLager.Firma = HoReLager.Firma
  120. AND ArtLager.Lager = HoReLager.Lager
  121. AND ArtLager.Artnr = HoReLager.Artnr
  122. AND ArtLager.Inhalt = HoReLager.Inhalt :
  123. ArtLager.Ort = HoReLager.cSort.
  124. END.
  125. END.