&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME w-audit-data {adecomm/appserv.i} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS w-audit-data /*------------------------------------------------------------------------ File: Description: from cntnrwin.w - ADM SmartWindow Template Input Parameters: Output Parameters: History: New V9 Version - January 15, 1998 ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AB. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ { incl/windefinition.i } DEF VAR qKopf AS HANDLE NO-UNDO. DEF VAR qZeile AS HANDLE NO-UNDO. DEF VAR bKopf AS HANDLE NO-UNDO. DEF VAR bZeile AS HANDLE NO-UNDO. DEF VAR cKey AS CHAR NO-UNDO. DEF TEMP-TABLE taud_audit-data LIKE _aud-audit-data. DEF TEMP-TABLE tKopf FIELD cKey AS CHAR FIELD cUser AS CHAR FORMAT "x(30)" LABEL 'Benutzer' FIELD cDate AS CHAR FORMAT "x(35)" LABEL 'Datum/Zeit' FIELD cMutArt AS CHAR FORMAT "x(04)" LABEL 'Art' FIELD tZeit AS DATETIME FIELD cSort AS CHAR FIELD cxKey AS CHAR FORMAT "x(80)" LABEL 'alle Schlüsselfelder' INDEX tKopf-k1 IS PRIMARY cSort DESCENDING . DEF TEMP-TABLE tZeile FIELD cKey AS CHAR FIELD Art AS CHAR FIELD cFeld AS CHAR FORMAT "x(20)" LABEL 'Feld' FIELD cAlt AS CHAR FORMAT "x(40)" LABEL 'alter Inhalt' FIELD cNeu AS CHAR FORMAT "x(40)" LABEL 'neuer Inhalt' INDEX tZeile-k1 IS PRIMARY cKey . {src/adm2/widgetprto.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartWindow &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER WINDOW &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME fMain &Scoped-define BROWSE-NAME Br_Kopf /* Definitions for FRAME fMain */ /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-1 CB_Tabellen F_Firma CB_Keyfelder ~ F_Key F_vonDatum F_bisDatum btn_Start btn_Ende Br_Kopf Br_Zeile &Scoped-Define DISPLAYED-OBJECTS CB_Tabellen F_Firma CB_Keyfelder F_Key ~ F_vonDatum F_bisDatum /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 CB_Tabellen F_Firma CB_Keyfelder F_Key F_vonDatum ~ F_bisDatum /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getProgname w-audit-data FUNCTION getProgname RETURNS CHARACTER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD setAuditUser w-audit-data FUNCTION setAuditUser RETURNS LOGICAL (ipcUser AS CHARACTER) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR w-audit-data AS WIDGET-HANDLE NO-UNDO. /* Menu Definitions */ DEFINE MENU POPUP-MENU-Br_Kopf MENU-ITEM X_EXPORT_EXCEL LABEL "Export in Excel". /* Definitions of the field level widgets */ DEFINE BUTTON btn_Ende LABEL "Ende" SIZE 15 BY 1.14. DEFINE BUTTON btn_Start LABEL "Start" SIZE 15 BY 1.14. DEFINE VARIABLE CB_Keyfelder AS CHARACTER FORMAT "X(256)":U LABEL "Schlüsselfelder" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 36.8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Tabellen AS CHARACTER FORMAT "X(256)":U LABEL "Tabelle" VIEW-AS COMBO-BOX SORT INNER-LINES 5 LIST-ITEMS "Item 1" DROP-DOWN-LIST SIZE 36.8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_bisDatum AS DATETIME-TZ FORMAT "99.99.9999":U LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 20 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Firma AS CHARACTER FORMAT "X(256)":U LABEL "Firma" VIEW-AS FILL-IN NATIVE SIZE 10 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Key AS CHARACTER FORMAT "X(256)":U LABEL "Schlüssel" VIEW-AS FILL-IN NATIVE SIZE 20 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_vonDatum AS DATETIME-TZ FORMAT "99.99.9999":U LABEL "von - bis Datum" VIEW-AS FILL-IN NATIVE SIZE 20 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-1 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 120 BY 27.62. /* Browse definitions */ DEFINE BROWSE Br_Kopf &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Kopf w-audit-data _STRUCTURED /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 116 BY 7.62. DEFINE BROWSE Br_Zeile &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Zeile w-audit-data _STRUCTURED /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 116 BY 10.48. /* ************************ Frame Definitions *********************** */ DEFINE FRAME fMain CB_Tabellen AT ROW 2 COL 18 COLON-ALIGNED WIDGET-ID 2 F_Firma AT ROW 3 COL 18 COLON-ALIGNED WIDGET-ID 4 CB_Keyfelder AT ROW 4 COL 18 COLON-ALIGNED WIDGET-ID 18 F_Key AT ROW 5 COL 18 COLON-ALIGNED WIDGET-ID 6 F_vonDatum AT ROW 6 COL 18 COLON-ALIGNED WIDGET-ID 8 F_bisDatum AT ROW 6 COL 41 COLON-ALIGNED WIDGET-ID 10 btn_Start AT ROW 8 COL 20 WIDGET-ID 12 btn_Ende AT ROW 8 COL 43 WIDGET-ID 14 Br_Kopf AT ROW 10.05 COL 5 WIDGET-ID 200 Br_Zeile AT ROW 18.14 COL 5 WIDGET-ID 300 RECT-1 AT ROW 1.48 COL 3 WIDGET-ID 16 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 124 BY 28.57 WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartWindow Allow: Basic,Browse,DB-Fields,Query,Smart,Window Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target,Filter-target,Filter-Source Other Settings: COMPILE APPSERVER */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW w-audit-data ASSIGN HIDDEN = YES TITLE = "Verfolgung von Datenbankmutationen" HEIGHT = 28.57 WIDTH = 124 MAX-HEIGHT = 57.14 MAX-WIDTH = 320 VIRTUAL-HEIGHT = 57.14 VIRTUAL-WIDTH = 320 RESIZE = NO SCROLL-BARS = NO STATUS-AREA = NO BGCOLOR = ? FGCOLOR = ? THREE-D = YES MESSAGE-AREA = NO SENSITIVE = YES. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. &IF '{&WINDOW-SYSTEM}' NE 'TTY' &THEN IF NOT w-audit-data:LOAD-ICON("grafik/appl.ico":U) THEN MESSAGE "Unable to load icon: grafik/appl.ico" VIEW-AS ALERT-BOX WARNING BUTTONS OK. &ENDIF /* END WINDOW DEFINITION */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB w-audit-data /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW w-audit-data VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME fMain FRAME-NAME */ /* BROWSE-TAB Br_Kopf btn_Ende fMain */ /* BROWSE-TAB Br_Zeile Br_Kopf fMain */ ASSIGN Br_Kopf:POPUP-MENU IN FRAME fMain = MENU POPUP-MENU-Br_Kopf:HANDLE Br_Kopf:COLUMN-RESIZABLE IN FRAME fMain = TRUE. ASSIGN Br_Zeile:COLUMN-RESIZABLE IN FRAME fMain = TRUE. /* SETTINGS FOR COMBO-BOX CB_Keyfelder IN FRAME fMain 6 */ /* SETTINGS FOR COMBO-BOX CB_Tabellen IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_bisDatum IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_Firma IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_Key IN FRAME fMain 6 */ /* SETTINGS FOR FILL-IN F_vonDatum IN FRAME fMain 6 */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(w-audit-data) THEN w-audit-data:HIDDEN = YES. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Kopf /* Query rebuild information for BROWSE Br_Kopf _Query is NOT OPENED */ /* BROWSE Br_Kopf */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Zeile /* Query rebuild information for BROWSE Br_Zeile _Query is NOT OPENED */ /* BROWSE Br_Zeile */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME w-audit-data &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL w-audit-data w-audit-data ON END-ERROR OF w-audit-data /* Verfolgung von Datenbankmutationen */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: /* This case occurs when the user presses the "Esc" key. In a persistently run window, just ignore this. If we did not, the application would exit. */ IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. /* ****************************** */ DO WITH FRAME {&FRAME-NAME}: APPLY 'ENTRY' TO CB_Tabellen. END. RETURN NO-APPLY. /* ****************************** */ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL w-audit-data w-audit-data ON WINDOW-CLOSE OF w-audit-data /* Verfolgung von Datenbankmutationen */ DO: /* This ADM code must be left here in order for the SmartWindow and its descendents to terminate properly on exit. */ DO WITH FRAME {&FRAME-NAME}: APPLY 'ENTRY' TO CB_Tabellen. END. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME Br_Kopf &Scoped-define SELF-NAME Br_Kopf &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Kopf w-audit-data ON END-ERROR OF Br_Kopf IN FRAME fMain DO: APPLY 'ENTRY' TO F_Key. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Kopf w-audit-data ON ENDKEY OF Br_Kopf IN FRAME fMain DO: APPLY 'ENTRY' TO F_Key. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Kopf w-audit-data ON VALUE-CHANGED OF Br_Kopf IN FRAME fMain DO: DEF VAR cWhere AS CHAR NO-UNDO. cWhere = SUBSTITUTE('FOR EACH tZeile NO-LOCK USE-INDEX tZeile-k1 WHERE tZeile.cKey = "&1"', tKopf.cKey). qZeile:QUERY-PREPARE(cWhere). qZeile:QUERY-OPEN(). APPLY 'ENTRY' TO Br_Kopf. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME Br_Zeile &Scoped-define SELF-NAME Br_Zeile &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Zeile w-audit-data ON END-ERROR OF Br_Zeile IN FRAME fMain DO: APPLY 'ENTRY' TO Br_Kopf. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Zeile w-audit-data ON ENDKEY OF Br_Zeile IN FRAME fMain DO: APPLY 'ENTRY' TO Br_Kopf. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btn_Ende &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btn_Ende w-audit-data ON CHOOSE OF btn_Ende IN FRAME fMain /* Ende */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btn_Start &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btn_Start w-audit-data ON CHOOSE OF btn_Start IN FRAME fMain /* Start */ DO: RUN VERARBEITUNG. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Keyfelder &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Keyfelder w-audit-data ON RETURN OF CB_Keyfelder IN FRAME fMain /* Schlüsselfelder */ DO: APPLY 'TAB' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Tabellen &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Tabellen w-audit-data ON RETURN OF CB_Tabellen IN FRAME fMain /* Tabelle */ DO: APPLY 'TAB' TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Tabellen w-audit-data ON VALUE-CHANGED OF CB_Tabellen IN FRAME fMain /* Tabelle */ DO: RUN COMBO_KEYFELDER ( SELF:SCREEN-VALUE ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME X_EXPORT_EXCEL &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL X_EXPORT_EXCEL w-audit-data ON CHOOSE OF MENU-ITEM X_EXPORT_EXCEL /* Export in Excel */ DO: RUN EXPORT_IN_EXCEL. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME Br_Kopf &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK w-audit-data /* *************************** Main Block *************************** */ DEFINE VARIABLE hClientPrincipal AS HANDLE NO-UNDO. DEFINE VARIABLE cLDBName AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. MaxSeite = 1. AktSeite = 1. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR. IF SAktiv = ? THEN SAktiv = FALSE. IF SAktiv THEN DO: AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR. FBFirma = DYNAMIC-FUNCTION('getFBMandant':U) NO-ERROR. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR. Progname = DYNAMIC-FUNCTION('makeProgname':U, INPUT THIS-PROCEDURE ) NO-ERROR. END. SESSION:DATA-ENTRY-RETURN = TRUE. DO ii = 1 TO NUM-DBS: IF INDEX(LDBNAME(ii), 'pse') <> 0 THEN NEXT. cLDBName = LDBNAME(ii). LEAVE. END. DO WHILE cLDBName <> '': SECURITY-POLICY:LOAD-DOMAINS(cLDBName). hClientPrincipal = SECURITY-POLICY:GET-CLIENT(). IF VALID-HANDLE ( hClientPrincipal ) THEN DO: IF hClientPrincipal:USER-ID = 'walter.riechsteiner' THEN LEAVE. hClientPrincipal:LOGOUT() NO-ERROR. SECURITY-POLICY:SET-CLIENT( ? ) NO-ERROR. DELETE OBJECT hClientPrincipal NO-ERROR. END. CREATE CLIENT-PRINCIPAL hClientPrincipal. ASSIGN hClientPrincipal:USER-ID = 'walter.riechsteiner' hClientPrincipal:DOMAIN-NAME = "Ge_MIS" hClientPrincipal:DOMAIN-TYPE = "Ge_MIS" hClientPrincipal:SESSION-ID = SUBSTRING(BASE64-ENCODE(GENERATE-UUID),1,22). hClientPrincipal:SEAL("0123456789"). SECURITY-POLICY:SET-CLIENT(hClientPrincipal). LEAVE. END. /* TRIGGERS ------------------------------------------------------ */ ON 'U1':U OF {&WINDOW-NAME} ANYWHERE DO: RUN ENTRY_CURSOR. RETURN NO-APPLY. END. ON 'END-ERROR':U OF {&WINDOW-NAME} ANYWHERE DO: APPLY 'U1'. RETURN NO-APPLY. END. ON 'CTRL-ALT-F':U OF {&WINDOW-NAME} ANYWHERE DO: RUN SCHREIBEN_FEHLWERT ( SELF:HANDLE ). RETURN NO-APPLY. END. PROCEDURE SCHREIBEN_FEHLWERT: DEF INPUT PARAMETER ipHandle AS HANDLE. IF NOT VALID-HANDLE ( ipHandle ) THEN RETURN NO-APPLY. END PROCEDURE. PROCEDURE GetSystemMetrics EXTERNAL "USER32.DLL": DEFINE INPUT PARAMETER nIndex AS LONG. DEFINE RETURN PARAMETER nRet AS LONG. END PROCEDURE. {src/adm2/windowmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects w-audit-data _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: ------------------------------------------------------------------------------*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE changePage w-audit-data PROCEDURE changePage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN SUPER. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. CASE AktSeite: WHEN 1 THEN DO: /* RUN addLink ( hAktionen , 'TableIO':U , h_v-auftr ). */ /* RUN addLink ( hAktionen , 'Navigation':U , h_d-auftr ). */ /* RUN setButtons IN hAktionen ( 'initial-TableIo' ) NO-ERROR. */ END. WHEN 2 THEN DO: END. END CASE. RUN ENTRY_CURSOR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE COMBO_KEYFELDER w-audit-data PROCEDURE COMBO_KEYFELDER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipTabelle AS CHAR NO-UNDO. DEF VAR cString AS CHAR INIT '' NO-UNDO. DEF VAR iFeld AS INT INIT 0 NO-UNDO. DO WITH FRAME {&FRAME-NAME}: CB_Keyfelder:DELIMITER = ';'. F_Firma:SCREEN-VALUE = ''. F_Firma:READ-ONLY = TRUE. FOR EACH _File WHERE _File._File-Name = ipTabelle: FIND _Index WHERE RECID(_Index) = _File._Prime-Index. FOR EACH _Index-Field OF _Index BY _Index-Field._index-Seq: FIND _Field WHERE RECID(_Field) = _Index-Field._Field-Recid. IF _Field._Field-Name = 'Firma' THEN DO: F_Firma:SCREEN-VALUE = Firma. F_Firma:READ-ONLY = FALSE. NEXT. END. iFeld = iFeld + 1. cString = cString + (IF cString = '' THEN '' ELSE ';') + _Field._Field-Name + ';' + STRING(iFeld,'99'). END. END. IF cString = '' THEN cString = ';'. CB_Keyfelder:LIST-ITEM-PAIRS = cString NO-ERROR. IF cString <> ';' THEN CB_Keyfelder:SCREEN-VALUE = ENTRY(2, cString, ';'). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE COMBO_TABELLEN w-audit-data PROCEDURE COMBO_TABELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cTabellen AS CHAR NO-UNDO. cTabellen = ''. DO WITH FRAME {&FRAME-NAME}: CB_Tabellen:DELIMITER = ';'. FOR EACH _aud-file-policy NO-LOCK WHERE NOT _aud-file-policy._File-Name BEGINS '_' AND NOT _aud-file-policy._File-Name BEGINS 'SYS': cTabellen = cTabellen + (IF cTabellen = '' THEN '' ELSE ';') + _aud-file-policy._File-Name. END. CB_Tabellen:LIST-ITEMS = cTabellen. CB_Tabellen:SCREEN-VALUE = ENTRY(1, cTabellen, ';') NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE destroyObject w-audit-data PROCEDURE destroyObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ IF VALID-HANDLE ( qKopf ) THEN DO: qKopf:QUERY-CLOSE() NO-ERROR. DELETE OBJECT qKopf. END. IF VALID-HANDLE ( qZeile ) THEN DO: qZeile:QUERY-CLOSE() NO-ERROR. DELETE OBJECT qZeile. END. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI w-audit-data _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(w-audit-data) THEN DELETE WIDGET w-audit-data. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject w-audit-data PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN COMBO_TABELLEN. { incl/winenableobject.i } RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI w-audit-data _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ DISPLAY CB_Tabellen F_Firma CB_Keyfelder F_Key F_vonDatum F_bisDatum WITH FRAME fMain IN WINDOW w-audit-data. ENABLE RECT-1 CB_Tabellen F_Firma CB_Keyfelder F_Key F_vonDatum F_bisDatum btn_Start btn_Ende WITH FRAME fMain IN WINDOW w-audit-data. {&OPEN-BROWSERS-IN-QUERY-fMain} VIEW w-audit-data. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE w-audit-data PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/winende.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_CURSOR w-audit-data PROCEDURE ENTRY_CURSOR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. FMutFlag = DYNAMIC-FUNCTION('getMutflag':U, INPUT Progname) NO-ERROR. APPLY 'ENTRY' TO CB_Tabellen IN FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject w-audit-data PROCEDURE exitObject : /*------------------------------------------------------------------------------ Purpose: Window-specific override of this procedure which destroys its contents and itself. Notes: ------------------------------------------------------------------------------*/ RUN ENDE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXPORT_IN_EXCEL w-audit-data PROCEDURE EXPORT_IN_EXCEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cDateiName AS CHAR NO-UNDO. DEF VAR hKopf AS HANDLE NO-UNDO. DEF VAR hZeile AS HANDLE NO-UNDO. DEF VAR ii AS INT NO-UNDO. DEF VAR lFirst AS LOG NO-UNDO. DEF VAR cZeile AS CHAR NO-UNDO. DEF VAR lRetVal AS LOG NO-UNDO. hKopf = TEMP-TABLE tKopf :DEFAULT-BUFFER-HANDLE. hZeile = TEMP-TABLE tZeile:DEFAULT-BUFFER-HANDLE. cDateiName = SESSION:TEMP-DIR + 'AuditData.csv'. OUTPUT TO VALUE(cDateiName) NO-MAP NO-CONVERT. DO ii = 1 TO hKopf:NUM-FIELDS: cZeile = cZeile + (IF cZeile = '' THEN '' ELSE ';') + (IF hKopf:BUFFER-FIELD(ii):LABEL <> ? THEN hKopf:BUFFER-FIELD(ii):LABEL ELSE hKopf:BUFFER-FIELD(ii):NAME). END. DO ii = 1 TO hZeile:NUM-FIELDS: cZeile = cZeile + (IF cZeile = '' THEN '' ELSE ';') + (IF hZeile:BUFFER-FIELD(ii):LABEL <> ? THEN hZeile:BUFFER-FIELD(ii):LABEL ELSE hZeile:BUFFER-FIELD(ii):NAME). END. PUT CONTROL cZeile CHR(10). FOR EACH tKopf: DO ii = 1 TO hKopf:NUM-FIELDS: PUT CONTROL hKopf:BUFFER-FIELD(ii):BUFFER-VALUE ';'. END. lFirst = TRUE. FOR EACH tZeile WHERE tZeile.cKey = tKopf.cKey: IF NOT lFirst THEN DO: cZeile = FILL(';', hKopf:NUM-FIELDS). PUT CONTROL cZeile. END. lFirst = FALSE. DO ii = 1 TO hZeile:NUM-FIELDS: PUT CONTROL hZeile:BUFFER-FIELD(ii):BUFFER-VALUE. IF ii < hZeile:NUM-FIELDS THEN PUT CONTROL ';'. END. PUT CONTROL CHR(10). END. END. OUTPUT CLOSE. DEF VAR hExcel AS COM-HANDLE NO-UNDO. hExcel = DYNAMIC-FUNCTION('createExcel':U) NO-ERROR. RUN OPENEXCEL ( hExcel, cDateiName, '', OUTPUT lRetVal ) NO-ERROR. IF NOT VALID-HANDLE ( hExcel ) THEN DO: MESSAGE 'Excel konnte nicht gestartet werden' VIEW-AS ALERT-BOX. RETURN. END. IF NOT lRetVal THEN DO: MESSAGE 'Problem mit öffnen der Datei in Excel' VIEW-AS ALERT-BOX. END. RELEASE OBJECT hExcel. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject w-audit-data PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cExceptListK AS CHAR NO-UNDO INIT 'cKey,tZeit,cSort'. DEF VAR cExceptListZ AS CHAR NO-UNDO INIT 'cKey'. DEF VAR cWhere AS CHAR NO-UNDO. CREATE QUERY qKopf. qKopf:SET-BUFFERS(TEMP-TABLE tKopf:DEFAULT-BUFFER-HANDLE). BROWSE Br_Kopf:QUERY = qKopf. bKopf = Br_Kopf:HANDLE IN FRAME {&FRAME-NAME}. bKopf:ADD-COLUMNS-FROM( 'tKopf', cExceptListK ). CREATE QUERY qZeile. qZeile:SET-BUFFERS(TEMP-TABLE tZeile:DEFAULT-BUFFER-HANDLE). BROWSE Br_Zeile:QUERY = qZeile. bZeile = Br_Zeile:HANDLE IN FRAME {&FRAME-NAME}. bZeile:ADD-COLUMNS-FROM( 'tZeile', cExceptListZ ). F_Firma = Firma. F_BisDatum = TODAY + 1. RUN SUPER. { incl/wininitializeobject.i } Br_Kopf :SENSITIVE = TRUE. Br_Zeile:SENSITIVE = TRUE. APPLY 'VALUE-CHANGED' TO CB_Tabellen. APPLY 'ENTRY' TO CB_Tabellen. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SEITENWECHSEL w-audit-data PROCEDURE SEITENWECHSEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/winseitenwechsel.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE selectPage w-audit-data PROCEDURE selectPage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER piPageNum AS INT NO-UNDO. DEF VAR FMutFlag AS LOG NO-UNDO. DEF VAR MutProg AS CHAR NO-UNDO. FMutFlag = DYNAMIC-FUNCTION ('getMutflag':U, INPUT Progname) NO-ERROR. IF FMutFlag THEN RETURN NO-APPLY. CASE piPageNum: END CASE. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. CASE AktSeite: WHEN 1 THEN DO: /* RUN removeLink ( hAktionen , 'TableIO':U , h_v-auftr ). */ /* RUN removeLink ( hAktionen , 'Navigation':U , h_d-auftr ). */ END. END CASE. RUN SUPER( INPUT piPageNum). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERARBEITUNG w-audit-data PROCEDURE VERARBEITUNG : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cTabelle AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR cIndex AS CHAR NO-UNDO. DEF VAR cFeld AS CHAR NO-UNDO. DEF VAR iFeld AS INT NO-UNDO. DEF VAR cTyp AS CHAR NO-UNDO. DEF VAR cAlt AS CHAR NO-UNDO. DEF VAR cNeu AS CHAR NO-UNDO. DEF VAR cWhere AS CHAR NO-UNDO. DEF VAR cTrenn AS CHAR NO-UNDO. DEF VAR iLang AS INT NO-UNDO. DEF VAR cSchluessel AS CHAR NO-UNDO. DEF VAR lNeu AS LOG NO-UNDO. DEF VAR cWert AS CHAR NO-UNDO. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. ASSIGN cTabelle = CB_Tabellen :SCREEN-VALUE iFeld = INTEGER(CB_Keyfelder:SCREEN-VALUE) NO-ERROR. IF iFeld = ? THEN iFeld = 0. IF cTabelle = '' OR cTabelle = ? THEN DO: APPLY 'ENTRY' TO CB_Tabellen. RETURN NO-APPLY. END. IF iFeld > 0 THEN DO: cString = CB_Keyfelder:LIST-ITEM-PAIRS. ix = ((iFeld - 1) * 2) + 1. cFeld = ENTRY(ix, cString, ';'). END. ELSE cFeld = ''. IF F_vonDatum = ? THEN F_vonDatum = DATE(01,01,YEAR(TODAY)). IF F_bisDatum = ? THEN F_bisDatum = DATE(12,31,YEAR(TODAY)). cTrenn = CHR(06). DISPLAY {&List-6}. cKey = 'PUB.' + cTabelle + cTrenn. cTrenn = CHR(07). IF F_Firma:READ-ONLY = FALSE THEN DO: cKey = cKey + F_Firma. IF iFeld > 0 THEN cKey = cKey + cTrenn. END. IF cFeld <> '' THEN DO: FIND _File NO-LOCK WHERE _File._File-Name = cTabelle. FIND _Field OF _File WHERE _Field._Field-Name = cFeld. CASE _Field._Data-Type: WHEN 'INTEGER' THEN cString = TRIM (STRING(INTEGER(F_Key),'->>>>>>>>>>9') ) NO-ERROR. WHEN 'DECIMAL' THEN cString = TRIM (STRING(DECIMAL(F_Key),'->>>>>>>>>>9.99')) NO-ERROR. WHEN 'DATE' THEN cString = STRING(DATE (F_Key),'99/99/9999' ) NO-ERROR. OTHERWISE cString = F_Key. END CASE. IF ERROR-STATUS:ERROR THEN DO: MESSAGE 'ungültiger Feldinhalt' VIEW-AS ALERT-BOX. APPLY 'ENTRY' TO F_Key. RETURN NO-APPLY. END. IF R-INDEX(cString, '.00') > 0 THEN cString = REPLACE(cString, '.00', ''). END. IF iFeld = 1 THEN ASSIGN cKey = cKey + cString cIndex = ''. IF iFeld > 1 THEN ASSIGN cIndex = cString. END. EMPTY TEMP-TABLE tKopf. EMPTY TEMP-TABLE tZeile. IF F_Firma:READ-ONLY = FALSE THEN iFeld = iFeld + 1. SESSION:SET-WAIT-STATE('GENERAL'). FOR EACH _aud-audit-data NO-LOCK USE-INDEX _Event-context WHERE _aud-audit-data._Event-context BEGINS cKey AND _aud-audit-data._Audit-date-time <= F_bisDatum AND _aud-audit-data._Audit-date-time >= F_vonDatum : IF cIndex <> '' THEN DO: cString = ENTRY(iFeld, _aud-audit-data._Event-context, cTrenn). IF cString <> cIndex THEN NEXT. END. CREATE tKopf. ASSIGN tKopf.cKey = _aud-audit-data._Audit-data-guid tKopf.cUser = _aud-audit-data._User-id tKopf.cDate = STRING(_aud-audit-data._Audit-date-time) tKopf.tZeit = _aud-audit-data._Audit-date-time. CASE _aud-audit-data._Event-id: WHEN 5100 THEN ASSIGN tKopf.cMutArt = 'Neu'. WHEN 5101 THEN ASSIGN tKopf.cMutArt = 'Mut'. WHEN 5102 THEN ASSIGN tKopf.cMutArt = 'Loe'. END CASE. tKopf.cSort = SUBSTRING(cDate,07,04) + SUBSTRING(cDate,04,02) + SUBSTRING(cDate,01,02) + SUBSTRING(cDate,12,12). cSchluessel = _aud-audit-data._Event-context. ix = INDEX(cSchluessel, CHR(06)) + 1. cSchluessel = SUBSTRING(cSchluessel,ix). DO ix = 1 TO NUM-ENTRIES(cSchluessel, CHR(07)): tKopf.cxKey = tKopf.cxKey + (IF ix = 1 THEN '' ELSE ' - ') + ENTRY(ix, cSchluessel, CHR(07)). END. DO ix = 1 TO NUM-ENTRIES(_aud-audit-data._Event-detail, CHR(07)): cString = ENTRY(ix, _aud-audit-data._Event-detail, CHR(07)). cFeld = ENTRY(1, cString, CHR(06)). cTyp = ENTRY(2, cString, CHR(06)). cAlt = ENTRY(3, cString, CHR(06)). cNeu = ENTRY(4, cString, CHR(06)). CREATE tZeile. ASSIGN tZeile.cKey = tKopf.cKey tZeile.Art = cTyp tZeile.cFeld = cFeld tZeile.cAlt = cAlt tZeile.cNeu = cNeu. END. END. SESSION:SET-WAIT-STATE(''). cWhere = 'FOR EACH tKopf NO-LOCK USE-INDEX tKopf-k1'. qKopf:QUERY-PREPARE(cWhere) NO-ERROR. qKopf:QUERY-OPEN() NO-ERROR. DO WITH FRAME {&FRAME-NAME}: IF qKopf:QUERY-OFF-END THEN DO: cWhere = 'FOR EACH tZeile NO-LOCK USE-INDEX tZeile-k1'. qZeile:QUERY-PREPARE(cWhere). qZeile:QUERY-OPEN(). APPLY 'ENTRY' TO F_Key. RETURN NO-APPLY. END. APPLY 'ENTRY' TO Br_Kopf. Br_Kopf:FETCH-SELECTED-ROW(1). APPLY 'VALUE-CHANGED' TO Br_Kopf. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE viewObject w-audit-data PROCEDURE viewObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN SUPER. RUN ENTRY_CURSOR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getProgname w-audit-data FUNCTION getProgname RETURNS CHARACTER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ RETURN Progname. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION setAuditUser w-audit-data FUNCTION setAuditUser RETURNS LOGICAL ( ipcUser AS CHARACTER ): /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE hClientPrincipal AS HANDLE NO-UNDO. DEFINE VARIABLE cLDBName AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DO ii = 1 TO NUM-DBS: IF INDEX(LDBNAME(ii), 'pse') <> 0 THEN NEXT. cLDBName = LDBNAME(ii). LEAVE. END. IF cLDBName = '' THEN RETURN FALSE. DO WHILE TRUE: SECURITY-POLICY:LOAD-DOMAINS(cLDBName). hClientPrincipal = SECURITY-POLICY:GET-CLIENT(). IF VALID-HANDLE ( hClientPrincipal ) THEN DO: IF hClientPrincipal:USER-ID = ipcUser THEN LEAVE. hClientPrincipal:LOGOUT() NO-ERROR. SECURITY-POLICY:SET-CLIENT( ? ) NO-ERROR. DELETE OBJECT hClientPrincipal NO-ERROR. END. CREATE CLIENT-PRINCIPAL hClientPrincipal. ASSIGN hClientPrincipal:USER-ID = ipcUser hClientPrincipal:DOMAIN-NAME = "Ge_MIS" hClientPrincipal:DOMAIN-TYPE = "Ge_MIS" hClientPrincipal:SESSION-ID = SUBSTRING(BASE64-ENCODE(GENERATE-UUID),1,22). hClientPrincipal:SEAL("0123456789"). SECURITY-POLICY:SET-CLIENT(hClientPrincipal). LEAVE. END. IF NOT VALID-HANDLE (hClientPrincipal) THEN RETURN FALSE. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME