&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gVertrAusw &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gVertrAusw /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM2 SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* 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 --- */ DEFINE VARIABLE MaxPage AS INTEGER NO-UNDO. DEFINE VARIABLE AktSeite AS INTEGER NO-UNDO. DEFINE VARIABLE FMutFlag AS LOG NO-UNDO. DEFINE VARIABLE lFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE Vertr AS INTEGER NO-UNDO. DEFINE VARIABLE LiArt AS INTEGER NO-UNDO. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE TotUmsatz AS DECIMAL NO-UNDO. DEFINE VARIABLE TotSaldo AS DECIMAL NO-UNDO. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO. DEFINE STREAM O_Stream. DEFINE STREAM I_Stream. DEFINE TEMP-TABLE tKuBes LIKE KuBes FIELD KdeInd AS INTEGER FIELD Anzeig_Br AS CHARACTER FIELD Aktivitaet AS CHARACTER FIELD Ort AS CHARACTER FIELD Plz AS CHARACTER FIELD Suchbe AS CHARACTER FIELD Datum AS DATE FIELD cTel AS CHARACTER FIELD cSort AS CHARACTER. DEFINE TEMP-TABLE TUmsatz FIELD Knr AS INTEGER FIELD Firma AS CHARACTER FIELD Jahr AS INTEGER FIELD Wgr AS INTEGER FIELD Umsatz AS DECIMAL INDEX TUmsatz-k1 IS PRIMARY Knr Firma Jahr Wgr. DEFINE BUFFER BUmsatz FOR TUmsatz. DEFINE TEMP-TABLE tTabel LIKE Tabel . DEFINE TEMP-TABLE TWgr LIKE WarenGrp. DEFINE TEMP-TABLE tKuBesSpe LIKE KuBesSpe FIELD Kontakt AS CHARACTER FIELD Aktivitaet AS CHARACTER FIELD Vertr AS INTEGER FIELD cSpesenArt AS CHARACTER FIELD cKonto AS CHARACTER FIELD lKunden AS LOG . DEFINE TEMP-TABLE TExcel FIELD Nummer AS INTEGER FIELD Feld AS CHARACTER INDEX TExcel-k1 IS PRIMARY Nummer . DEFINE TEMP-TABLE TAdresse LIKE Adresse. DEFINE TEMP-TABLE tTotale NO-UNDO FIELD cArt AS CHARACTER FIELD cSchluessel AS CHARACTER FIELD Betrag AS DECIMAL. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME gVertrAusw /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-13 CB_Vertreter CB_Listenart ~ F_Kundengrp F_Preisgrp F_Aktivitaeten F_VonDat F_BisDat F_VonKnr F_BisKnr ~ T_Besuchsart T_Wirtesonntag R_Abgeschl R_Sort Btn_OK Btn_Cancel F_Sort &Scoped-Define DISPLAYED-OBJECTS CB_Vertreter CB_Listenart F_Kundengrp ~ F_Preisgrp F_Aktivitaeten F_VonDat F_BisDat F_VonKnr F_BisKnr T_Besuchsart ~ T_Wirtesonntag R_Abgeschl R_Sort F_Sort /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 CB_Vertreter CB_Listenart F_Kundengrp F_Preisgrp ~ F_Aktivitaeten F_VonDat F_BisDat F_VonKnr F_BisKnr T_Besuchsart ~ T_Wirtesonntag R_Abgeschl R_Sort /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel AUTO-END-KEY LABEL "&Abbrechen" SIZE 15 BY 1. DEFINE BUTTON Btn_OK IMAGE-UP FILE "grafik/results%.ico":U IMAGE-INSENSITIVE FILE "grafik/results%.ico":U LABEL "Excel" SIZE 7 BY 1.71. DEFINE VARIABLE CB_Listenart AS CHARACTER FORMAT "X(256)":U INITIAL "03" LABEL "Listenart" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Besuchsblatt","01", "Kundenbesuchsplan","02", "Spesenabrechnung","03" DROP-DOWN-LIST SIZE 38 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Vertreter AS CHARACTER FORMAT "X(256)":U INITIAL "03" LABEL "Vertreter" VIEW-AS COMBO-BOX INNER-LINES 5 DROP-DOWN-LIST SIZE 38 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Aktivitaeten AS CHARACTER FORMAT "X(256)":U LABEL "Aktivitäten" VIEW-AS FILL-IN NATIVE SIZE 60 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisDat AS DATE FORMAT "99.99.9999":U LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisKnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Kundengrp AS CHARACTER FORMAT "X(256)":U LABEL "Kundengruppen" VIEW-AS FILL-IN NATIVE SIZE 60 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Preisgrp AS CHARACTER FORMAT "X(256)":U LABEL "Preisgruppen" VIEW-AS FILL-IN NATIVE SIZE 60 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Sort AS CHARACTER FORMAT "X(256)":U INITIAL "Sortierung beim Besuchsplan" VIEW-AS TEXT SIZE 33.6 BY .71 NO-UNDO. DEFINE VARIABLE F_VonDat AS DATE FORMAT "99.99.9999":U LABEL "von - bis Datum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonKnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Kundennummer" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE R_Abgeschl AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "alle", 1, "nur unerledigte", 2, "nur erledigte", 3 SIZE 34 BY 2.38 NO-UNDO. DEFINE VARIABLE R_Sort AS INTEGER VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "Datum/Ort", 1, "Plz", 2, "Ort", 3 SIZE 34 BY 2.38 NO-UNDO. DEFINE RECTANGLE RECT-13 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 97.8 BY 21.48. DEFINE VARIABLE T_Besuchsart AS LOGICAL INITIAL NO LABEL "Besuchsart" VIEW-AS TOGGLE-BOX SIZE 30 BY 1 NO-UNDO. DEFINE VARIABLE T_Wirtesonntag AS LOGICAL INITIAL NO LABEL "Wirtesonntag" VIEW-AS TOGGLE-BOX SIZE 30 BY 1 NO-UNDO. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gVertrAusw CB_Vertreter AT ROW 1.52 COL 28 COLON-ALIGNED CB_Listenart AT ROW 2.52 COL 28 COLON-ALIGNED F_Kundengrp AT ROW 3.52 COL 28 COLON-ALIGNED F_Preisgrp AT ROW 4.52 COL 28 COLON-ALIGNED F_Aktivitaeten AT ROW 5.52 COL 28 COLON-ALIGNED F_VonDat AT ROW 8 COL 28 COLON-ALIGNED F_BisDat AT ROW 8 COL 47 COLON-ALIGNED F_VonKnr AT ROW 9 COL 28 COLON-ALIGNED F_BisKnr AT ROW 9 COL 47 COLON-ALIGNED T_Besuchsart AT ROW 11 COL 30 T_Wirtesonntag AT ROW 12 COL 30 R_Abgeschl AT ROW 13.38 COL 30 NO-LABEL R_Sort AT ROW 16.86 COL 30 NO-LABEL WIDGET-ID 2 Btn_OK AT ROW 19.76 COL 29.8 Btn_Cancel AT ROW 20.1 COL 54 F_Sort AT ROW 16.05 COL 28 COLON-ALIGNED NO-LABEL WIDGET-ID 8 RECT-13 AT ROW 1.24 COL 2 SPACE(2.39) SKIP(0.46) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Vertreterauswertungen" CANCEL-BUTTON Btn_Cancel. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gVertrAusw /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX gVertrAusw FRAME-NAME */ ASSIGN FRAME gVertrAusw:SCROLLABLE = FALSE FRAME gVertrAusw:HIDDEN = TRUE. /* SETTINGS FOR COMBO-BOX CB_Listenart IN FRAME gVertrAusw 6 */ /* SETTINGS FOR COMBO-BOX CB_Vertreter IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_Aktivitaeten IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_BisDat IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_BisKnr IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_Kundengrp IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_Preisgrp IN FRAME gVertrAusw 6 */ ASSIGN F_Sort:READ-ONLY IN FRAME gVertrAusw = TRUE. /* SETTINGS FOR FILL-IN F_VonDat IN FRAME gVertrAusw 6 */ /* SETTINGS FOR FILL-IN F_VonKnr IN FRAME gVertrAusw 6 */ /* SETTINGS FOR RADIO-SET R_Abgeschl IN FRAME gVertrAusw 6 */ /* SETTINGS FOR RADIO-SET R_Sort IN FRAME gVertrAusw 6 */ /* SETTINGS FOR TOGGLE-BOX T_Besuchsart IN FRAME gVertrAusw 6 */ /* SETTINGS FOR TOGGLE-BOX T_Wirtesonntag IN FRAME gVertrAusw 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gVertrAusw /* Query rebuild information for DIALOG-BOX gVertrAusw _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gVertrAusw */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gVertrAusw &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVertrAusw gVertrAusw ON END-ERROR OF FRAME gVertrAusw /* Vertreterauswertungen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVertrAusw gVertrAusw ON GO OF FRAME gVertrAusw /* Vertreterauswertungen */ DO: /* RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ) NO-ERROR. */ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gVertrAusw gVertrAusw ON WINDOW-CLOSE OF FRAME gVertrAusw /* Vertreterauswertungen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Cancel &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gVertrAusw ON CHOOSE OF Btn_Cancel IN FRAME gVertrAusw /* Abbrechen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gVertrAusw ON CHOOSE OF Btn_OK IN FRAME gVertrAusw /* Excel */ DO: DO WITH FRAME {&FRAME-NAME}: Btn_OK:SENSITIVE = FALSE. Btn_Cancel:SENSITIVE = FALSE. SESSION:SET-WAIT-STATE ('GENERAL'). END. RUN REPORT. DO WITH FRAME {&FRAME-NAME}: Btn_OK:SENSITIVE = TRUE. Btn_Cancel:SENSITIVE = TRUE. SESSION:SET-WAIT-STATE(''). END. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Listenart &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Listenart gVertrAusw ON VALUE-CHANGED OF CB_Listenart IN FRAME gVertrAusw /* Listenart */ DO: CASE CB_listenart:SCREEN-VALUE: WHEN '02' THEN DO WITH FRAME {&FRAME-NAME}: R_Sort:HIDDEN = FALSE. F_Sort:HIDDEN = FALSE. END. OTHERWISE DO: R_Sort:HIDDEN = TRUE. F_Sort:HIDDEN = TRUE. END. END CASE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Aktivitaeten &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Aktivitaeten gVertrAusw ON RIGHT-MOUSE-CLICK OF F_Aktivitaeten IN FRAME gVertrAusw /* Aktivitäten */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF, INPUT 'BESUCH' ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Kundengrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Kundengrp gVertrAusw ON RIGHT-MOUSE-CLICK OF F_Kundengrp IN FRAME gVertrAusw /* Kundengruppen */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF, INPUT 'KUNDGRP' ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Preisgrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Preisgrp gVertrAusw ON RIGHT-MOUSE-CLICK OF F_Preisgrp IN FRAME gVertrAusw /* Preisgruppen */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF, INPUT 'PREGRP' ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_VonKnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_VonKnr gVertrAusw ON ALT-F OF F_VonKnr IN FRAME gVertrAusw /* von - bis Kundennummer */ DO: DEFINE VARIABLE cAdresse AS CHARACTER NO-UNDO. RUN g-such-adresse.w ( OUTPUT cAdresse ) NO-ERROR. IF cAdresse <> '' THEN SELF:SCREEN-VALUE = STRING(INTEGER(ENTRY(3, cAdresse, CHR(01)))) NO-ERROR. APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gVertrAusw /* *************************** Main Block *************************** */ MaxPage = 1. AktSeite = 1. AdFirma = DYNAMIC-FUNCTION('GETADMANDANT':U) NO-ERROR. Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. EMPTY TEMP-TABLE tAdresse. EMPTY TEMP-TABLE tTabel . CREATE TAdresse. FOR EACH Tabel WHERE Tabel.Firma = Firma AND Tabel.RecArt = 'BESUCH' NO-LOCK: CREATE tTabel. BUFFER-COPY Tabel TO tTabel. END. SESSION:DATA-ENTRY-RETURN = TRUE. SUBSCRIBE TO 'TOOLBAR' ANYWHERE. /* TRIGGERS ------------------------------------------------------ */ ON 'ALT-CURSOR-RIGHT':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN NEXTPAGE. END. ON 'ALT-CURSOR-LEFT':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN PREVPAGE. END. ON 'U1':U OF {&WINDOW-NAME} ANYWHERE DO: RUN ENTRY_CURSOR. END. /* ON 'PAGE-DOWN':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'Next':U ). END. ON 'PAGE-UP':U OF {&WINDOW-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'Prev':U ). END. ON 'ALT-RETURN':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'UPDATE':U ). END. ON 'ALT-INS':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'ADD':U ). END. ON 'ALT-DEL':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'DELETE':U ). END. ON 'ALT-R':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'RESET':U ). END. ON 'F9':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'SAVE':U ). END. ON 'ALT-S':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'SAVE':U ). END. ON 'ALT-K':U OF FRAME {&FRAME-NAME} ANYWHERE DO: RUN TOOLBAR IN h_dyntoolbar ( INPUT 'COPY':U ). END. ON 'END-ERROR':U OF FRAME {&FRAME-NAME} ANYWHERE DO: FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. IF FMutFlag = FALSE THEN DO: RUN ENDE. RETURN NO-APPLY. END. RUN TOOLBAR IN h_dyntoolbar ( INPUT 'CANCEL':U ). RETURN NO-APPLY. END. */ /* ------------------------------------------------------------------ */ {src/adm2/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gVertrAusw _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 BEREINIGEN gVertrAusw PROCEDURE BEREINIGEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipHandle AS HANDLE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. cString = ''. DO i = 1 TO LENGTH(ipHandle:SCREEN-VALUE): IF SUBSTRING(ipHandle:SCREEN-VALUE,i,1) < '0' OR SUBSTRING(ipHandle:SCREEN-VALUE,i,1) > '9' THEN DO: SUBSTRING(ipHandle:SCREEN-VALUE,i) = ','. END. END. DO i = 1 TO NUM-ENTRIES(ipHandle:SCREEN-VALUE, ','): IF cString <> '' THEN cString = cString + ','. cString = cString + STRING(INTEGER(ENTRY(i, ipHandle:SCREEN-VALUE, ',')),'999'). END. ipHandle:SCREEN-VALUE = cString. RETURN. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE changePage gVertrAusw PROCEDURE changePage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ RUN SUPER. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN addLink ( h_dyntoolbar , 'TableIO':U , h_v-auftr ). */ /* RUN addLink ( h_dyntoolbar , 'Navigation':U , h_d-auftr ). */ /* RUN ToolbarInit ( INPUT h_d-auftr ). */ RUN ENTRY_CURSOR. END. WHEN 2 THEN DO: RUN ENTRY_CURSOR. END. END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DATEI_EINLESEN gVertrAusw PROCEDURE DATEI_EINLESEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE Zeile AS CHARACTER NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. EMPTY TEMP-TABLE TExcel. i = 0. INPUT STREAM I_Stream FROM VALUE(ipDatei) NO-ECHO NO-MAP. REPEAT ON STOP UNDO, LEAVE WITH FRAME f_Print: IMPORT STREAM I_Stream UNFORMATTED Zeile. i = i + 1. CREATE TExcel. ASSIGN TExcel.Nummer = i TExcel.Feld = Zeile. END. INPUT STREAM I_Stream CLOSE. OUTPUT STREAM O_Stream TO VALUE(ipDatei) NO-ECHO NO-MAP. FOR EACH TExcel NO-LOCK: Zeile = TExcel.Feld. IF Zeile BEGINS 'xGrau' OR Zeile BEGINS 'xRechts' OR Zeile BEGINS 'xNeueSeite' THEN ENTRY (1, Zeile, '£') = ''. PUT STREAM O_Stream CONTROL Zeile CHR(13). END. OUTPUT STREAM O_Stream CLOSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gVertrAusw _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. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME gVertrAusw. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gVertrAusw PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. cInstallation = DYNAMIC-FUNCTION ('getInstallation':U). cBenutzer = DYNAMIC-FUNCTION ('getBenutzer':U). DO WITH FRAME {&FRAME-NAME}: RUN COMBO_VERTRETER ( INPUT CB_Vertreter:HANDLE ) NO-ERROR. cString = CB_Vertreter:LIST-ITEM-PAIRS + ';' + 'Alle Vertreter (0);000000'. CB_Vertreter:LIST-ITEM-PAIRS = cString. RUN LESEN_FEHLWERTE. END. RUN SUPER. /* oswald spezial */ IF cInstallation = 'oswald' AND cBenutzer = 'gt' THEN DO: CB_Vertreter:SCREEN-VALUE = '000030'. CB_Vertreter:SENSITIVE = FALSE. END. RUN FENSTER_TITEL ( INPUT FRAME {&FRAME-NAME}:HANDLE ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gVertrAusw _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_Vertreter CB_Listenart F_Kundengrp F_Preisgrp F_Aktivitaeten F_VonDat F_BisDat F_VonKnr F_BisKnr T_Besuchsart T_Wirtesonntag R_Abgeschl R_Sort F_Sort WITH FRAME gVertrAusw. ENABLE RECT-13 CB_Vertreter CB_Listenart F_Kundengrp F_Preisgrp F_Aktivitaeten F_VonDat F_BisDat F_VonKnr F_BisKnr T_Besuchsart T_Wirtesonntag R_Abgeschl R_Sort Btn_OK Btn_Cancel F_Sort WITH FRAME gVertrAusw. VIEW FRAME gVertrAusw. {&OPEN-BROWSERS-IN-QUERY-gVertrAusw} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gVertrAusw PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U) NO-ERROR. IF AktSeite > 1 THEN DO: RUN selectPage ( INPUT 1 ). RETURN NO-APPLY. END. RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ). APPLY 'GO' TO FRAME {&FRAME-NAME}. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_CURSOR gVertrAusw PROCEDURE ENTRY_CURSOR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: /* WHEN 1 THEN RUN applyEntry IN h_v-adresse ( INPUT ? ). */ /* WHEN 2 THEN RUN applyEntry IN h_f-adrkomm ( INPUT ? ). */ /* WHEN 3 THEN RUN applyEntry IN h_b-auftbb ( INPUT ? ). */ /* WHEN 4 THEN RUN applyEntry IN h_b-aufdet ( INPUT ? ). */ /* WHEN 5 THEN RUN applyEntry IN h_b-aufstreu ( INPUT ? ). */ /* WHEN 6 THEN RUN applyEntry IN h_b-auffak ( INPUT ? ). */ /* WHEN 7 THEN RUN applyEntry IN h_b-position ( INPUT ? ). */ END CASE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE exitObject gVertrAusw PROCEDURE exitObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ RUN ENDE. RETURN NO-APPLY. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FORMATIEREN gVertrAusw PROCEDURE FORMATIEREN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipExcel AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE Selekt AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. Selekt = ''. FOR EACH TExcel NO-LOCK: DO WHILE TRUE: IF NOT TExcel.Feld BEGINS 'xGrau' THEN LEAVE. i = TExcel.Nummer + 2. Selekt = STRING(i) + ':' + STRING(i). ipExcel:Range(Selekt):SELECT. ipExcel:Application:RUN ( 'Grau' ). LEAVE. END. DO WHILE TRUE: IF NOT TExcel.Feld BEGINS 'xRechts' THEN LEAVE. i = TExcel.Nummer + 2. Selekt = 'C' + STRING(i) + ':Z' + STRING(i). ipExcel:Range(Selekt):SELECT. ipExcel:Selection:HorizontalAlignment = -4152. LEAVE. END. DO WHILE TRUE: IF NOT TExcel.Feld BEGINS 'xNeueSeite' THEN LEAVE. i = TExcel.Nummer + 2. Selekt = STRING(i) + ':' + STRING(i). ipExcel:Rows(Selekt):SELECT. ipExcel:ActiveWindow:SelectedSheets:HPageBreaks:Add (ipExcel:SELECTION). LEAVE. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KOPF gVertrAusw PROCEDURE KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER eh AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE Breite AS DECIMAL NO-UNDO. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = Firma NO-LOCK NO-ERROR. CASE LiArt: WHEN 1 THEN DO: Zelle = 'A1'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Firma1. Zelle = 'M1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Kunden-Karte'. Zelle = 'Z1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Datum : ' + STRING(TODAY,'99.99.9999'). Zelle = 'A2'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Ort. Zelle = 'M2'. eh:Range(Zelle):Select. eh:Selection:Value = ''. Zelle = 'Z2'. eh:Range(Zelle):Select. eh:Selection:Value = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. WHEN 2 THEN DO: Zelle = 'A1'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Firma1. Zelle = 'C1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Besuchsplan'. Zelle = 'H1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Datum : ' + STRING(TODAY,'99.99.9999'). Zelle = 'A2'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Ort. Zelle = 'C2'. eh:Range(Zelle):Select. eh:Selection:Value = 'per ' + STRING(F_VonDat,'99.99.9999'). Zelle = 'H2'. eh:Range(Zelle):Select. eh:Selection:Value = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). IF NOT T_Besuchsart THEN DO: eh:Columns('E:E'):Select. Breite = eh:Selection:ColumnWidth. eh:Selection:EntireColumn:Hidden = TRUE. eh:Columns('D:D'):Select. Breite = Breite + eh:Selection:ColumnWidth. eh:Selection:ColumnWidth = Breite. END. IF NOT T_Wirtesonntag THEN DO: eh:Columns('G:G'):Select. Breite = eh:Selection:ColumnWidth. eh:Selection:EntireColumn:Hidden = TRUE. eh:Columns('B:B'):Select. Breite = Breite + eh:Selection:ColumnWidth. eh:Selection:ColumnWidth = Breite. END. END. WHEN 3 THEN DO: Zelle = 'A1'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Firma1. Zelle = 'F1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Spesenabrechnung'. Zelle = 'L1'. eh:Range(Zelle):Select. eh:Selection:Value = 'Datum : ' + STRING(TODAY,'99.99.9999'). Zelle = 'A2'. eh:Range(Zelle):Select. eh:Selection:Value = Steuer.Ort. Zelle = 'F2'. eh:Range(Zelle):Select. eh:Selection:Value = STRING(F_VonDat,'99.99.9999') + ' - ' + STRING(F_BisDat,'99.99.9999'). Zelle = 'L2'. eh:Range(Zelle):Select. eh:Selection:Value = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LESEN_FEHLWERTE gVertrAusw PROCEDURE LESEN_FEHLWERTE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cVal AS CHARACTER NO-UNDO. DEFINE VARIABLE cKey AS CHARACTER NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. cKey = ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.' ) NO-ERROR. GET-KEY-VALUE SECTION 'Auswertungen' KEY cKey VALUE cVal. IF cVal = ? THEN RETURN. DO WITH FRAME {&FRAME-NAME}: DO i = 1 TO NUM-ENTRIES(cVal, '@'): CASE i: WHEN 1 THEN CB_Vertreter :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 2 THEN CB_Listenart :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 3 THEN F_Kundengrp :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 4 THEN F_Preisgrp :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 5 THEN F_VonDat :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 6 THEN F_BisDat :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 7 THEN F_VonKnr :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 8 THEN F_BisKnr :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 9 THEN R_Abgeschl :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 10 THEN F_Aktivitaeten:SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. WHEN 11 THEN R_Sort :SCREEN-VALUE = ENTRY(i, cVal, '@') NO-ERROR. END CASE. END. ASSIGN {&List-6}. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEXTPAGE gVertrAusw PROCEDURE NEXTPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = MaxPage THEN AktSeite = 1. ELSE AktSeite = AktSeite + 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PREVPAGE gVertrAusw PROCEDURE PREVPAGE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). IF AktSeite = 1 THEN AktSeite = MaxPage. ELSE AktSeite = AktSeite - 1. RUN selectPage ( INPUT AktSeite ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT gVertrAusw PROCEDURE REPORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: RUN BEREINIGEN ( INPUT F_Kundengrp :HANDLE ). RUN BEREINIGEN ( INPUT F_Preisgrp :HANDLE ). F_Aktivitaeten = REPLACE(F_Aktivitaeten, ';', ','). F_Aktivitaeten = REPLACE(F_Aktivitaeten, ' ', ','). ASSIGN {&List-6}. IF F_VonKnr = 0 AND F_BisKnr = 0 THEN F_BisKnr = 999999. IF F_VonKnr > F_BisKnr THEN F_BisKnr = F_VonKnr. IF F_VonDat = ? THEN F_VonDat = DATE(01,01,YEAR(TODAY)). IF F_BisDat = ? THEN F_BisDat = TODAY + 28. DISPLAY {&List-6}. RUN SCHREIBEN_FEHLWERTE. LiArt = INTEGER(CB_Listenart:SCREEN-VALUE). Vertr = INTEGER(CB_Vertreter:SCREEN-VALUE). END. CASE LiArt: WHEN 1 THEN RUN REPORT01. WHEN 2 THEN RUN REPORT02. WHEN 3 THEN RUN REPORT03. END CASE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT01 gVertrAusw PROCEDURE REPORT01 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE cDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE j AS INTEGER NO-UNDO. DEFINE VARIABLE k AS INTEGER NO-UNDO. DEFINE VARIABLE cDatum1 AS CHARACTER NO-UNDO. DEFINE VARIABLE cDatum2 AS CHARACTER NO-UNDO. DEFINE VARIABLE cipString AS CHARACTER NO-UNDO. DEFINE VARIABLE copString AS CHARACTER NO-UNDO. DEFINE VARIABLE cFremd1 AS CHARACTER NO-UNDO. DEFINE VARIABLE cFremd2 AS CHARACTER NO-UNDO. DEFINE VARIABLE cFremd3 AS CHARACTER NO-UNDO. DEFINE VARIABLE cFremd4 AS CHARACTER NO-UNDO. DEFINE VARIABLE cFremd5 AS CHARACTER NO-UNDO. DEFINE VARIABLE cVertr AS CHARACTER NO-UNDO. DEFINE VARIABLE cBier AS CHARACTER NO-UNDO. DEFINE VARIABLE cWiSo AS CHARACTER NO-UNDO. DEFINE VARIABLE cKuBes AS CHARACTER NO-UNDO. cFirma = ''. FOR EACH Steuer WHERE Steuer.AdFirma = AdFirma NO-LOCK: cFirma = cFirma + ',' + Steuer.Firma. END. cFirma = SUBSTRING(cFirma,02). EMPTY TEMP-TABLE tKuBes. EMPTY TEMP-TABLE TWgr. FOR EACH WarenGrp NO-LOCK: CREATE TWgr. BUFFER-COPY WarenGrp TO TWgr. END. IF Vertr > 0 THEN DO: FOR EACH KuBes USE-INDEX KuBes-k2 WHERE KuBes.Firma = AdFirma AND KuBes.Vertr = Vertr AND KuBes.Knr >= F_VonKnr AND KuBes.Knr <= F_BisKnr AND KuBes.Datum_1 >= F_VonDat AND KuBes.Datum_1 <= F_BisDat AND ((F_Aktivitaeten = '') OR (LOOKUP(KuBes.Art, F_Aktivitaeten, ',') > 0)) NO-LOCK, FIRST Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = KuBes.Firma AND Adresse.Knr = KuBes.Knr AND Adresse.Aktiv = TRUE NO-LOCK: IF R_Abgeschl = 2 AND KuBes.Abgeschl = TRUE THEN NEXT. IF R_Abgeschl = 3 AND KuBes.Abgeschl = FALSE THEN NEXT. DO WHILE TRUE: ja = TRUE. IF F_Kundengrp = '' THEN LEAVE. IF F_Preisgrp = '' THEN LEAVE. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = KuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: ja = FALSE. LEAVE. END. IF F_Kundengrp <> '' AND LOOKUP(STRING(Debst.Ku_Grp ,'999'), F_Kundengrp, ',') = 0 THEN ja = FALSE. IF F_Preisgrp <> '' AND LOOKUP(STRING(Debst.Preis_Grp,'999'), F_Preisgrp , ',') = 0 THEN ja = FALSE. LEAVE. END. IF NOT ja THEN NEXT. CREATE tKuBes. BUFFER-COPY KuBes TO tKuBes ASSIGN tKuBes.KdeInd = 0 tKuBes.Anzeig_Br = Adresse.Anzeig_Br. IF tKuBes.Adr_04 <> '' THEN DO: tKuBes.Anzeig_br = tKuBes.Adr_04. DO k = 3 TO 1 BY -1: CASE k: WHEN 1 THEN DO: IF tKuBes.Adr_01 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_01 + ', ' + tKuBes.Anzeig_br. END. WHEN 2 THEN DO: IF tKuBes.Adr_02 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_02 + ', ' + tKuBes.Anzeig_br. END. WHEN 3 THEN DO: IF tKuBes.Adr_03 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_03 + ', ' + tKuBes.Anzeig_br. END. END CASE. END. END. END. END. IF Vertr = 0 THEN DO: FOR EACH KuBes USE-INDEX KuBes-k1 WHERE KuBes.Firma = AdFirma AND KuBes.Knr >= F_VonKnr AND KuBes.Knr <= F_BisKnr AND KuBes.Datum_1 >= F_VonDat AND KuBes.Datum_1 <= F_BisDat NO-LOCK, FIRST Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = KuBes.Firma AND Adresse.Knr = KuBes.Knr AND Adresse.Aktiv = TRUE NO-LOCK: IF R_Abgeschl = 2 AND KuBes.Abgeschl = TRUE THEN NEXT. IF R_Abgeschl = 3 AND KuBes.Abgeschl = FALSE THEN NEXT. DO WHILE TRUE: ja = TRUE. IF F_Kundengrp = '' THEN LEAVE. IF F_Preisgrp = '' THEN LEAVE. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = KuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: ja = FALSE. LEAVE. END. IF F_Kundengrp <> '' AND LOOKUP(STRING(Debst.Ku_Grp ,'999'), F_Kundengrp, ',') = 0 THEN ja = FALSE. IF F_Preisgrp <> '' AND LOOKUP(STRING(Debst.Preis_Grp,'999'), F_Preisgrp , ',') = 0 THEN ja = FALSE. LEAVE. END. IF NOT ja THEN NEXT. CREATE tKuBes. BUFFER-COPY KuBes TO tKuBes ASSIGN tKuBes.KdeInd = 0 tKuBes.Anzeig_Br = Adresse.Anzeig_Br. IF tKuBes.Adr_04 <> '' THEN DO: tKuBes.Anzeig_br = tKuBes.Adr_04. DO k = 3 TO 1 BY -1: CASE k: WHEN 1 THEN DO: IF tKuBes.Adr_01 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_01 + ', ' + tKuBes.Anzeig_br. END. WHEN 2 THEN DO: IF tKuBes.Adr_02 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_02 + ', ' + tKuBes.Anzeig_br. END. WHEN 3 THEN DO: IF tKuBes.Adr_03 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_03 + ', ' + tKuBes.Anzeig_br. END. END CASE. END. END. END. END. DO WHILE TRUE: FIND FIRST tKuBes NO-LOCK NO-ERROR. IF AVAILABLE tKuBes THEN LEAVE. IF F_VonKnr <> F_BisKnr THEN RETURN. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = F_VonKnr NO-LOCK NO-ERROR. IF NOT AVAILABLE Adresse THEN RETURN. CREATE tKuBes. ASSIGN tKuBes.Firma = Adresse.Firma tKuBes.Knr = Adresse.Knr tKuBes.Datum_1 = ? tKuBes.Datum_2 = ? tKuBes.Vertr = 0 tKuBes.Abgeschl = FALSE. LEAVE. END. FOR EACH tKuBes BY tKuBes.Firma BY tKuBes.Knr BY tKuBes.Datum_1 BY tKuBes.Ind. IF tKuBes.Adr_04 = '' THEN j = 0. ELSE j = j + 1. tKuBes.KdeInd = j. END. cVorlage = 'KundenKarte.xls'. cDokument = 'KundenKarte.xls'. cDaten = 'KundenKarte.txt'. cDateiName = cDokument + CHR(01) + cVorlage. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDokument = RETURN-VALUE. cDateiName = cDaten. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDaten = RETURN-VALUE. RUN FIND_VERTRETER ( INPUT Vertr, OUTPUT cString ) NO-ERROR. IF cString = '' THEN cString = STRING(Vertr,'99') + CHR(01) + '??????????'. OUTPUT TO VALUE(cDaten). FOR EACH tKuBes BREAK BY tKuBes.Knr BY tKuBes.KdeInd BY tKuBes.Datum_1 DESCENDING BY tKuBes.Ind : IF tKuBes.Datum_1 = ? THEN cDatum1 = ''. ELSE cDatum1 = STRING(tKuBes.Datum_1,'99.99.9999'). IF tKuBes.Datum_2 = ? THEN cDatum2 = ''. ELSE cDatum2 = STRING(tKuBes.Datum_2,'99.99.9999'). DO WHILE TRUE: IF NOT FIRST-OF ( tKuBes.KdeInd ) THEN LEAVE. TotSaldo = 0. TotUmsatz = 0. cVertr = ''. cBier = ''. cWiSo = ''. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = tKuBes.Firma AND Adresse.Knr = tKuBes.Knr NO-LOCK NO-ERROR. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = tKuBes.Firma AND Debst.Knr = tKuBes.Knr NO-LOCK NO-ERROR. FIND KuBesSta USE-INDEX KuBesSta-k1 WHERE KuBesSta.Firma = tKuBes.Firma AND KuBesSta.Knr = tKuBes.Knr NO-LOCK NO-ERROR. FIND FIRST TAdresse. BUFFER-COPY Adresse TO TAdresse. IF tKuBes.Adr_04 <> '' THEN DO: ASSIGN TAdresse.Anschrift = '' TAdresse.Anschrift[11] = tKuBes.Adr_04 TAdresse.Anschrift[10] = tKuBes.Adr_03 TAdresse.Anschrift[09] = tKuBes.Adr_02 TAdresse.Anschrift[08] = tKuBes.Adr_01. END. IF AVAILABLE KuBesSta THEN DO: cipString = STRING(KuBesSta.FremdWgr1) + ';' + STRING(KuBesSta.FremdWgr2) + ';' + STRING(KuBesSta.FremdWgr3) + ';' + STRING(KuBesSta.FremdWgr4) + ';' + STRING(KuBesSta.FremdWgr5). RUN WARENGRUPPEN ( INPUT cipString, OUTPUT copString ). cFremd1 = ENTRY(1, copString, ';'). cFremd2 = ENTRY(2, copString, ';'). cFremd3 = ENTRY(3, copString, ';'). cFremd4 = ENTRY(4, copString, ';'). cFremd5 = ENTRY(5, copString, ';'). cKuBes = STRING(KuBesSta.AnzSoll ,'zz9') + '/' + STRING(KuBesSta.AnzHaben,'zz9'). END. lFirma = Firma. IF AVAILABLE Debst THEN DO: RUN TABELLEN ( INPUT Debst.Vertr, INPUT 'VERTR' , OUTPUT cVertr). RUN TABELLEN ( INPUT Debst.Bier_Cd, INPUT 'BIER' , OUTPUT cBier). RUN TABELLEN ( INPUT Debst.Wirt_So, INPUT 'WISO' , OUTPUT cWiSo). END. IF NOT FIRST ( tKuBes.KdeInd ) THEN PUT CONTROL 'xNeueSeite'. DO i = 6 TO 11 WHILE AVAILABLE KuBesSta: PUT CONTROL '£' TAdresse.Anschrift[i]. CASE i: WHEN 06 THEN PUT CONTROL '£££££££££££££££££££' 'Fremdlieferanten' '£££' . WHEN 07 THEN PUT CONTROL '£££££££££££££££££££' cFremd1 ':£££' KuBesSta.FremdLief1. WHEN 08 THEN PUT CONTROL '£££££££££££' 'Vertreter:£££' cVertr '£££££' cFremd2 ':£££' KuBesSta.FremdLief2. WHEN 09 THEN PUT CONTROL '£££££££££££' 'Kundenbesuche:£££' cKuBes '£££££' cFremd3 ':£££' KuBesSta.FremdLief3. WHEN 10 THEN PUT CONTROL '£££££££££££' 'Biergruppe:£££' cBier '£££££' cFremd4 ':£££' KuBesSta.FremdLief4. WHEN 11 THEN PUT CONTROL '££££' STRING(tKuBes.Knr,'999999') '£££££££' 'Wirtesonntag:£££' cWiSo '£££££' cFremd5 ':£££' KuBesSta.FremdLief5. END CASE. PUT CONTROL CHR(10). END. PUT CONTROL '£' CHR(10) '£Telefon Geschäft:£££' Adresse.Tel-1 '£££Telefon Privat:£££' Adresse.Tel-2 CHR(10) '£Fax Geschäft:£££' Adresse.Tel-3 '£££Fax Privat:£££' Adresse.Tel-4 CHR(10) '£' CHR(10). FOR EACH Debst USE-INDEX Debst-k2 WHERE Debst.Knr = tKuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK: FIND Steuer WHERE Steuer.Firma = Debst.Firma NO-LOCK. PUT CONTROL Steuer.Firma1 ' (' TRIM(STRING(Debst.Saldo,'->>>,>>>9.99')) ')' CHR(10). lFirma = Debst.Firma. RUN TABELLEN ( INPUT Debst.Ku_Grp, INPUT 'KUNDGRP' , OUTPUT cRetVal). cString = '££Kundengruppe:£££' + cRetVal. RUN TABELLEN ( INPUT Debst.Preis_Grp, INPUT 'PREGRP' , OUTPUT cRetVal). cString = cString + '££££Preisgruppe:£££' + cRetVal. RUN TABELLEN ( INPUT Debst.Rab_Grp, INPUT 'RABGRP' , OUTPUT cRetVal). cString = cString + '££££Rabattgruppe:£££' + cRetVal. PUT CONTROL cString CHR(10). RUN TABELLEN ( INPUT Debst.Bonus_Grp, INPUT 'BONUS' , OUTPUT cRetVal). cString = '££Bonusgruppe:£££' + cRetVal. RUN TABELLEN ( INPUT Debst.ABC_Grp, INPUT 'ABCGRP' , OUTPUT cRetVal). cString = cString + '££££ABC-Gruppe:£££' + cRetVal. FIND Kondi USE-INDEX Kondi-k1 WHERE Kondi.Sprcd = 1 AND Kondi.Kond = Debst.Kond NO-LOCK NO-ERROR. cString = cString + '££££Zahlungskondition:£££' + STRING(Debst.Kond,'999 '). IF AVAILABLE Kondi THEN cString = cString + Kondi.KoText. PUT CONTROL cString CHR(10). PUT CONTROL '£' CHR(10). TotSaldo = TotSaldo + Debst.Saldo. END. RUN UMSAETZE ( INPUT tKuBes.Knr ). PUT CONTROL 'Total Umsatz / Saldo -> (' TRIM(STRING(TotUmsatz,'->>>,>>>,>>9')) ' / ' TRIM(STRING(TotSaldo ,'->>>,>>>,>>9.99')) ')' CHR(10) '£' CHR(10). LEAVE. END. PUT CONTROL '££'. PUT CONTROL cDatum1 '££' tKuBes.Art '£' STRING(tKuBes.Abgeschl,'ja/nein') '£' cDatum2 '££' STRING(tKuBes.Spesen,'->>9.99') '££'. RUN TABELLEN ( INPUT tKuBes.Vertr, INPUT 'VERTR' , OUTPUT cRetVal). PUT CONTROL cRetVal. j = NUM-ENTRIES(tKuBes.Beschreibung, CHR(10)). IF j = 0 THEN j = 1. DO i = 1 TO j: IF i = 1 THEN PUT CONTROL '££££'. ELSE PUT CONTROL '££££££££££££££'. PUT CONTROL ENTRY(i, tKuBes.Beschreibung, CHR(10) ) CHR(10). END. IF LAST-OF(tKuBes.KdeInd) THEN PUT CONTROL '£' CHR(10). END. OUTPUT CLOSE. RUN DATEI_EINLESEN ( INPUT cDaten ). excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: RUN FEHLER ( INPUT 1035 ). RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: RUN FEHLER ( INPUT 1040 ). DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. Zelle = 'A3'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. RUN FORMATIEREN ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT02 gVertrAusw PROCEDURE REPORT02 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE cDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE cSonntag AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE j AS INTEGER NO-UNDO. DEFINE VARIABLE k AS INTEGER NO-UNDO. EMPTY TEMP-TABLE tKuBes. IF Vertr > 0 THEN DO: FOR EACH KuBes USE-INDEX KuBes-k2 WHERE KuBes.Firma = Firma AND KuBes.Vertr = Vertr AND KuBes.Knr >= F_VonKnr AND KuBes.Knr <= F_BisKnr AND KuBes.Datum_1 >= F_VonDat AND KuBes.Datum_1 <= F_BisDat AND ((F_Aktivitaeten = '') OR (LOOKUP(KuBes.Art, F_Aktivitaeten, ',') > 0)) NO-LOCK, FIRST Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = KuBes.Firma AND Adresse.Knr = KuBes.Knr AND Adresse.Aktiv = TRUE NO-LOCK: IF R_Abgeschl = 2 AND KuBes.Abgeschl = TRUE THEN NEXT. IF R_Abgeschl = 3 AND KuBes.Abgeschl = FALSE THEN NEXT. DO WHILE TRUE: ja = TRUE. IF F_Kundengrp = '' THEN LEAVE. IF F_Preisgrp = '' THEN LEAVE. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = KuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: Ja = FALSE. LEAVE. END. IF F_Kundengrp <> '' AND LOOKUP(STRING(Debst.Ku_Grp ,'999'), F_Kundengrp, ',') = 0 THEN Ja = FALSE. IF F_Preisgrp <> '' AND LOOKUP(STRING(Debst.Preis_Grp,'999'), F_Preisgrp , ',') = 0 THEN Ja = FALSE. LEAVE. END. IF NOT Ja THEN NEXT. FIND FIRST TTabel USE-INDEX Tabel-k1 WHERE TTabel.Firma = Firma AND TTabel.RecArt = 'BESUCH' AND TTabel.CodeC = KuBes.Art NO-LOCK NO-ERROR. CREATE tKuBes. BUFFER-COPY KuBes TO tKuBes ASSIGN tKuBes.Anzeig_Br = Adresse.Anzeig_Br tKuBes.Ort = Adresse.Ort tKuBes.Suchbe = Adresse.Suchbe tKuBes.Plz = Adresse.Plz. IF tKuBes.Datum_2 <> ? THEN tKuBes.Datum = tKuBes.Datum_2. ELSE tKuBes.Datum = tKuBes.Datum_1. IF AVAILABLE TTabel THEN tKuBes.Aktivitaet = TTabel.Bez1. ELSE tKuBes.Aktivitaet = tKuBes.Art. IF Adresse.Tel-1 <> '' THEN tKuBes.cTel = Adresse.Tel-1. ELSE tKuBes.cTel = Adresse.Tel-2. IF tKuBes.Adr_04 <> '' THEN DO: tKuBes.Anzeig_br = tKuBes.Adr_04. DO k = 3 TO 1 BY -1: CASE k: WHEN 1 THEN DO: IF tKuBes.Adr_01 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_01 + ', ' + tKuBes.Anzeig_br. END. WHEN 2 THEN DO: IF tKuBes.Adr_02 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_02 + ', ' + tKuBes.Anzeig_br. END. WHEN 3 THEN DO: IF tKuBes.Adr_03 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_03 + ', ' + tKuBes.Anzeig_br. END. END CASE. END. END. END. END. IF Vertr = 0 THEN DO: FOR EACH KuBes USE-INDEX KuBes-k1 WHERE KuBes.Firma = AdFirma AND KuBes.Knr >= F_VonKnr AND KuBes.Knr <= F_BisKnr AND KuBes.Datum_1 >= F_VonDat AND KuBes.Datum_1 <= F_BisDat NO-LOCK, FIRST Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = KuBes.Firma AND Adresse.Knr = KuBes.Knr AND Adresse.Aktiv = TRUE NO-LOCK: IF R_Abgeschl = 2 AND KuBes.Abgeschl = TRUE THEN NEXT. IF R_Abgeschl = 3 AND KuBes.Abgeschl = FALSE THEN NEXT. DO WHILE TRUE: ja = TRUE. IF F_Kundengrp = '' THEN LEAVE. IF F_Preisgrp = '' THEN LEAVE. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = KuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: Ja = FALSE. LEAVE. END. IF F_Kundengrp <> '' AND LOOKUP(STRING(Debst.Ku_Grp ,'999'), F_Kundengrp, ',') = 0 THEN Ja = FALSE. IF F_Preisgrp <> '' AND LOOKUP(STRING(Debst.Preis_Grp,'999'), F_Preisgrp , ',') = 0 THEN Ja = FALSE. LEAVE. END. IF NOT Ja THEN NEXT. FIND FIRST TTabel USE-INDEX Tabel-k1 WHERE TTabel.Firma = Firma AND TTabel.RecArt = 'BESUCH' AND TTabel.CodeC = KuBes.Art NO-LOCK NO-ERROR. CREATE tKuBes. BUFFER-COPY KuBes TO tKuBes ASSIGN tKuBes.Anzeig_Br = Adresse.Anzeig_Br tKuBes.Ort = Adresse.Ort tKuBes.Suchbe = Adresse.Suchbe tKuBes.Plz = Adresse.Plz. IF tKuBes.Datum_2 <> ? THEN tKuBes.Datum = tKuBes.Datum_2. ELSE tKuBes.Datum = tKuBes.Datum_1. IF AVAILABLE TTabel THEN tKuBes.Aktivitaet = TTabel.Bez1. ELSE tKuBes.Aktivitaet = tKuBes.Art. IF Adresse.Tel-1 <> '' THEN tKuBes.cTel = Adresse.Tel-1. ELSE tKuBes.cTel = Adresse.Tel-2. IF tKuBes.Adr_04 <> '' THEN DO: tKuBes.Anzeig_br = tKuBes.Adr_04. DO k = 3 TO 1 BY -1: CASE k: WHEN 1 THEN DO: IF tKuBes.Adr_01 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_01 + ', ' + tKuBes.Anzeig_br. END. WHEN 2 THEN DO: IF tKuBes.Adr_02 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_02 + ', ' + tKuBes.Anzeig_br. END. WHEN 3 THEN DO: IF tKuBes.Adr_03 = '' THEN NEXT. tKuBes.Anzeig_br = tKuBes.Adr_03 + ', ' + tKuBes.Anzeig_br. END. END CASE. END. END. END. END. FIND FIRST tKuBes NO-LOCK NO-ERROR. IF NOT AVAILABLE tKuBes THEN RETURN. FOR EACH tKuBes BY tKuBes.Firma BY tKuBes.Knr BY tKuBes.Datum BY tKuBes.Ind. IF tKuBes.Adr_04 = '' THEN j = 0. ELSE j = j + 1. tKuBes.KdeInd = j. CASE R_Sort: WHEN 1 THEN ASSIGN tKuBes.cSort = STRING(YEAR (tKuBes.Datum),'9999') + STRING(MONTH(tKuBes.Datum),'99') + STRING(DAY (tKuBes.Datum),'99') + STRING(tKuBes.Ort,'x(20)'). WHEN 2 THEN ASSIGN tKuBes.cSort = STRING(tKuBes.Plz,'x(06)') + STRING(tKuBes.Knr,'999999'). WHEN 3 THEN ASSIGN tKuBes.cSort = STRING(tKuBes.Ort,'x(20)') + STRING(tKuBes.Knr,'999999'). END CASE. END. cVorlage = 'Besuchsplan.xls'. cDokument = 'Besuchsplan.xls'. cDaten = 'Besuchsplan.txt'. cDateiName = cDokument + CHR(01) + cVorlage. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDokument = RETURN-VALUE. cDateiName = cDaten. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDaten = RETURN-VALUE. RUN FIND_VERTRETER ( INPUT Vertr, OUTPUT cString ) NO-ERROR. IF cString = '' THEN cString = STRING(Vertr,'99') + CHR(01) + '??????????'. OUTPUT TO VALUE(cDaten). PUT CONTROL ENTRY(1, cString, CHR(01)) ' ' ENTRY(2, cString, CHR(01)) CHR(10) '£' CHR(10) '£Kunde£Termin erledigt am£Text£Art£Erl£Wirtesonntag£TelefonNr' CHR(10). FOR EACH tKuBes BREAK BY tKuBes.cSort BY tKuBes.Suchbe BY tKuBes.Knr BY tKuBes.KdeInd : PUT CONTROL '£'. IF FIRST-OF(tKuBes.KdeInd) THEN DO: FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = tKuBes.Firma AND Debst.Knr = tKuBes.Knr NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN cSonntag = ''. ELSE DO: RUN FIND_WIRTESONNTAG ( INPUT Debst.Wirt_So, OUTPUT cSonntag ) NO-ERROR. IF cSonntag <> '' THEN cSonntag = ENTRY(2, cSonntag, CHR(01)). END. PUT CONTROL STRING(tKuBes.Knr,'999999 ') tKuBes.Anzeig_Br. END. PUT CONTROL '£'. PUT CONTROL STRING(tKuBes.Datum_1,'99.99.9999'). IF tKuBes.Datum_2 <> ? THEN PUT CONTROL ' ' STRING(tKuBes.Datum_2,'99.99.9999'). PUT CONTROL '£'. j = NUM-ENTRIES(tKuBes.Beschreibung, CHR(10)). DO i = 1 TO j: PUT CONTROL ENTRY(i, tKuBes.Beschreibung, CHR(10) ). IF i < j THEN PUT CONTROL CHR(10) '£££'. END. PUT CONTROL '£' tKuBes.Aktivitaet '£' STRING(tKuBes.Abgeschl,'ja/nein') '£' cSonntag '£' tKuBes.cTel. PUT CONTROL CHR(10). IF LAST-OF(tKuBes.KdeInd) THEN PUT CONTROL '£' CHR(10). END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: RUN FEHLER ( INPUT 1035 ). RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: RUN FEHLER ( INPUT 1040 ). DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. Zelle = 'A4'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT03 gVertrAusw PROCEDURE REPORT03 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE cDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE cSonntag AS CHARACTER NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ja AS LOG NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE j AS INTEGER NO-UNDO. DEFINE VARIABLE k AS INTEGER NO-UNDO. DEFINE VARIABLE cVertreter AS CHARACTER NO-UNDO. DEFINE VARIABLE cAktivitaet AS CHARACTER NO-UNDO. DEFINE VARIABLE cSpesenart AS CHARACTER NO-UNDO. DEFINE VARIABLE cKunde AS CHARACTER NO-UNDO. DEFINE VARIABLE cKonto AS CHARACTER NO-UNDO. DEFINE VARIABLE lKunde AS LOG NO-UNDO. DEFINE VARIABLE cToArt AS CHARACTER NO-UNDO INIT '1SPA,2KON,3MWS,8VER'. DEFINE VARIABLE cArt AS CHARACTER NO-UNDO. DEFINE VARIABLE cKey AS CHARACTER NO-UNDO. EMPTY TEMP-TABLE tKuBesSpe. FOR EACH KuBesSpe NO-LOCK USE-INDEX KuBesSpe-k1 WHERE KuBesSpe.Firma = Firma AND KuBesSpe.Knr >= F_VonKnr AND KuBesSpe.Knr <= F_BisKnr AND KuBesSpe.Datum_1 >= F_VonDat AND KuBesSpe.Datum_1 <= F_BisDat, FIRST KuBes NO-LOCK USE-INDEX KuBes-k1 WHERE KuBes.Firma = KuBesSpe.Firma AND KuBes.Knr = KuBesSpe.Knr AND KuBes.Datum_1 = KuBesSpe.Datum_1 AND KuBes.Ind = KuBesSpe.Ind AND ((F_Aktivitaeten = '') OR (LOOKUP(KuBes.Art, F_Aktivitaeten, ',') > 0)) AND ((Vertr = 0) OR (KuBes.Vertr = Vertr )): DO WHILE TRUE: ja = TRUE. IF F_Kundengrp = '' AND F_Preisgrp = '' THEN LEAVE. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = KuBes.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN DO: Ja = FALSE. LEAVE. END. IF F_Kundengrp <> '' AND LOOKUP(STRING(Debst.Ku_Grp ,'999'), F_Kundengrp, ',') = 0 THEN Ja = FALSE. IF F_Preisgrp <> '' AND LOOKUP(STRING(Debst.Preis_Grp,'999'), F_Preisgrp , ',') = 0 THEN Ja = FALSE. LEAVE. END. IF NOT Ja THEN NEXT. FIND Tabel NO-LOCK WHERE Tabel.Firma = Firma AND Tabel.RecArt = 'SPESART' AND Tabel.CodeC = '' AND Tabel.CodeI = KuBesSpe.SpesenArt AND Tabel.Sprcd = 1 NO-ERROR. IF AVAILABLE Tabel THEN DO: ASSIGN lKunde = Tabel.Flag_1 cSpesenart = Tabel.Bez1 cKonto = Tabel.Bez2. END. ELSE DO: ASSIGN lKunde = FALSE cSpesenart = STRING(KuBesSpe.SpesenArt,'999') cKonto = '????'. END. FIND FIRST tTabel NO-LOCK USE-INDEX Tabel-k1 WHERE tTabel.Firma = Firma AND tTabel.RecArt = 'BESUCH' AND tTabel.CodeC = KuBes.Art NO-ERROR. cAktivitaet = (IF AVAILABLE tTabel THEN tTabel.Bez1 ELSE KuBes.Art). CREATE tKuBesSpe. BUFFER-COPY KuBesSpe TO tKuBesSpe ASSIGN tKuBesSpe.Vertr = KuBes.Vertr tKuBesSpe.cSpesenArt = cSpesenart tKuBesSpe.Aktivitaet = cAktivitaet tKuBesSpe.cKonto = cKonto tKuBesSpe.lKunden = lKunde tKuBesSpe.Kontakt = (IF lKunde THEN KuBes.Kontakt ELSE ''). END. FIND FIRST tKuBesSpe NO-LOCK NO-ERROR. IF NOT AVAILABLE tKuBesSpe THEN RETURN. cVorlage = 'SpesenFormular.xls'. cDokument = 'SpesenFormular.xls'. cDaten = 'SpesenFormular.txt'. cDateiName = cDokument + CHR(01) + cVorlage. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDokument = RETURN-VALUE. cDateiName = cDaten. RUN CREATEDATEI ( INPUT cDateiName ). IF RETURN-VALUE BEGINS 'ERROR' THEN RETURN NO-APPLY. cDaten = RETURN-VALUE. OUTPUT TO VALUE(cDaten). PUT CONTROL '£Datum£BelegNr£Lokal£Anz.Pers.£Kunde£Kontakt£Bemerkung£Aktivität£Betrag£Mwst£Konto' CHR(10) '£' CHR(10). FOR EACH tKuBesSpe BREAK BY tKuBesSpe.Vertr BY tKuBesSpe.SpesenArt BY tKuBesSpe.Datum_1 BY tKuBesSpe.Knr : IF FIRST-OF ( tKuBesSpe.Vertr ) THEN DO: RUN FIND_VERTRETER ( INPUT Vertr, OUTPUT cString ) NO-ERROR. IF cString = '' THEN cVertreter = STRING(tKuBesSpe.Vertr,'99 ') + '??????????'. ELSE cVertreter = STRING(tKuBesSpe.Vertr,'99 ') + ENTRY(2, cString, CHR(01)). PUT CONTROL cString CHR(10) '£' CHR(10). EMPTY TEMP-TABLE tTotale. END. IF FIRST-OF(tKuBesSpe.SpesenArt) THEN DO: PUT CONTROL tKuBesSpe.cSpesenart CHR(10). END. cKunde = ''. IF tKuBesSpe.lKunden THEN DO: FIND Adresse NO-LOCK USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = tKuBesSpe.Knr AND Adresse.Aktiv = TRUE NO-ERROR. IF AVAILABLE Adresse THEN DO: IF Adresse.Firma1 <> '' THEN cKunde = TRIM(Adresse.Firma1 + ' ' + Adresse.Firma2 ). ELSE cKunde = TRIM(Adresse.Name + ' ' + Adresse.Vorname). END. END. PUT CONTROL '£'. PUT CONTROL STRING(tKuBesSpe.Datum_1,'99.99.9999') '£' tKuBesSpe.BelegNr '£' tKuBesSpe.Lokal '£' tKuBesSpe.AnzPers '£' cKunde '£' tKuBesSpe.Kontakt '£' tKuBesSpe.Bemerk '£' tKuBesSpe.Aktivitaet '£' TRIM(STRING(tKuBesSpe.Betrag,'->>>>>9.99')) '£' TRIM(STRING(tKuBesSpe.MWSt_Ansatz,'>>9.99%')) '£' tKuBesSpe.cKonto CHR(10). DO i = 1 TO NUM-ENTRIES(cToArt, ','): cArt = ENTRY(i, cToArt, ','). CASE cArt: WHEN '1SPA' THEN cKey = tKuBesSpe.cSpesenart. WHEN '2KON' THEN cKey = tKuBesSpe.cKonto. WHEN '3MWS' THEN cKey = STRING(tKuBesSpe.MWST_Ansatz,'z9.99%'). WHEN '8VER' THEN cKey = cVertreter. END CASE. FIND FIRST tTotale WHERE tTotale.cArt = cArt AND tTotale.cSchluessel = cKey NO-ERROR. IF NOT AVAILABLE tTotale THEN DO: CREATE tTotale. ASSIGN tTotale.cArt = cArt tTotale.cSchluessel = cKey. END. tTotale.Betrag = tTotale.Betrag + tKuBesSpe.Betrag. END. IF LAST-OF ( tKuBesSpe.SpesenArt ) THEN DO: FIND FIRST tTotale WHERE tTotale.cArt = '1SPA' NO-ERROR. PUT CONTROL 'Total ' tTotale.cSchluessel '£££££££££' TRIM(STRING(tTotale.Betrag,'->>>>>9.99')) CHR(10) '£' CHR(10). DELETE tTotale. END. IF NOT LAST-OF(tKuBesSpe.Vertr) THEN NEXT. FOR EACH tTotale BREAK BY tTotale.cArt BY tTotale.cSchluessel: PUT CONTROL 'Total ' tTotale.cSchluessel '£££££££££' TRIM(STRING(tTotale.Betrag,'->>>>>9.99')) CHR(10). IF LAST-OF ( tTotale.cArt ) THEN PUT CONTROL '£' CHR(10). END. END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR. IF NOT VALID-HANDLE(excelAppl) THEN DO: RUN FEHLER ( INPUT 1035 ). RETURN. END. RUN OPENEXCEL ( INPUT excelAppl, INPUT cDokument, INPUT '', OUTPUT ja ). IF NOT ja THEN DO: RUN FEHLER ( INPUT 1040 ). DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. Zelle = 'A6'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SCHREIBEN_FEHLWERTE gVertrAusw PROCEDURE SCHREIBEN_FEHLWERTE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cVal AS CHARACTER NO-UNDO. DEFINE VARIABLE cKey AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-6}. cKey = ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.' ) NO-ERROR. cVal = CB_Vertreter :SCREEN-VALUE + '@' + CB_Listenart :SCREEN-VALUE + '@' + F_Kundengrp :SCREEN-VALUE + '@' + F_Preisgrp :SCREEN-VALUE + '@' + F_VonDat :SCREEN-VALUE + '@' + F_BisDat :SCREEN-VALUE + '@' + F_VonKnr :SCREEN-VALUE + '@' + F_BisKnr :SCREEN-VALUE + '@' + R_Abgeschl :SCREEN-VALUE + '@' + F_Aktivitaeten:SCREEN-VALUE + '@' + R_Sort :SCREEN-VALUE + '@'. PUT-KEY-VALUE SECTION 'Auswertungen' KEY cKey VALUE cVal. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE selectPage gVertrAusw PROCEDURE selectPage : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER piPageNum AS INTEGER NO-UNDO. DEFINE VARIABLE FMutFlag AS LOG NO-UNDO. DEFINE VARIABLE MutProg AS CHARACTER NO-UNDO. FMutFlag = DYNAMIC-FUNCTION('getMutflagAlt':U) NO-ERROR. DO WHILE TRUE: IF NOT FMutFlag THEN LEAVE. MutProg = DYNAMIC-FUNCTION('GETMUTPROG':U). IF MutProg <> THIS-PROCEDURE:FILE-NAME THEN LEAVE. RETURN NO-APPLY. END. CASE piPageNum: END CASE. AktSeite = DYNAMIC-FUNCTION('getCurrentPage':U). CASE AktSeite: WHEN 1 THEN DO: /* RUN removeLink ( h_dyntoolbar , 'TableIO':U , h_v-auftr ). */ /* RUN removeLink ( h_dyntoolbar , '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 TABELLEN gVertrAusw PROCEDURE TABELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipCode AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER ipRecArt AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER opString AS CHARACTER NO-UNDO. opString = STRING(ipCode,'999 '). FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = lFirma AND Tabel.RecArt = ipRecArt AND Tabel.CodeC = '' AND Tabel.CodeI = ipCode AND Tabel.Sprcd = 1 NO-LOCK NO-ERROR. IF AVAILABLE Tabel THEN opString = opString + Tabel.Bez1. RETURN. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TOOLBAR gVertrAusw PROCEDURE TOOLBAR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcAction AS CHARACTER NO-UNDO. /* RUN TOOLBAR IN h_dyntoolbar ( INPUT pcAction ). */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMSAETZE gVertrAusw PROCEDURE UMSAETZE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipKnr AS INTEGER NO-UNDO. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE j AS INTEGER NO-UNDO. DEFINE VARIABLE k AS INTEGER NO-UNDO. DEFINE VARIABLE xFirma AS CHARACTER NO-UNDO. DEFINE VARIABLE cWgr AS CHARACTER NO-UNDO. DEFINE VARIABLE cWgrTit AS CHARACTER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE iFTot AS DECIMAL NO-UNDO. DEFINE VARIABLE iGTot AS DECIMAL NO-UNDO. DEFINE VARIABLE iJTot AS DECIMAL NO-UNDO. EMPTY TEMP-TABLE TUmsatz. DO i = 1 TO NUM-ENTRIES(cFirma, ','): xFirma = ENTRY(i, cFirma, ','). FOR EACH DeArUms USE-INDEX DeArUms-k3 WHERE DeArUms.Firma = xFirma AND DeArUms.Knr = ipKnr NO-LOCK, FIRST Artst USE-INDEX Artst-k1 WHERE Artst.Firma = DeArUms.Firma AND Artst.Artnr = DeArUms.Artnr AND Artst.Inhalt = DeArUms.Inhalt AND Artst.Jahr = DeArUms.Jahrg NO-LOCK: k = Artst.Wg_Grp. FIND FIRST TWgr USE-INDEX WarenGrp-k1 WHERE TWgr.Firma = Artst.Firma AND TWgr.Wgr = k NO-LOCK NO-ERROR. IF NOT AVAILABLE TWgr THEN k = 999. FIND TUmsatz USE-INDEX TUmsatz-k1 WHERE TUmsatz.Knr = DeArUms.Knr AND TUmsatz.Firma = DeArUms.Firma AND TUmsatz.Jahr = DeArUms.Jahr AND TUmsatz.Wgr = k NO-ERROR. IF NOT AVAILABLE TUmsatz THEN DO: CREATE TUmsatz. ASSIGN TUmsatz.Knr = DeArUms.Knr TUmsatz.Firma = DeArUms.Firma TUmsatz.Jahr = DeArUms.Jahr TUmsatz.Wgr = k NO-ERROR. END. TUmsatz.Umsatz = TUmsatz.Umsatz + DeArUms.VP_Kum. END. END. FOR EACH TUmsatz WHERE TUmsatz.Jahr < 9999: FIND BUmsatz USE-INDEX TUmsatz-k1 WHERE BUmsatz.Knr = TUmsatz.Knr AND BUmsatz.Firma = TUmsatz.Firma AND BUmsatz.Jahr = 9999 AND BUmsatz.Wgr = TUmsatz.Wgr NO-ERROR. IF NOT AVAILABLE BUmsatz THEN DO: CREATE BUmsatz. ASSIGN BUmsatz.Knr = TUmsatz.Knr BUmsatz.Firma = TUmsatz.Firma BUmsatz.Jahr = 9999 BUmsatz.Wgr = TUmsatz.Wgr NO-ERROR. END. BUmsatz.Umsatz = BUmsatz.Umsatz + TUmsatz.Umsatz. TotUmsatz = TotUmsatz + TUmsatz.Umsatz. END. iGTot = 0. FOR EACH TUmsatz NO-LOCK BREAK BY TUmsatz.Knr BY TUmsatz.Firma BY TUmsatz.Jahr BY TUmsatz.Wgr : IF FIRST-OF ( TUmsatz.Firma ) THEN DO: iFTot = 0. j = 0. FIND Steuer WHERE Steuer.Firma = TUmsatz.Firma NO-LOCK. PUT CONTROL 'Umsätze in Firma : ' Steuer.Firma1 CHR(10). cWgr = ''. cWgrTit = ''. FOR EACH TWgr USE-INDEX WarenGrp-k1 WHERE TWgr.Firma = TUmsatz.Firma NO-LOCK: cWgr = cWgr + ';' + STRING(TWgr.Wgr,'999'). cWgrTit = cWgrTit + ';' + TWgr.Bez1. j = j + 1. END. cWgr = cWgr + ';Undef'. cWgrTit = cWgrTit + ';Diverse'. j = j + 1. cWgr = cWgr + ';Tot'. cWgrTit = cWgrTit + ';Total'. j = j + 1. cWgr = SUBSTRING(cWgr ,02). cWgrTit = SUBSTRING(cWgrTit ,02). PUT CONTROL 'xGrau£'. DO i = 1 TO j: PUT CONTROL '£' ENTRY(i, cWgrTit, ';'). END. PUT CONTROL CHR(10) '£' CHR(10). END. IF FIRST-OF ( TUmsatz.Jahr ) THEN DO: iJTot = 0. cString = FILL(';', j). END. i = 0. i = LOOKUP(STRING(TUmsatz.Wgr,'999'), cWgr, ';'). IF i = 0 THEN i = j - 1. ENTRY(i, cString, ';') = TRIM(STRING(TUmsatz.Umsatz,'->>>,>>>,>>9')). iJTot = iJTot + TUmsatz.Umsatz. iFTot = iJTot + TUmsatz.Umsatz. iGTot = iJTot + TUmsatz.Umsatz. IF NOT LAST-OF ( TUmsatz.Jahr ) THEN NEXT. ENTRY(j, cString, ';') = TRIM(STRING(iJTot,'->>>,>>>,>>9')). PUT CONTROL STRING(TUmsatz.Jahr,'xRechts£9999'). DO i = 1 TO j: PUT CONTROL '£' ENTRY(i, cString, ';'). END. PUT CONTROL CHR(10). IF NOT LAST-OF ( TUmsatz.Firma ) THEN NEXT. PUT CONTROL '£' CHR(10). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WARENGRUPPEN gVertrAusw PROCEDURE WARENGRUPPEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipString AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER opString AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. opString = ';;;;'. DO ii = 1 TO 5: i1 = INTEGER(ENTRY(ii, ipString, ';')). IF i1 = 0 THEN NEXT. FIND WarenGrp USE-INDEX WarenGrp-k1 WHERE WarenGrp.Firma = Firma AND WarenGrp.Wgr = i1 NO-LOCK NO-ERROR. IF NOT AVAILABLE WarenGrp THEN ENTRY(ii, opString, ';') = '??????????'. ELSE ENTRY(ii, opString, ';') = WarenGrp.Bez1. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME