&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gAlkoholika &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gAlkoholika /*------------------------------------------------------------------------ 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 --- */ DEF VAR MaxPage AS INT NO-UNDO. DEF VAR AktSeite AS INT NO-UNDO. DEF VAR FMutFlag AS LOG NO-UNDO. DEF VAR Firma AS CHAR NO-UNDO. DEF VAR AdFirma AS CHAR NO-UNDO. DEF VAR ProgName AS CHAR NO-UNDO. DEF VAR cVorlage AS CHAR NO-UNDO. DEF VAR cDaten AS CHAR NO-UNDO. DEF VAR cDokument AS CHAR NO-UNDO. DEF VAR cDateiName AS CHAR NO-UNDO. DEF VAR Zelle AS CHAR NO-UNDO. DEF VAR excelAppl AS COM-HANDLE NO-UNDO. DEF VAR AnzZei AS INT NO-UNDO. DEF VAR Zeile AS INT NO-UNDO. DEF VAR Seite AS INT NO-UNDO. DEF VAR KopfText AS CHAR NO-UNDO. DEF VAR FussText AS CHAR NO-UNDO EXTENT 10. DEF VAR TitelText AS CHAR NO-UNDO. DEF VAR DatumText AS CHAR NO-UNDO. DEF STREAM INP_Stream. DEF STREAM OUT_Stream. DEF TEMP-TABLE TArtikel FIELD Knr AS INT FIELD Datum AS DATE FIELD Faknr AS INT FIELD Artnr AS INT FIELD Inhalt AS INT FIELD Jahr AS INT FIELD Bez1 AS CHAR FIELD Bez2 AS CHAR FIELD Alk AS DEC FIELD KGeb_Cd AS CHAR FIELD Menge AS DEC DECIMALS 3 FIELD Liter AS DEC DECIMALS 3 FIELD Alk100% AS DEC DECIMALS 3 INDEX TArtikel-k1 Knr Datum Faknr Artnr Inhalt Jahr . DEF TEMP-TABLE TExcel FIELD Zeile AS INT FIELD KeyWort AS CHAR FIELD Felder AS CHAR EXTENT 10. /* _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 gAlkoholika /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-12 RECT-13 RECT-14 RECT-15 F_VonArtnr ~ F_BisArtnr F_Warengrp F_VonKnr F_BisKnr F_Kundengrp CB_Adresscode F_SelCode ~ F_VonDatum F_BisDatum Btn_OK Btn_Cancel &Scoped-Define DISPLAYED-OBJECTS F_VonArtnr F_BisArtnr F_Warengrp F_VonKnr ~ F_BisKnr F_Kundengrp CB_Adresscode F_SelCode F_VonDatum F_BisDatum /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 F_VonArtnr F_BisArtnr F_Warengrp F_VonKnr F_BisKnr ~ F_Kundengrp F_SelCode F_VonDatum F_BisDatum /* _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 14 BY 1.19. 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 TOOLTIP "start der Excelauswertung". DEFINE VARIABLE CB_Adresscode AS CHARACTER FORMAT "X(256)":U LABEL "Adresscode/Inhalt" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 20 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "-" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BisDatum 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 "Kudengruppen" VIEW-AS FILL-IN NATIVE SIZE 46.4 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_SelCode AS CHARACTER FORMAT "x(20)":U LABEL "/" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "von - bis Artikelnummer" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VonDatum 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 Knr" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Warengrp AS CHARACTER FORMAT "X(256)":U LABEL "Warengruppen" VIEW-AS FILL-IN NATIVE SIZE 46.4 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-12 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 84 BY 13. DEFINE RECTANGLE RECT-13 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 80 BY 2.86. DEFINE RECTANGLE RECT-14 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 80 BY 3.86. DEFINE RECTANGLE RECT-15 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 80 BY 1.67. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gAlkoholika F_VonArtnr AT ROW 2.19 COL 28 COLON-ALIGNED F_BisArtnr AT ROW 2.19 COL 41 COLON-ALIGNED F_Warengrp AT ROW 3.19 COL 28 COLON-ALIGNED F_VonKnr AT ROW 5.38 COL 28 COLON-ALIGNED F_BisKnr AT ROW 5.38 COL 40.8 COLON-ALIGNED F_Kundengrp AT ROW 6.38 COL 28 COLON-ALIGNED CB_Adresscode AT ROW 7.38 COL 28 COLON-ALIGNED F_SelCode AT ROW 7.38 COL 50 COLON-ALIGNED F_VonDatum AT ROW 9.76 COL 28 COLON-ALIGNED F_BisDatum AT ROW 9.76 COL 47 COLON-ALIGNED Btn_OK AT ROW 11.81 COL 30 Btn_Cancel AT ROW 12.05 COL 55.8 RECT-12 AT ROW 1.24 COL 2 RECT-13 AT ROW 1.71 COL 4 RECT-14 AT ROW 5 COL 4 RECT-15 AT ROW 9.48 COL 4 SPACE(2.99) SKIP(3.27) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Verkauf Alkoholika" 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 gAlkoholika /* ************************* 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 gAlkoholika FRAME-NAME */ ASSIGN FRAME gAlkoholika:SCROLLABLE = FALSE FRAME gAlkoholika:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_BisArtnr IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_BisDatum IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_BisKnr IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_Kundengrp IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_SelCode IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_VonArtnr IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_VonDatum IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_VonKnr IN FRAME gAlkoholika 6 */ /* SETTINGS FOR FILL-IN F_Warengrp IN FRAME gAlkoholika 6 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gAlkoholika /* Query rebuild information for DIALOG-BOX gAlkoholika _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gAlkoholika */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gAlkoholika &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gAlkoholika gAlkoholika ON END-ERROR OF FRAME gAlkoholika /* Verkauf Alkoholika */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gAlkoholika gAlkoholika ON GO OF FRAME gAlkoholika /* Verkauf Alkoholika */ DO: /* RUN ENDE_PROGRAMM ( INPUT THIS-PROCEDURE:FILE-NAME ) NO-ERROR. */ END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gAlkoholika gAlkoholika ON WINDOW-CLOSE OF FRAME gAlkoholika /* Verkauf Alkoholika */ 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 gAlkoholika ON CHOOSE OF Btn_Cancel IN FRAME gAlkoholika /* 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 gAlkoholika ON CHOOSE OF Btn_OK IN FRAME gAlkoholika /* 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 F_BisKnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_BisKnr gAlkoholika ON ALT-F OF F_BisKnr IN FRAME gAlkoholika /* - */ DO: DEF VAR iRecid AS RECID NO-UNDO. RUN 'g-suchen-adresse.w':U ( 'LIE', OUTPUT iRecid ). IF iRecid = ? OR iRecid = 0 THEN RETURN NO-APPLY. FIND Adresse NO-LOCK WHERE RECID(Adresse) = iRecid NO-ERROR. SELF:SCREEN-VALUE = STRING(Adresse.Knr). APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Kundengrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Kundengrp gAlkoholika ON RIGHT-MOUSE-CLICK OF F_Kundengrp IN FRAME gAlkoholika /* Kudengruppen */ DO: RUN g-auswahl-tabelle.w ( INPUT SELF, INPUT 'KUNDGRP' ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_VonKnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_VonKnr gAlkoholika ON ALT-F OF F_VonKnr IN FRAME gAlkoholika /* von - bis Knr */ DO: DEF VAR iRecid AS RECID NO-UNDO. RUN 'g-suchen-adresse.w':U ( 'DEB', OUTPUT iRecid ). IF iRecid = ? OR iRecid = 0 THEN RETURN NO-APPLY. FIND Adresse NO-LOCK WHERE RECID(Adresse) = iRecid NO-ERROR. SELF:SCREEN-VALUE = STRING(Adresse.Knr). F_BisKnr:SCREEN-VALUE = STRING(Adresse.Knr). APPLY 'ENTRY' TO SELF. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Warengrp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Warengrp gAlkoholika ON RIGHT-MOUSE-CLICK OF F_Warengrp IN FRAME gAlkoholika /* Warengruppen */ DO: RUN g-auswahl-wgr.w ( INPUT SELF ). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gAlkoholika /* *************************** Main Block *************************** */ MaxPage = 1. AktSeite = 1. Firma = DYNAMIC-FUNCTION('GETMANDANT':U) NO-ERROR. AdFirma = DYNAMIC-FUNCTION('GETADMANDANT':U) NO-ERROR. ProgName = ENTRY(1, THIS-PROCEDURE:FILE-NAME, '.') NO-ERROR. SESSION:DATA-ENTRY-RETURN = TRUE. /* TRIGGERS ------------------------------------------------------ */ /* 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 gAlkoholika _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 gAlkoholika PROCEDURE BEREINIGEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF INPUT PARAMETER ipHandle AS HANDLE NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR i AS INT 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 disable_UI gAlkoholika _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 gAlkoholika. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gAlkoholika PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cString AS CHAR NO-UNDO. DEF VAR i AS INT NO-UNDO. FIND Femeld WHERE Femeld.Sprcd = 1 AND Femeld.Fenr = 999 NO-LOCK NO-ERROR. cString = ''. IF AVAILABLE Femeld THEN DO WITH FRAME {&FRAME-NAME}: DO i = 1 TO NUM-ENTRIES(Femeld.Fetext, ','): cString = cString + ';' + ENTRY (i, Femeld.Fetext, ',') + ';' + STRING(i,'99'). END. END. IF cString = '' THEN cString = ';'. ELSE cString = SUBSTRING(cString,02). CB_Adresscode:DELIMITER = ';'. CB_Adresscode:LIST-ITEM-PAIRS = cString. CB_Adresscode:SCREEN-VALUE = ENTRY(2, CB_Adresscode:LIST-ITEM-PAIRS, ';') NO-ERROR. RUN SUPER. RUN FENSTER_TITEL ( INPUT FRAME {&FRAME-NAME}:HANDLE ) NO-ERROR. RUN LESENFWAUSWERTUNGEN ( INPUT ProgName, INPUT FRAME {&FRAME-NAME}:CURRENT-ITERATION ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gAlkoholika _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 F_VonArtnr F_BisArtnr F_Warengrp F_VonKnr F_BisKnr F_Kundengrp CB_Adresscode F_SelCode F_VonDatum F_BisDatum WITH FRAME gAlkoholika. ENABLE RECT-12 RECT-13 RECT-14 RECT-15 F_VonArtnr F_BisArtnr F_Warengrp F_VonKnr F_BisKnr F_Kundengrp CB_Adresscode F_SelCode F_VonDatum F_BisDatum Btn_OK Btn_Cancel WITH FRAME gAlkoholika. VIEW FRAME gAlkoholika. {&OPEN-BROWSERS-IN-QUERY-gAlkoholika} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gAlkoholika 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 exitObject gAlkoholika 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 KOPF gAlkoholika PROCEDURE KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR i AS INT NO-UNDO. Seite = Seite + 1. IF Seite = 1 THEN DO: DO i = 1 TO 3: PUT CONTROL '£' CHR(10). END. FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = TArtikel.Knr NO-LOCK NO-ERROR. DO i = 1 TO 11: IF i = 1 THEN PUT CONTROL 'Adresse'. CASE i: WHEN 1 THEN PUT CONTROL '£' Steuer.Firma1 '£'. WHEN 2 THEN PUT CONTROL '£' Steuer.Firma2 '£'. WHEN 3 THEN PUT CONTROL '£' Steuer.Strasse '£'. WHEN 4 THEN PUT CONTROL '£' Steuer.Ort '£'. OTHERWISE PUT CONTROL '££'. END CASE. PUT CONTROL '£££' Adresse.Anschrift[i] CHR(10). END. PUT CONTROL '£' CHR(10) '£' CHR(10) '£' CHR(10) 'Knr£££££££££' 'Knr: ' STRING(TArtikel.Knr,'999999') CHR(10) '£' CHR(10). END. ELSE DO: DO i = 1 TO 2: PUT CONTROL '£' CHR(10). END. END. PUT CONTROL KopfText '£££££££££Seite : ' TRIM(STRING(Seite,'>>9')) CHR(10) '£' CHR(10). PUT CONTROL 'Titel' TitelText CHR(10) '£' CHR(10). IF Seite = 1 THEN Zeile = 25. ELSE Zeile = 8. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPORT gAlkoholika PROCEDURE REPORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR ja AS LOG NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR Feld AS INT NO-UNDO. DEF VAR i AS INT NO-UNDO. DEF VAR j AS INT NO-UNDO. DEF VAR Liter AS DEC DECIMALS 3 NO-UNDO. DEF VAR L100% AS DEC DECIMALS 3 NO-UNDO. DO WITH FRAME {&FRAME-NAME}: RUN BEREINIGEN ( INPUT F_Kundengrp :HANDLE ). RUN BEREINIGEN ( INPUT F_Warengrp :HANDLE ). 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_VonArtnr = 0 AND F_BisArtnr = 0 THEN F_BisArtnr = 999999. IF F_VonArtnr > F_BisArtnr THEN F_BisArtnr = F_VonArtnr. IF F_VonDatum = ? THEN F_VonDatum = DATE(01,01,YEAR(TODAY)). IF F_BisDatum = ? THEN F_BisDatum = DATE(12,31,YEAR(TODAY)). IF F_BisDatum < F_VonDatum THEN F_BisDatum = F_VonDatum. DISPLAY {&List-6}. RUN SCHREIBENFWAUSWERTUNGEN ( INPUT ProgName, INPUT FRAME {&FRAME-NAME}:CURRENT-ITERATION ) NO-ERROR. DatumText = STRING(F_VonDatum,'99.99.9999') + ' - ' + STRING(F_BisDatum,'99.99.9999'). END. EMPTY TEMP-TABLE TArtikel. EMPTY TEMP-TABLE TExcel . Feld = INTEGER(CB_Adresscode:SCREEN-VALUE). FOR EACH Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr >= F_VonKnr AND Adresse.Knr <= F_BisKnr AND Adresse.Aktiv = TRUE NO-LOCK: ja = TRUE. DO WHILE TRUE: IF F_SelCode = '' THEN LEAVE. i = 0. CASE Feld: WHEN 01 THEN i = LOOKUP(Adresse.Cd01, F_SelCode, ',') NO-ERROR. WHEN 02 THEN i = LOOKUP(Adresse.Cd02, F_SelCode, ',') NO-ERROR. WHEN 03 THEN i = LOOKUP(Adresse.Cd03, F_SelCode, ',') NO-ERROR. WHEN 04 THEN i = LOOKUP(Adresse.Cd04, F_SelCode, ',') NO-ERROR. WHEN 05 THEN i = LOOKUP(Adresse.Cd05, F_SelCode, ',') NO-ERROR. WHEN 06 THEN i = LOOKUP(Adresse.Cd06, F_SelCode, ',') NO-ERROR. WHEN 07 THEN i = LOOKUP(Adresse.Cd07, F_SelCode, ',') NO-ERROR. WHEN 08 THEN i = LOOKUP(Adresse.Cd08, F_SelCode, ',') NO-ERROR. WHEN 09 THEN i = LOOKUP(Adresse.Cd09, F_SelCode, ',') NO-ERROR. WHEN 10 THEN i = LOOKUP(Adresse.Cd10, F_SelCode, ',') NO-ERROR. WHEN 11 THEN i = LOOKUP(Adresse.Cd11, F_SelCode, ',') NO-ERROR. WHEN 12 THEN i = LOOKUP(Adresse.Cd12, F_SelCode, ',') NO-ERROR. WHEN 13 THEN i = LOOKUP(Adresse.Cd13, F_SelCode, ',') NO-ERROR. WHEN 14 THEN i = LOOKUP(Adresse.Cd14, F_SelCode, ',') NO-ERROR. WHEN 15 THEN i = LOOKUP(Adresse.Cd15, F_SelCode, ',') NO-ERROR. END CASE. IF i > 0 THEN LEAVE. ja = FALSE. LEAVE. END. IF NOT ja THEN NEXT. FIND Debst USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = Adresse.Knr AND Debst.Aktiv = TRUE NO-LOCK NO-ERROR. IF NOT AVAILABLE Debst THEN NEXT. IF F_Kundengrp = '' THEN. ELSE DO: IF LOOKUP(STRING(Debst.Ku_Grp,'999'), F_Kundengrp, ',') = 0 THEN NEXT. END. FOR EACH Artbw USE-INDEX Artbw-k3 WHERE Artbw.Firma = Debst.Firma AND Artbw.Knr = Debst.Knr AND Artbw.Faknr > 0 AND Artbw.Fak_Dat >= F_VonDatum AND Artbw.Fak_Dat <= F_BisDatum AND Artbw.Artnr >= F_VonArtnr AND Artbw.Artnr <= F_BisArtnr NO-LOCK, FIRST Artst USE-INDEX Artst-k1 WHERE Artst.Firma = Artbw.Firma AND Artst.Artnr = Artbw.Artnr AND Artst.Inhalt = Artbw.Inhalt AND Artst.Jahr = Artbw.Jahr AND Artst.EAV_Code <> '' NO-LOCK: IF F_Warengrp = '' THEN. ELSE DO: IF LOOKUP(STRING(Artst.Wg_Grp,'999'), F_Warengrp , ',') = 0 THEN NEXT. END. CREATE TArtikel. ASSIGN TArtikel.Knr = Debst.Knr TArtikel.Datum = Artbw.Fak_Dat TArtikel.Faknr = Artbw.Faknr TArtikel.Artnr = Artst.Artnr TArtikel.Inhalt = Artst.Inhalt TArtikel.Jahr = Artst.Jahr TArtikel.Bez1 = Artbw.Bez1 TArtikel.Bez2 = Artbw.Bez2 TArtikel.KGeb_Cd = Artbw.KGeb_Cd TArtikel.Alk = Artbw.Alk_Gehalt TArtikel.Menge = Artbw.Menge TArtikel.Liter = Artbw.Liter. IF TArtikel.Alk = 0 THEN TArtikel.Alk = Artst.Alk_Gehalt. TArtikel.Alk100% = TArtikel.Liter * TArtikel.Alk / 100. END. END. FIND FIRST TArtikel NO-LOCK NO-ERROR. IF NOT AVAILABLE TArtikel THEN RETURN. cVorlage = 'AlkoholVerkauf' + '.xls'. cDokument = 'AlkoholVerkauf' + '.xls'. cDaten = 'AlkoholVerkauf' + '.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. 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. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = Firma NO-LOCK NO-ERROR. KopfText = ''. FussText = ''. TitelText = ''. excelAppl:Sheets("Texte"):Select. DO i = 1 TO 7: DO j = 65 TO 75: Zelle = CHR(j) + STRING(i). excelAppl:Range(Zelle):Select. cString = excelAppl:SELECTION:VALUE. IF cString = ? THEN cString = ''. FussText[i] = Fusstext[i] + '£' + cString. END. END. Zelle = 'A9'. excelAppl:Range(Zelle):Select. AnzZei = INTEGER(excelAppl:SELECTION:VALUE). Zelle = 'A10'. excelAppl:Range(Zelle):Select. KopfText = excelAppl:SELECTION:VALUE. i = INDEX(KopfText, '%1%'). IF i > 0 THEN KopfText = SUBSTRING(KopfText,01,i - 1) + DatumText + SUBSTRING(KopfText,i + 3). DO j = 65 TO 74: Zelle = CHR(j) + '15'. excelAppl:Range(Zelle):Select. cString = excelAppl:Selection:Value. IF cString = ? THEN cString = ''. TitelText = TitelText + '£' + cString. END. excelAppl:Sheets("Liste"):Select. OUTPUT TO VALUE(cDaten). FOR EACH TArtikel USE-INDEX TArtikel-k1 NO-LOCK BREAK BY TArtikel.Knr BY TArtikel.Datum BY TArtikel.Faknr BY TArtikel.Artnr BY TArtikel.Inhalt BY TArtikel.Jahr : IF FIRST-OF ( TArtikel.Knr ) THEN DO: Liter = 0. L100% = 0. Seite = 0. IF FIRST ( TArtikel.Knr ) THEN PUT CONTROL '£' CHR(10). RUN KOPF. END. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = Firma AND KGebinde.Geb_Cd = TArtikel.KGeb_Cd NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(TArtikel.Datum ,'99.99.9999') '£' TRIM(STRING(TArtikel.Faknr ,'zzzzzz')) '£' STRING(TArtikel.Artnr ,'999999') '£' TArtikel.Bez1 '£' STRING(TArtikel.Alk ,'z9.99%') '£'. IF AVAILABLE KGebinde THEN PUT CONTROL KGebinde.KBez '£'. ELSE PUT CONTROL '? ' TArtikel.KGeb_Cd '£'. PUT CONTROL TRIM(STRING(TArtikel.Menge ,'->>>,>>9.99')) '£' TRIM(STRING(TArtikel.Liter ,'->>>,>>9.99')) '£' TRIM(STRING(TArtikel.ALk100%,'->>>,>>9.99')) CHR(10). Liter = Liter + TArtikel.Liter. L100% = L100% + TArtikel.Alk100%. Zeile = Zeile + 1. IF NOT LAST-OF ( TArtikel.Knr ) THEN DO: i = Zeile + 10. IF i > AnzZei THEN DO: PUT CONTROL 'ENDE' CHR(10). RUN KOPF. END. NEXT. END. PUT CONTROL 'Total££££££££' TRIM(STRING(Liter,'->>>,>>9.99')) '£' TRIM(STRING(L100%,'->>>,>>9.99')) CHR(10) '£' CHR(10) '£' CHR(10). DO i = 1 TO 7: PUT CONTROL FussText[i] CHR(10). END. PUT CONTROL 'ENDE' CHR(10). END. OUTPUT CLOSE. FIND FIRST TArtikel NO-LOCK NO-ERROR. IF NOT AVAILABLE TArtikel THEN DO: DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. RETURN NO-APPLY. END. i = 0. INPUT STREAM INP_Stream FROM VALUE(cDaten) NO-ECHO NO-MAP. REPEAT TRANSACTION ON STOP UNDO, LEAVE WITH FRAME f_Print: i = i + 1. CREATE TExcel. IMPORT STREAM INP_Stream DELIMITER '£' TExcel.KeyWort TExcel.Felder . TExcel.Zeile = i. END. INPUT STREAM INP_Stream CLOSE. OUTPUT STREAM OUT_Stream TO VALUE(cDaten) NO-MAP. FOR EACH TExcel BY TExcel.Zeile: CASE TExcel.KeyWort: WHEN 'Knr' THEN PUT STREAM OUT_Stream CONTROL '£'. WHEN 'Titel' THEN PUT STREAM OUT_Stream CONTROL '£'. WHEN 'Adresse' THEN PUT STREAM OUT_Stream CONTROL '£'. WHEN 'Total' THEN PUT STREAM OUT_Stream CONTROL '£'. WHEN 'Ende' THEN PUT STREAM OUT_Stream CONTROL '£'. OTHERWISE PUT STREAM OUT_Stream CONTROL TExcel.KeyWort '£'. END CASE. EXPORT STREAM OUT_Stream DELIMITER '£' TExcel.Felder. END. OUTPUT STREAM OUT_Stream CLOSE. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:SELECTION:FormulaR1C1 = 'TEXT;' + cDaten. excelAppl:APPLICATION:RUN ( 'DateiEinfügen' ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:SELECTION:ColumnWidth = 0.3. FOR EACH TExcel WHERE TExcel.KeyWort <> '' BY TExcel.Zeile: CASE TExcel.KeyWort: WHEN 'Titel' THEN DO: Zelle = 'B' + STRING(TExcel.Zeile) + ':J' + STRING(TExcel.Zeile). excelAppl:Range(Zelle):SELECT. excelAppl:APPLICATION:RUN ( TExcel.KeyWort ). END. WHEN 'Adresse' THEN DO: Zelle = 'B' + STRING(TExcel.Zeile) + ':J' + STRING(TExcel.Zeile + 11). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:HorizontalAlignment = -4131. END. WHEN 'Total' THEN DO: Zelle = 'I' + STRING(TExcel.Zeile) + ':J' + STRING(TExcel.Zeile). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:Font:Bold = TRUE. Zelle = 'B' + STRING(TExcel.Zeile + 1) + ':J' + STRING(TExcel.Zeile + 8). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:HorizontalAlignment = -4131. END. WHEN 'ENDE' THEN DO: Zelle = 'A' + STRING(TExcel.Zeile). excelAppl:Range(Zelle):SELECT. excelAppl:ActiveWindow:SelectedSheets:HPageBreaks:Add(excelAppl:Selection). END. END CASE. END. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT excelAppl ) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME