recover-aus_audit_aufgebko_geloescht.p 7.6 KB

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