recover-aus_audit_aufze_geloescht.p 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. DEF VAR dvonDatum AS DATETIME-TZ NO-UNDO.
  2. DEF VAR dbisDatum AS DATETIME-TZ NO-UNDO.
  3. DEF VAR cKey AS CHAR NO-UNDO.
  4. DEF VAR cString AS CHAR NO-UNDO.
  5. DEF VAR cIndex AS CHAR NO-UNDO.
  6. DEF VAR cFeld AS CHAR NO-UNDO.
  7. DEF VAR iFeld AS INT NO-UNDO.
  8. DEF VAR cTyp AS CHAR NO-UNDO.
  9. DEF VAR cAlt AS CHAR NO-UNDO.
  10. DEF VAR cNeu AS CHAR NO-UNDO.
  11. DEF VAR iLang AS INT NO-UNDO.
  12. DEF VAR i1 AS INT NO-UNDO.
  13. DEF VAR i2 AS INT NO-UNDO.
  14. DEF VAR i3 AS INT NO-UNDO.
  15. DEF VAR cFirma AS CHAR NO-UNDO.
  16. DEF VAR D1Firma AS CHAR INIT '1010' NO-UNDO.
  17. DEF VAR iAufnr AS INT NO-UNDO.
  18. DEF VAR iPos AS INT NO-UNDO.
  19. DEF VAR cDateTime AS CHAR NO-UNDO.
  20. DEF VAR dDatum AS DATE NO-UNDO.
  21. DEF VAR dTime AS INT NO-UNDO.
  22. DEF VAR iMili AS INT NO-UNDO.
  23. DEF VAR iHH AS INT NO-UNDO.
  24. DEF VAR iMM AS INT NO-UNDO.
  25. DEF VAR iSS AS INT NO-UNDO.
  26. DEF VAR cExtent AS CHAR NO-UNDO.
  27. DEF VAR lNeu AS LOG NO-UNDO.
  28. DEF VAR cWert AS CHAR NO-UNDO.
  29. DEF VAR hAufze AS HANDLE NO-UNDO.
  30. DEF VAR hFeld AS HANDLE NO-UNDO.
  31. DEF VAR iExtent AS INT NO-UNDO.
  32. DEF TEMP-TABLE tAufnr
  33. FIELD Aufnr AS INT.
  34. DEF TEMP-TABLE tAufze LIKE Aufze
  35. FIELD lAktiv AS LOG
  36. FIELD aDate AS DATE
  37. FIELD aTime AS INT
  38. FIELD aMili AS INT
  39. INDEX tAufze-k1 IS PRIMARY
  40. Firma
  41. Aufnr
  42. .
  43. cKey = 'PUB.Aufze' + CHR(06) + '1000'.
  44. dVonDatum = DATETIME('12/07/2021 08:00:00.000+02:00').
  45. dBisDatum = DATETIME('12/07/2021 12:00:00.000+02:00').
  46. hAufze = TEMP-TABLE tAufze:DEFAULT-BUFFER-HANDLE.
  47. FOR EACH _aud-audit-data NO-LOCK USE-INDEX _Audit-time
  48. WHERE _aud-audit-data._Event-context BEGINS cKey
  49. AND _aud-audit-data._audit-date-time >= dVonDatum
  50. AND _aud-audit-data._audit-date-time <= dBisDatum
  51. AND _aud-audit-data._Event-id = 5102 /* Loeschen */
  52. AND _aud-audit-data._user-id = 'adminadp' :
  53. cString = _aud-audit-data._Event-context.
  54. cString = ENTRY(2, cString, CHR(06)).
  55. DO i1 = 1 TO NUM-ENTRIES(cString, CHR(07)):
  56. CASE i1:
  57. WHEN 1 THEN cFirma = ENTRY(i1, cString, CHR(07)).
  58. WHEN 2 THEN iAufnr = INTEGER(ENTRY(i1, cString, CHR(07))).
  59. WHEN 3 THEN iPos = INTEGER(ENTRY(i1, cString, CHR(07))).
  60. END CASE.
  61. END.
  62. cDateTime = STRING(_aud-audit-data._Audit-date-time).
  63. dDatum = DATE (_aud-audit-data._Audit-date-time).
  64. iHH = INTEGER(SUBSTRING(cDateTime,12,02)).
  65. iMM = INTEGER(SUBSTRING(cDateTime,15,02)).
  66. iSS = INTEGER(SUBSTRING(cDateTime,18,02)).
  67. iMili = INTEGER(SUBSTRING(cDateTime,21,03)).
  68. dTime = (iHH * 3600) + (iMM * 60) + iSS.
  69. FIND FIRST tAufze
  70. WHERE tAufze.Firma = cFirma
  71. AND tAufze.Aufnr = iAufnr
  72. AND tAufze.Pos = iPos NO-ERROR.
  73. IF NOT AVAILABLE tAufze THEN DO:
  74. CREATE tAufze.
  75. ASSIGN tAufze.Firma = cFirma
  76. tAufze.Aufnr = iAufnr
  77. tAufze.Pos = iPos.
  78. END.
  79. ASSIGN tAufze.aDate = dDatum
  80. tAufze.aTime = dTime
  81. tAufze.aMili = iMili
  82. tAufze.lAktiv = TRUE.
  83. DO i1 = 1 TO NUM-ENTRIES(_aud-audit-data._Event-detail, CHR(07)):
  84. cString = ENTRY(i1, _aud-audit-data._Event-detail, CHR(07)).
  85. cFeld = ENTRY(1, cString, CHR(06)) NO-ERROR.
  86. cTyp = ENTRY(2, cString, CHR(06)) NO-ERROR.
  87. cAlt = ENTRY(3, cString, CHR(06)) NO-ERROR.
  88. cNeu = ENTRY(4, cString, CHR(06)) NO-ERROR.
  89. cWert = cAlt.
  90. CASE cFeld:
  91. WHEN 'Firma' THEN NEXT.
  92. WHEN 'Aufnr' THEN NEXT.
  93. WHEN 'Pos' THEN NEXT.
  94. END CASE.
  95. hFeld = hAufze:BUFFER-FIELD(cFeld).
  96. i3 = 0.
  97. IF cWert <> ? AND
  98. INDEX(cWert, ']:') > 0 THEN DO:
  99. cString = cWert.
  100. DO i2 = 1 TO NUM-ENTRIES(cString, CHR(08)):
  101. cWert = ENTRY(i2, cString, CHR(08)).
  102. cExtent = ENTRY(1 , cWert , ':').
  103. cWert = ENTRY(2 , cWert , ':').
  104. /*
  105. cNeu = ENTRY(2, cNeu, ':').
  106. */
  107. cExtent = REPLACE(cExtent, 'E', '').
  108. cExtent = REPLACE(cExtent, '[', '').
  109. cExtent = REPLACE(cExtent, ']', '').
  110. i3 = INTEGER(cExtent).
  111. CASE cTyp:
  112. WHEN '1' THEN hFeld:BUFFER-VALUE(i3) = cWert NO-ERROR.
  113. WHEN '2' THEN DO:
  114. IF cWert = ? THEN hFeld:BUFFER-VALUE(i3) = ?.
  115. ELSE DO:
  116. dDatum = DATE(INTEGER(ENTRY(1, cWert, '/')),
  117. INTEGER(ENTRY(2, cWert, '/')),
  118. INTEGER(ENTRY(3, cWert, '/'))).
  119. hFeld:BUFFER-VALUE(i3) = dDatum NO-ERROR.
  120. END.
  121. END.
  122. WHEN '3' THEN hFeld:BUFFER-VALUE(i3) = (IF cWert = '1' THEN TRUE ELSE FALSE) NO-ERROR.
  123. WHEN '4' THEN hFeld:BUFFER-VALUE(i3) = INTEGER(cWert) NO-ERROR.
  124. WHEN '5' THEN hFeld:BUFFER-VALUE(i3) = DECIMAL(cWert) NO-ERROR.
  125. OTHERWISE hFeld:BUFFER-VALUE(i3) = cWert NO-ERROR.
  126. END CASE.
  127. END.
  128. NEXT.
  129. END.
  130. CASE cTyp:
  131. WHEN '1' THEN hFeld:BUFFER-VALUE(i3) = cWert NO-ERROR.
  132. WHEN '2' THEN DO:
  133. IF cWert = ? THEN hFeld:BUFFER-VALUE(i3) = ?.
  134. ELSE DO:
  135. dDatum = DATE(INTEGER(ENTRY(1, cWert, '/')),
  136. INTEGER(ENTRY(2, cWert, '/')),
  137. INTEGER(ENTRY(3, cWert, '/'))).
  138. hFeld:BUFFER-VALUE(i3) = dDatum NO-ERROR.
  139. END.
  140. END.
  141. WHEN '3' THEN hFeld:BUFFER-VALUE(i3) = (IF cWert = '1' THEN TRUE ELSE FALSE) NO-ERROR.
  142. WHEN '4' THEN hFeld:BUFFER-VALUE(i3) = INTEGER(cWert) NO-ERROR.
  143. WHEN '5' THEN hFeld:BUFFER-VALUE(i3) = DECIMAL(cWert) NO-ERROR.
  144. OTHERWISE hFeld:BUFFER-VALUE(i3) = cWert NO-ERROR.
  145. END CASE.
  146. END.
  147. END.
  148. /*
  149. DISABLE TRIGGERS FOR LOAD OF Aufze.
  150. FOR EACH tAufze:
  151. FIND Aufze OF tAufze NO-ERROR.
  152. IF AVAILABLE Aufze THEN NEXT.
  153. CREATE Aufze.
  154. BUFFER-COPY tAufze TO Aufze.
  155. END.
  156. */
  157. OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\Aufze_Recover.d' NO-MAP NO-CONVERT.
  158. FOR EACH tAufze:
  159. EXPORT tAufze.
  160. END.
  161. OUTPUT CLOSE.