recover-aus_audit_beseing_geloescht.p 7.4 KB

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