&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME D-Dialog /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE THilfsTab NO-UNDO LIKE HilfsTab. DEFINE NEW SHARED TEMP-TABLE XTermOut NO-UNDO LIKE TermOut. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS D-Dialog /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress UIB. */ /*----------------------------------------------------------------------*/ /* 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 VProgName AS CHARACTER NO-UNDO. DEFINE VARIABLE ARecid AS RECID NO-UNDO. DEFINE VARIABLE BRecid AS RECID NO-UNDO. DEFINE VARIABLE TRecid AS RECID NO-UNDO. DEFINE VARIABLE VLiArt AS INTEGER NO-UNDO. DEFINE VARIABLE ok AS LOG NO-UNDO. DEFINE VARIABLE VTemp AS CHARACTER NO-UNDO. DEFINE VARIABLE VZeile AS CHARACTER FORMAT "x(255)" NO-UNDO. DEFINE VARIABLE XSort1 AS CHARACTER FORMAT "x(30)" NO-UNDO. DEFINE VARIABLE XSort2 AS CHARACTER FORMAT "x(30)" NO-UNDO. DEFINE VARIABLE XSort3 AS CHARACTER FORMAT "x(30)" NO-UNDO. DEFINE VARIABLE XSort4 AS CHARACTER FORMAT "x(30)" NO-UNDO. DEFINE VARIABLE FLeer AS LOG NO-UNDO. DEFINE VARIABLE VInhalt AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE GTotal AS DECIMAL DECIMALS 4 EXTENT 10 NO-UNDO. DEFINE VARIABLE VDatum AS DATE NO-UNDO. DEFINE VARIABLE BDatum AS DATE NO-UNDO. DEFINE VARIABLE IDatA AS DATE NO-UNDO. DEFINE VARIABLE IDatN AS DATE NO-UNDO. DEFINE BUFFER BArtst FOR Artst. DEFINE BUFFER BDebst FOR Debst. DEFINE BUFFER BAdresse FOR Adresse. DEFINE WORKFILE WHilfsTab LIKE HilfsTab. DEFINE TEMP-TABLE TArtbw LIKE Artbw. /* ---------- Globale Variablen ---------------------------------- */ { v8/globvar.i" " " " "SHARED" } { v8/debivar.i " " " " "SHARED" } { v8/artivar.i " " " " "SHARED" } { v8/contvar.i " " " " "SHARED" } { v8/listtitv.i "NEW" "SHARED" } /* _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 /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME D-Dialog /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES Listen /* Definitions for DIALOG-BOX D-Dialog */ &Scoped-define QUERY-STRING-D-Dialog FOR EACH Listen SHARE-LOCK &Scoped-define OPEN-QUERY-D-Dialog OPEN QUERY D-Dialog FOR EACH Listen SHARE-LOCK. &Scoped-define TABLES-IN-QUERY-D-Dialog Listen &Scoped-define FIRST-TABLE-IN-QUERY-D-Dialog Listen /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS CB_Listenart RS_Sort F_VArtnr F_VInhalt ~ F_VJahr F_BArtnr F_BInhalt F_BJahr F_Hersteller F_Warengruppe F_Detail ~ F_VDatum F_BDatum F_Abschliessen CB_Drucker CB_Schriftbild T_Drucker Btn_OK ~ Btn_Cancel RECT-2 RECT-3 &Scoped-Define DISPLAYED-OBJECTS CB_Listenart RS_Sort F_VArtnr F_VInhalt ~ F_VJahr F_BArtnr F_BInhalt F_BJahr F_Hersteller F_Warengruppe F_Detail ~ F_VDatum F_BDatum F_Abschliessen CB_Drucker CB_Schriftbild T_Drucker /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-1 RS_Sort F_VArtnr F_VInhalt F_VJahr F_BArtnr F_BInhalt ~ F_BJahr F_Hersteller F_Warengruppe F_Detail F_VDatum F_BDatum ~ F_Abschliessen T_Drucker /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD CREATEEXCEL D-Dialog FUNCTION CREATEEXCEL RETURNS COMPONENT-HANDLE ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-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 12 BY 1 BGCOLOR 8 . DEFINE BUTTON Btn_OK AUTO-GO LABEL "&Start" SIZE 12 BY 1 BGCOLOR 8 . DEFINE VARIABLE CB_Drucker AS CHARACTER FORMAT "X(256)":U VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Item-1" DROP-DOWN-LIST SIZE 33 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Listenart AS CHARACTER FORMAT "X(256)":U LABEL "Listenart" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Artikel mit EAV-Code","EAV-Inventar","EAV-Verkäufe","EAV-Buchhaltung" DROP-DOWN-LIST SIZE 50 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE CB_Schriftbild AS CHARACTER FORMAT "X(256)":U VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEMS "Item-1" DROP-DOWN-LIST SIZE 33 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BArtnr AS INTEGER FORMAT "999999":U INITIAL 0 LABEL "" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BDatum AS DATE FORMAT "99.99.9999":U LABEL "" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BInhalt AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_BJahr AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Hersteller AS CHARACTER FORMAT "x(256)":U LABEL "Hersteller" VIEW-AS FILL-IN NATIVE SIZE 43.2 BY 1 TOOLTIP "F1 = Auswahl der Codes" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VArtnr 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_VDatum 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_VInhalt AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_VJahr AS INTEGER FORMAT "9999":U INITIAL 0 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Warengruppe AS CHARACTER FORMAT "x(256)":U LABEL "Warengruppe" VIEW-AS FILL-IN NATIVE SIZE 43.2 BY 1 TOOLTIP "F1 = Auswahl der Codes" BGCOLOR 15 NO-UNDO. DEFINE VARIABLE RS_Sort AS INTEGER INITIAL 1 VIEW-AS RADIO-SET VERTICAL RADIO-BUTTONS "EAV-Code", 1, "", 2, "", 3 SIZE 50 BY 2 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 98 BY 3.38. DEFINE RECTANGLE RECT-3 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 98 BY 4.52. DEFINE VARIABLE F_Abschliessen AS LOGICAL INITIAL NO LABEL "Abschliessen" VIEW-AS TOGGLE-BOX SIZE 26.8 BY 1 NO-UNDO. DEFINE VARIABLE F_Detail AS LOGICAL INITIAL NO LABEL "ohne Artikel/Kunden-Detail" VIEW-AS TOGGLE-BOX SIZE 26.8 BY 1 NO-UNDO. DEFINE VARIABLE T_Drucker AS LOGICAL INITIAL NO LABEL "Druckersetup" VIEW-AS TOGGLE-BOX SIZE 20 BY 1 NO-UNDO. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY D-Dialog FOR Listen SCROLLING. &ANALYZE-RESUME /* ************************ Frame Definitions *********************** */ DEFINE FRAME D-Dialog CB_Listenart AT ROW 1.62 COL 9.8 COLON-ALIGNED RS_Sort AT ROW 4 COL 10 NO-LABELS F_VArtnr AT ROW 7 COL 24 COLON-ALIGNED F_VInhalt AT ROW 7 COL 35 COLON-ALIGNED NO-LABELS F_VJahr AT ROW 7 COL 43 COLON-ALIGNED NO-LABELS F_BArtnr AT ROW 7 COL 53 COLON-ALIGNED F_BInhalt AT ROW 7 COL 64 COLON-ALIGNED NO-LABELS F_BJahr AT ROW 7 COL 72 COLON-ALIGNED NO-LABELS F_Hersteller AT ROW 8 COL 24 COLON-ALIGNED F_Warengruppe AT ROW 9 COL 24 COLON-ALIGNED F_Detail AT ROW 9 COL 72 F_VDatum AT ROW 10 COL 24 COLON-ALIGNED F_BDatum AT ROW 10 COL 42 COLON-ALIGNED F_Abschliessen AT ROW 10 COL 72 CB_Drucker AT ROW 11.81 COL 3 NO-LABELS CB_Schriftbild AT ROW 11.81 COL 35 COLON-ALIGNED NO-LABELS T_Drucker AT ROW 11.81 COL 75 Btn_OK AT ROW 1.52 COL 73.2 Btn_Cancel AT ROW 1.52 COL 86.2 "Sortierung Artikel" VIEW-AS TEXT SIZE 50 BY .81 AT ROW 3 COL 10 FONT 9 RECT-2 AT ROW 2.81 COL 2 RECT-3 AT ROW 6.67 COL 2 SPACE(0.99) SKIP(2.11) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Eidg. Alkoholverwaltung" DEFAULT-BUTTON Btn_OK CANCEL-BUTTON Btn_Cancel. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Other Settings: COMPILE Temp-Tables and Buffers: TABLE: THilfsTab T "?" NO-UNDO AnaDat HilfsTab TABLE: XTermOut T "NEW SHARED" NO-UNDO AnaDat TermOut END-TABLES. */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB D-Dialog /* ************************* Included-Libraries *********************** */ {src/adm/method/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX D-Dialog FRAME-NAME Custom */ ASSIGN FRAME D-Dialog:SCROLLABLE = FALSE FRAME D-Dialog:HIDDEN = TRUE. /* SETTINGS FOR COMBO-BOX CB_Drucker IN FRAME D-Dialog ALIGN-L */ /* SETTINGS FOR TOGGLE-BOX F_Abschliessen IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_BArtnr IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_BDatum IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_BInhalt IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_BJahr IN FRAME D-Dialog 1 */ /* SETTINGS FOR TOGGLE-BOX F_Detail IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_Hersteller IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_VArtnr IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_VDatum IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_VInhalt IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_VJahr IN FRAME D-Dialog 1 */ /* SETTINGS FOR FILL-IN F_Warengruppe IN FRAME D-Dialog 1 */ /* SETTINGS FOR RADIO-SET RS_Sort IN FRAME D-Dialog 1 */ /* SETTINGS FOR TOGGLE-BOX T_Drucker IN FRAME D-Dialog 1 */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX D-Dialog /* Query rebuild information for DIALOG-BOX D-Dialog _TblList = "AnaDat.Listen" _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX D-Dialog */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME D-Dialog &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL D-Dialog D-Dialog ON WINDOW-CLOSE OF FRAME D-Dialog /* Eidg. Alkoholverwaltung */ DO: /* Add Trigger to equate WINDOW-CLOSE to END-ERROR. */ APPLY "END-ERROR":U TO SELF. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK D-Dialog ON CHOOSE OF Btn_OK IN FRAME D-Dialog /* Start */ DO: DO WITH FRAME {&FRAME-NAME}: ASSIGN {&List-1}. IF F_VArtnr = 0 AND F_BArtnr = 0 THEN F_BArtnr = 999999. IF F_VArtnr > F_BArtnr THEN F_BArtnr = F_VArtnr. IF F_VInhalt = 0 AND F_BInhalt = 0 THEN F_BInhalt = 9999. IF F_VInhalt > F_BInhalt THEN F_BInhalt = F_VInhalt. IF F_VJahr = 0 AND F_BJahr = 0 THEN F_BJahr = 9999. IF F_VJahr > F_BJahr THEN F_BJahr = F_VJahr . IF F_VDatum = ? THEN F_VDatum = DATE(01,01,YEAR(TODAY)). IF F_BDatum = ? THEN F_BDatum = DATE(12,31,YEAR(TODAY)). IF VLiArt > 02 THEN DO: IF F_VDatum > F_BDatum THEN F_BDatum = F_VDatum. END. DISPLAY {&List-1}. DISABLE Btn_OK Btn_cancel. SESSION:SET-WAIT-STATE('GENERAL'). RUN DRUCKEN. SESSION:SET-WAIT-STATE(''). ENABLE Btn_OK Btn_cancel. END. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Drucker &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Drucker D-Dialog ON VALUE-CHANGED OF CB_Drucker IN FRAME D-Dialog DO: ok = TRUE. DO WHILE ok: ok = CB_Schriftbild:DELETE(1). END. FOR EACH Schrift USE-INDEX Schrift-k1 WHERE Schrift.Schname = CB_Drucker:SCREEN-VALUE NO-LOCK: ok = CB_Schriftbild:ADD-LAST(Schrift.Schbild). END. i1 = 0. DO WHILE BRecid > 0: i1 = CB_Schriftbild:LOOKUP(LiDruck.ListBild). LEAVE. END. IF i1 = 0 THEN i1 = 1. CB_Schriftbild:SCREEN-VALUE = CB_Schriftbild:ENTRY(i1). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Listenart &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Listenart D-Dialog ON VALUE-CHANGED OF CB_Listenart IN FRAME D-Dialog /* Listenart */ DO: TRecid = 0. ARecid = 0. BRecid = 0. VLiArt = CB_Listenart:LOOKUP(CB_Listenart:SCREEN-VALUE). RUN SORTIERARTEN. FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = GVFirma AND Tabel.RecArt = 'LISTEN' AND Tabel.CodeC = 'EWK' AND Tabel.CodeI = VLiArt AND Tabel.Sprcd = 0 NO-LOCK NO-ERROR. IF AVAILABLE Tabel THEN DO: TRecid = RECID(Tabel). ARecid = Tabel.Int_1. BRecid = Tabel.Int_2. FIND Listen WHERE RECID(Listen) = ARecid NO-LOCK NO-ERROR. FIND LiDruck WHERE RECID(LiDruck) = BRecid NO-LOCK NO-ERROR. IF NOT AVAILABLE Listen THEN ARecid = 0. IF NOT AVAILABLE LiDruck THEN BRecid = 0. END. RS_Sort = 1. F_VArtnr = 0. F_BArtnr = 999999. F_VInhalt = 0. F_BInhalt = 9999. F_VJahr = 0. F_BJahr = 9999. F_Hersteller = ''. F_Warengruppe = ''. F_VDatum = DATE(01,01,YEAR(TODAY)). F_BDatum = DATE(12,31,YEAR(TODAY)). F_Detail = FALSE. F_Abschliessen = FALSE. CB_Drucker:SCREEN-VALUE = CB_Drucker:ENTRY(1). DO WHILE ARecid > 0: RS_Sort = Listen.Sort. F_VArtnr = Listen.VNr[01]. F_BArtnr = Listen.BNr[01]. F_VInhalt = Listen.VNr[02]. F_BInhalt = Listen.BNr[02]. F_VJahr = Listen.VNr[03]. F_BJahr = Listen.BNr[03]. F_VDatum = Listen.VDa[01]. F_BDatum = Listen.BDa[01]. F_Hersteller = Listen.ECh[01]. F_Warengruppe = Listen.ECh[02]. F_Detail = Listen.VFl[05]. F_Abschliessen = Listen.VFl[06]. LEAVE. END. DO WITH FRAME {&FRAME-NAME}: IF VLiArt = 1 THEN DO: F_VDatum:SENSITIVE = FALSE. F_BDatum:SENSITIVE = FALSE. F_Abschliessen:SENSITIVE = FALSE. F_Detail:SENSITIVE = FALSE. F_VDatum:HIDDEN = TRUE. F_BDatum:HIDDEN = TRUE. F_Abschliessen:HIDDEN = TRUE. F_Detail:HIDDEN = TRUE. END. IF VLiArt = 2 THEN DO: F_VDatum:SENSITIVE = TRUE. F_BDatum:SENSITIVE = FALSE. F_Abschliessen:SENSITIVE = TRUE. F_Detail:SENSITIVE = FALSE. F_BDatum:HIDDEN = TRUE. F_VDatum:HIDDEN = FALSE. F_VDatum:LABEL = 'Iventardatum'. F_Abschliessen:HIDDEN = FALSE. F_Detail:HIDDEN = TRUE. END. IF VLiArt = 3 THEN DO: F_VDatum:SENSITIVE = TRUE. F_BDatum:SENSITIVE = TRUE. F_Abschliessen:SENSITIVE = FALSE. F_Detail:SENSITIVE = TRUE. F_BDatum:HIDDEN = FALSE. F_VDatum:HIDDEN = FALSE. F_VDatum:LABEL = 'von - bis Datum'. F_Abschliessen:HIDDEN = TRUE. F_Detail:HIDDEN = FALSE. END. IF VLiArt = 4 THEN DO: F_VDatum:SENSITIVE = TRUE. F_BDatum:SENSITIVE = TRUE. F_Abschliessen:SENSITIVE = FALSE. F_Detail:SENSITIVE = FALSE. F_BDatum:HIDDEN = FALSE. F_VDatum:HIDDEN = FALSE. F_VDatum:LABEL = 'von - bis Datum'. F_Abschliessen:HIDDEN = TRUE. F_Detail:HIDDEN = TRUE. END. END. i1 = 0. DO WHILE BRecid > 0: i1 = CB_Drucker:LOOKUP(LiDruck.ListDru). LEAVE. END. IF i1 = 0 THEN i1 = 1. CB_Drucker:SCREEN-VALUE = CB_Drucker:ENTRY(i1). APPLY 'VALUE-CHANGED' TO CB_Drucker. DISPLAY {&List-1} WITH FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO F_VArtnr. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Hersteller &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Hersteller D-Dialog ON LEFT-MOUSE-DBLCLICK OF F_Hersteller IN FRAME D-Dialog /* Hersteller */ DO: LVRecArt = 'HERST'. LVTitel = 'Hersteller'. LVFirma = GVFirma. Linktext = SELF:SCREEN-VALUE. RUN "v8/d-ausw-tabel.w". SELF:SCREEN-VALUE = Linktext. Linktext = ''. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME F_Warengruppe &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Warengruppe D-Dialog ON LEFT-MOUSE-DBLCLICK OF F_Warengruppe IN FRAME D-Dialog /* Warengruppe */ DO: Linktext = SELF:SCREEN-VALUE. RUN "v8/d-ausw-warengrp.w". SELF:SCREEN-VALUE = Linktext. Linktext = ''. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK D-Dialog /* *************************** Main Block *************************** */ DO WITH FRAME {&FRAME-NAME}: CB_Listenart:SCREEN-VALUE = CB_Listenart:ENTRY(1). CB_Drucker:DELIMITER = ';'. CB_Schriftbild:DELIMITER = ';'. ok = TRUE. DO WHILE ok: ok = CB_Drucker:DELETE(1). END. FOR EACH Schrift USE-INDEX Schrift-k1 NO-LOCK BREAK BY Schrift.Schname : IF NOT FIRST-OF ( Schrift.Schname ) THEN NEXT. ok = CB_Drucker:ADD-LAST(Schrift.Schname). END. END. {src/adm/template/dialogmn.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects D-Dialog _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 adm-row-available D-Dialog _ADM-ROW-AVAILABLE PROCEDURE adm-row-available : /*------------------------------------------------------------------------------ Purpose: Dispatched to this procedure when the Record- Source has a new row available. This procedure tries to get the new row (or foriegn keys) from the Record-Source and process it. Parameters: ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/row-head.i} /* Process the newly available records (i.e. display fields, open queries, and/or pass records on to any RECORD-TARGETS). */ {src/adm/template/row-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_01 D-Dialog PROCEDURE AUSGABE_01 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ FOR EACH THilfsTab NO-LOCK, FIRST BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK BREAK BY THilfsTab.Sort_1 BY THilfsTab.Sort_2 BY THilfsTab.Sort_3 BY THilfsTab.Sort_4 BY BArtst.Artnr BY BArtst.Inhalt BY BArtst.Jahr : FLeer = FALSE. IF FIRST-OF ( THilfsTab.Sort_1 ) THEN DO: RUN SORT01. IF XSort1 <> '' THEN DO: IF NOT FLeer THEN DO: { v8/putstream.i "1" } FLeer = TRUE. END. Zuszz = 5. RUN LISTTIT2. SUBSTRING(VZeile,001) = XSort1. { v8/putstreamf.i "1" } END. END. IF FIRST-OF ( THilfsTab.Sort_2 ) THEN DO: RUN SORT02. IF XSort2 <> '' THEN DO: IF NOT FLeer THEN DO: { v8/putstream.i "1" } FLeer = TRUE. END. Zuszz = 4. RUN LISTTIT2. SUBSTRING(VZeile,001) = XSort2. { v8/putstreamf.i "1" } END. END. RUN LISTTIT2. FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = BArtst.Firma AND KGebinde.Geb_Cd = BArtst.KGeb_Cd NO-LOCK NO-ERROR. FIND VGebinde USE-INDEX VGebinde-k1 WHERE VGebinde.Firma = BArtst.Firma AND VGebinde.Geb_Cd = BArtst.VGeb_Cd NO-LOCK NO-ERROR. FIND GGebinde USE-INDEX GGebinde-k1 WHERE GGebinde.Firma = BArtst.Firma AND GGebinde.Geb_Cd = BArtst.GGeb_Cd NO-LOCK NO-ERROR. SUBSTRING(VZeile,001) = STRING(BArtst.Artnr ,"999999"). SUBSTRING(VZeile,008) = STRING(BArtst.Inhalt ,"zzzz"). SUBSTRING(VZeile,013) = STRING(ArtBez.Bez1 ,"x(30)"). IF BArtst.Jahr > 10 THEN SUBSTRING(VZeile,045) = STRING(BArtst.Jahr ,"zzzz"). IF BArtst.Alk_Gehalt > 0 THEN SUBSTRING(VZeile,050) = STRING(BArtst.Alk_Gehalt ,"zz9.99%"). SUBSTRING(VZeile,060) = KGebinde.KBez. SUBSTRING(VZeile,070) = VGebinde.KBez. SUBSTRING(VZeile,080) = GGebinde.KBez. { v8/putstream.i "1" } END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_02 D-Dialog PROCEDURE AUSGABE_02 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VBestand AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE VLiter AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE V100% AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE cDatenDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cExcelDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE LeerZeile AS LOG NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE Inhalt AS CHARACTER NO-UNDO. DEFINE VARIABLE Zeile1 AS INTEGER NO-UNDO. DEFINE VARIABLE Zeile2 AS INTEGER NO-UNDO. DEFINE VARIABLE fEnde AS LOG NO-UNDO. FOR EACH WHilfsTab: DELETE WHilfsTab. END. GTotal = 0. cDatenDatei = 'EAVInventar.txt'. cExcelDatei = 'EAVInventar.xls'. cDateiName = cExcelDatei + CHR(01) + cExcelDatei. RUN CREATEDATEI ( INPUT cDateiName ). cExcelDatei = RETURN-VALUE. IF cExcelDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. cDateiName = cDatenDatei. RUN CREATEDATEI ( INPUT cDateiName ). cDatenDatei = RETURN-VALUE. IF cDatenDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. OUTPUT TO VALUE(cDatenDatei). PUT CONTROL '£' CHR(10) '£' CHR(10) '£££Alk.£Inalt/£Anzahl£Total£100%' CHR(10) '£Artnr£Artikel£Gehalt£Einheit£Einheiten£Liter£Liter' CHR(10) '£' CHR(10). FOR EACH THilfsTab NO-LOCK, FIRST BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK BREAK BY THilfsTab.Sort_1 BY THilfsTab.Sort_2 BY BArtst.Artnr BY BArtst.Inhalt BY BArtst.Jahr : FLeer = FALSE. IF FIRST-OF ( THilfsTab.Sort_1 ) THEN DO: RUN SORT01. IF XSort1 <> '' THEN PUT CONTROL XSort1 CHR(10). END. IF FIRST-OF ( THilfsTab.Sort_2 ) THEN DO: RUN SORT02. IF XSort2 <> '' THEN PUT CONTROL XSort2 CHR(10). END. FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = BArtst.Firma AND KGebinde.Geb_Cd = BArtst.KGeb_Cd NO-LOCK NO-ERROR. FIND VGebinde USE-INDEX VGebinde-k1 WHERE VGebinde.Firma = BArtst.Firma AND VGebinde.Geb_Cd = BArtst.VGeb_Cd NO-LOCK NO-ERROR. FIND GGebinde USE-INDEX GGebinde-k1 WHERE GGebinde.Firma = BArtst.Firma AND GGebinde.Geb_Cd = BArtst.GGeb_Cd NO-LOCK NO-ERROR. VBestand = 0. VLiter = 0. VBestand = THilfsTab.Wert[01]. VLiter = VBestand * KGebinde.Inhalt / 100. V100% = VLiter * THilfsTab.Wert_1 / 100. PUT CONTROL '£' STRING(BArtst.Artnr ,'999999') '£' ArtBez.Bez1 '£' STRING(THilfsTab.Wert_1 ,'>>9.99') '£' STRING((KGebinde.Inhalt / 100),'zz9.99') '£' STRING(VBestand ,'->>>,>>>') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). IF ArtBez.Bez2 <> '' THEN DO: PUT CONTROL '££' ArtBez.Bez2 CHR(10). END. GTotal[01] = GTotal[01] + VBestand. GTotal[02] = GTotal[02] + VLiter. GTotal[03] = GTotal[03] + V100%. IF THilfsTab.Sort_1 <> '' THEN DO: FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Firma = GVFirma WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Sort_2 = '' WHilfsTab.Sort_3 = '' WHilfsTab.Sort_4 = ''. END. ASSIGN WHilfsTab.Wert[01] = WHilfsTab.Wert[01] + VBestand WHilfsTab.Wert[02] = WHilfsTab.Wert[02] + VLiter WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + V100% . END. LeerZeile = FALSE. DO WHILE XSort2 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_2 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = THilfsTab.Sort_2 AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort2 = 'Total ' + XSort2. PUT CONTROL XSort2 '££££££' STRING(WHilfsTab.Wert[02],'->>>,>>9.99') '£' STRING(WHilfsTab.Wert[03],'->>>,>>9.99') CHR(10). LeerZeile = TRUE. LEAVE. END. DO WHILE XSort1 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_1 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort1 = 'Total ' + XSort1. PUT CONTROL XSort1 '££££££' STRING(WHilfsTab.Wert[02],'->>>,>>9.99') '£' STRING(WHilfsTab.Wert[03],'->>>,>>9.99') CHR(10). LeerZeile = TRUE. LEAVE. END. IF LeerZeile THEN PUT CONTROL '£' CHR(10). END. PUT CONTROL '££Gesamttotal££££' STRING(GTotal[02],'->>>,>>9.99') '£' STRING(GTotal[03],'->>>,>>9.99') CHR(10) 'ENDE' CHR(10). FOR EACH THilfsTab: DELETE THilfsTab. END. CREATE THilfsTab. FOR EACH WHilfsTab BREAK BY WHilfsTab.Sort_1 : FIND FIRST THilfsTab. { v8/hilfstab.i "THilfsTab" "WHilfsTab" } RUN SORT01. PUT CONTROL '£' WHilfsTab.Sort_1 " " XSort1 '£££££' STRING(WHilfsTab.Wert[02],'->>>,>>9.99') '£' STRING(WHilfsTab.Wert[03],'->>>,>>9.99') CHR(10). END. PUT CONTROL '£' CHR(10) '££' 'Gesamttotal ' '££££' STRING(GTotal[02],"->>>,>>9.99") '£' STRING(GTotal[03],"->>>,>>9.99") CHR(10) '£' CHR(10) '£' CHR(10). OUTPUT CLOSE. Zeile1 = 0. Zeile2 = 0. fEnde = FALSE. INPUT STREAM In_Stream FROM VALUE(cDatenDatei) NO-ECHO NO-MAP. REPEAT ON STOP UNDO, LEAVE WITH FRAME f_Print: IMPORT STREAM In_Stream UNFORMATTED Inhalt. IF NOT fEnde THEN Zeile1 = Zeile1 + 1. Zeile2 = Zeile2 + 1. IF Inhalt BEGINS 'ENDE' THEN fEnde = TRUE. END. INPUT STREAM In_Stream CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL'). RUN OPENEXCEL ( INPUT excelAppl, INPUT cExcelDatei, INPUT '', OUTPUT Ja ). IF NOT Ja THEN DO: MESSAGE 'Fehler beim Starten von Excel ! ' VIEW-AS ALERT-BOX ERROR. RETURN NO-APPLY. END. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDatenDatei. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A' + STRING(Zeile1). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = ''. excelAppl:ActiveWindow:SelectedSheets:HPageBreaks:Add(excelAppl:Selection) NO-ERROR. Zelle = 'A' + STRING(Zeile1) + ':F' + STRING(Zeile2). excelAppl:Range(Zelle):SELECT. excelAppl:Selection:HorizontalAlignment = -4131. /* ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell excelAppl:Selection:FormulaR1C1 = ''. */ Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. RELEASE OBJECT excelAppl. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_03 D-Dialog PROCEDURE AUSGABE_03 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VLiter AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE V100% AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE cDatenDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cExcelDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE LeerZeile AS LOG NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE fLeer AS LOG NO-UNDO. DEFINE VARIABLE xAdresse AS CHARACTER NO-UNDO. FOR EACH WHilfsTab: DELETE WHilfsTab. END. GTotal = 0. VDatum = F_VDatum. BDatum = F_BDatum. IF F_Detail THEN DO: RUN AUSGABE_13. RETURN. END. cDatenDatei = 'EAVVerkäufe.txt'. cExcelDatei = 'EAVVerkäufe.xls'. cDateiName = cExcelDatei + CHR(01) + cExcelDatei. RUN CREATEDATEI ( INPUT cDateiName ). cExcelDatei = RETURN-VALUE. IF cExcelDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. cDateiName = cDatenDatei. RUN CREATEDATEI ( INPUT cDateiName ). cDatenDatei = RETURN-VALUE. IF cDatenDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. OUTPUT TO VALUE(cDatenDatei). PUT CONTROL '£' CHR(10) '£' CHR(10) '££Datum££Faknr£Kunde£££Ausgang£Liter£Liter 100%' CHR(10) '£' CHR(10). FOR EACH THilfsTab NO-LOCK, FIRST BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK, EACH Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum >= VDatum AND Artbw.Datum <= BDatum AND Artbw.Tr_Art < 9 NO-LOCK BREAK BY THilfsTab.Sort_1 BY THilfsTab.Sort_2 BY BArtst.Artnr BY BArtst.Inhalt BY BArtst.Jahr : FLeer = FALSE. IF FIRST-OF ( THilfsTab.Sort_1 ) THEN DO: RUN SORT01. IF XSort1 <> '' THEN PUT CONTROL '£' XSort1 CHR(10). END. IF FIRST-OF ( THilfsTab.Sort_2 ) THEN DO: RUN SORT02. IF XSort2 <> '' THEN PUT CONTROL '£' XSort2 CHR(10). END. IF FIRST-OF ( BArtst.Jahr ) THEN DO: FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = BArtst.Firma AND KGebinde.Geb_Cd = BArtst.KGeb_Cd NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(BArtst.Artnr ,'999999') '££' ArtBez.Bez1 '£££'. IF BArtst.Jahr > 10 THEN PUT CONTROL STRING(BArtst.Jahr,'9999'). PUT CONTROL '£' STRING((KGebinde.Inhalt / 100),'zz9.99 l / ') STRING(BArtst.Alk_Gehalt,'zz9.99%') CHR(10). IF ArtBez.Bez2 <> '' THEN DO: PUT CONTROL '£££' ArtBez.Bez2 CHR(10). END. GTotal[01] = 0. GTotal[02] = 0. GTotal[03] = 0. VInhalt = KGebinde.Inhalt. END. xAdresse = ''. IF Artbw.Knr > 0 THEN DO: FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = Artbw.Knr NO-LOCK NO-ERROR. END. ELSE RELEASE Adresse. IF AVAILABLE Adresse THEN xAdresse = Adresse.Anzeig_Br. ELSE DO: { v8/tabelfind.i GVFirma "'LAGKORR'" Artbw.Tr_Art "''" 0 } IF AVAILABLE Tabel THEN xAdresse = Tabel.Bez1. END. VLiter = Artbw.Menge * VInhalt / 100. V100% = VLiter * Artbw.Alk_Gehalt / 100. GTotal[01] = GTotal[01] + Artbw.Menge. GTotal[02] = GTotal[02] + VLiter. GTotal[03] = GTotal[03] + V100% . GTotal[06] = GTotal[06] + Artbw.Menge. GTotal[07] = GTotal[07] + VLiter. GTotal[08] = GTotal[08] + V100% . PUT CONTROL '££' STRING(Artbw.Datum ,"99.99.9999") '££'. IF Artbw.Faknr > 0 THEN PUT CONTROL STRING(Artbw.Faknr ,"9999999"). ELSE PUT CONTROL STRING(Artbw.Aufnr ,"9999999"). PUT CONTROL '£' xAdresse '£££' STRING(Artbw.Menge ,'->>>,>>9.99') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). IF THilfsTab.Sort_2 <> '' THEN DO: FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = THilfsTab.Sort_2 AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Firma = GVFirma WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Sort_2 = THilfsTab.Sort_2 WHilfsTab.Sort_3 = '' WHilfsTab.Sort_4 = ''. END. ASSIGN WHilfsTab.Wert[01] = WHilfsTab.Wert[01] + Artbw.Menge WHilfsTab.Wert[02] = WHilfsTab.Wert[02] + VLiter WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + V100% . END. IF THilfsTab.Sort_1 <> '' THEN DO: FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Firma = GVFirma WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Sort_2 = '' WHilfsTab.Sort_3 = '' WHilfsTab.Sort_4 = ''. END. ASSIGN WHilfsTab.Wert[01] = WHilfsTab.Wert[01] + Artbw.Menge WHilfsTab.Wert[02] = WHilfsTab.Wert[02] + VLiter WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + V100% . END. IF NOT LAST-OF ( BArtst.Jahr ) THEN NEXT. FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. PUT CONTROL '£Total ' STRING(BArtst.Artnr ,'999999 ') ArtBez.Bez1 '£££££££' STRING(GTotal[01] ,'->>>,>>9.99') '£' STRING(GTotal[02] ,'->>>,>>9.99') '£' STRING(GTotal[03] ,'->>>,>>9.99') CHR(10). FLeer = FALSE. DO WHILE XSort2 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_2 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = THilfsTab.Sort_2 AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort2 = 'Total ' + XSort2. PUT CONTROL '£' XSort2 '££££££££' STRING(WHilfsTab.Wert[02],"->>,>>>,>>9.99") '£' STRING(WHilfsTab.Wert[03],"->>,>>>,>>9.99") CHR(10). FLeer = TRUE. LEAVE. END. DO WHILE XSort1 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_1 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort1 = 'Total ' + XSort1. PUT CONTROL '£' XSort1 '££££££££' STRING(WHilfsTab.Wert[02],"->>,>>>,>>9.99") '£' STRING(WHilfsTab.Wert[03],"->>,>>>,>>9.99") CHR(10). fLeer = TRUE. LEAVE. END. PUT CONTROL '£' CHR(10). END. PUT CONTROL '£' CHR(10) '£££' 'Gesamtverkäufe ' '££££££' STRING(GTotal[07],'->>,>>>,>>9.99') '£' STRING(GTotal[08],'->>,>>>,>>9.99') CHR(10). OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL'). RUN OPENEXCEL ( INPUT excelAppl, INPUT cExcelDatei, INPUT '', OUTPUT Ja ). IF NOT Ja THEN DO: MESSAGE 'Fehler beim Starten von Excel ! ' VIEW-AS ALERT-BOX ERROR. RETURN NO-APPLY. END. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDatenDatei. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. RELEASE OBJECT excelAppl. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_04 D-Dialog PROCEDURE AUSGABE_04 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VLiter AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE V100% AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE DruDat AS DATE FORMAT "99.99.9999" NO-UNDO. DEFINE VARIABLE XAdresse AS CHARACTER FORMAT "x(50)" NO-UNDO. DEFINE VARIABLE aArtnr AS INTEGER NO-UNDO. DEFINE VARIABLE aInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE aJahr AS INTEGER NO-UNDO. DEFINE VARIABLE FEingang AS LOG NO-UNDO. DEFINE VARIABLE VMenge AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE cDatenDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cDatenDatei01 AS CHARACTER NO-UNDO. DEFINE VARIABLE cExcelDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE LeerZeile AS LOG NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE Inhalt AS CHARACTER NO-UNDO. DEFINE VARIABLE Zeile1 AS INTEGER NO-UNDO. DEFINE VARIABLE Zeile2 AS INTEGER NO-UNDO. DEFINE VARIABLE FLeer AS LOG NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE cMonat AS CHARACTER INIT 'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember'. FOR EACH WHilfsTab: DELETE WHilfsTab. END. GTotal = 0. VDatum = F_VDatum. BDatum = F_BDatum. cDatenDatei = 'EAVBuchhaltung.txt'. cDatenDatei01 = 'EAVBuchhaltung01.txt'. cExcelDatei = 'EAVBuchhaltung.xls'. cDateiName = cExcelDatei + CHR(01) + cExcelDatei. RUN CREATEDATEI ( INPUT cDateiName ). cExcelDatei = RETURN-VALUE. IF cExcelDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. cDateiName = cDatenDatei. RUN CREATEDATEI ( INPUT cDateiName ). cDatenDatei = RETURN-VALUE. IF cDatenDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. cDateiName = cDatenDatei01. RUN CREATEDATEI ( INPUT cDateiName ). cDatenDatei01 = RETURN-VALUE. IF cDatenDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. OUTPUT TO VALUE(cDatenDatei). FOR EACH THilfsTab NO-LOCK: FIND BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK NO-ERROR. FOR EACH Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum >= VDatum AND Artbw.Datum <= BDatum AND Artbw.Tr_Art < 21 NO-LOCK : IF Artbw.Tr_Art > 8 THEN DO: CREATE TArtbw. BUFFER-COPY Artbw TO TArtbw. NEXT. END. dDatum = DATE(MONTH(Artbw.Datum),01,YEAR(Artbw.Datum)). FIND FIRST TArtbw USE-INDEX Artbw-k2 WHERE TArtbw.Firma = Artbw.Firma AND TArtbw.Artnr = Artbw.Artnr AND TArtbw.Inhalt = Artbw.Inhalt AND TArtbw.Jahr = Artbw.Jahr AND TArtbw.Datum = dDatum AND TArtbw.Tr_Art = 1 NO-ERROR. IF NOT AVAILABLE TArtbw THEN DO: CREATE TArtbw. BUFFER-COPY Artbw EXCEPT Tr_Art TO TArtbw ASSIGN TArtbw.Datum = dDatum TArtbw.Tr_Art = 1. NEXT. END. TArtbw.Menge = TArtbw.Menge + Artbw.Menge. END. END. FOR EACH THilfsTab NO-LOCK, FIRST BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK, EACH TArtbw OF BArtst NO-LOCK BREAK BY THilfsTab.Sort_1 BY THilfsTab.Sort_2 BY BArtst.Artnr BY BArtst.Inhalt BY BArtst.Jahr BY TArtbw.Datum : FLeer = FALSE. DruDat = TArtbw.Datum. IF DruDat < F_VDatum THEN DruDat = F_VDatum. IF DruDat > F_BDatum THEN DruDat = F_BDatum. IF FIRST-OF ( THilfsTab.Sort_1 ) THEN DO: RUN SORT01. IF XSort1 <> '' THEN PUT CONTROL '£' XSort1 CHR(10). END. IF FIRST-OF ( THilfsTab.Sort_2 ) THEN DO: RUN SORT02. IF XSort2 <> '' THEN PUT CONTROL '£' XSort2 CHR(10). END. FIND FIRST WHilfsTab WHERE WHilfsTab.Sort_1 = THilfsTab.Sort_1 NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Zeichen_1 = XSort1. END. IF FIRST-OF ( BArtst.Jahr ) THEN DO: FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = BArtst.Firma AND KGebinde.Geb_Cd = BArtst.KGeb_Cd NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(BArtst.Artnr ,'999999') '££' ArtBez.Bez1 '£££'. IF BArtst.Jahr > 10 THEN PUT CONTROL STRING(BArtst.Jahr,'9999'). PUT CONTROL '£' STRING((KGebinde.Inhalt / 100),'zz9.99 l / ') STRING(BArtst.Alk_Gehalt,'>>9.99%') CHR(10). IF ArtBez.Bez2 <> '' THEN DO: PUT CONTROL '£££' ArtBez.Bez2 CHR(10). END. VInhalt = KGebinde.Inhalt. GTotal = 0. IF THilfsTab.Wert[02] <> ? THEN DO: VMenge = THilfsTab.Wert[02]. VLiter = VMenge * VInhalt / 100. V100% = VLiter * BArtst.Alk_Gehalt / 100. PUT CONTROL '££' STRING(F_VDatum ,'99.99.9999') '£££' 'Inventarbestand' '£££' STRING(VMenge ,'->>>,>>9') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). GTotal[01] = VMenge. GTotal[02] = VLiter. GTotal[03] = V100%. WHilfsTab.Wert[01] = VLiter. WHilfsTab.Wert[02] = V100%. END. END. XAdresse = ''. IF TArtbw.Tr_Art < 9 THEN DO: XAdresse = 'Verkäufe ' + ENTRY(MONTH(TArtbw.Datum), cMonat, ',') + STRING(YEAR(TArtbw.Datum),' 9999'). END. ELSE DO: IF TArtbw.Knr > 0 THEN DO: FIND Adresse USE-INDEX Adresse-k1 WHERE Adresse.Firma = AdFirma AND Adresse.Knr = TArtbw.Knr NO-LOCK NO-ERROR. END. ELSE RELEASE Adresse. IF AVAILABLE Adresse THEN XAdresse = Adresse.Anzeig_Br. ELSE DO: { v8/tabelfind.i GVFirma "'LAGKORR'" TArtbw.Tr_Art "''" 0 } IF AVAILABLE Tabel THEN XAdresse = Tabel.Bez1. END. END. FEingang = FALSE. VMenge = TArtbw.Menge. IF TArtbw.Tr_Art > 10 THEN FEingang = TRUE. IF TArtbw.Tr_Art = 9 AND TArtbw.Bez2 BEGINS "A;" THEN DO: FEingang = TRUE. VMenge = VMenge * -1. END. VLiter = VMenge * VInhalt / 100. V100% = VLiter * BArtst.Alk_Gehalt / 100. IF FEingang THEN DO: GTotal[01] = GTotal[01] + VMenge. GTotal[02] = GTotal[02] + VLiter. GTotal[03] = GTotal[03] + V100% . WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + VLiter. WHilfsTab.Wert[04] = WHilfsTab.Wert[04] + V100% . END. ELSE DO: GTotal[06] = GTotal[06] + VMenge. GTotal[07] = GTotal[07] + VLiter. GTotal[08] = GTotal[08] + V100% . WHilfsTab.Wert[05] = WHilfsTab.Wert[05] + VLiter. WHilfsTab.Wert[06] = WHilfsTab.Wert[06] + V100% . END. PUT CONTROL '££'. IF TArtbw.Tr_Art < 9 THEN PUT CONTROL SUBSTRING(STRING(DruDat,'99.99.9999'),04). ELSE PUT CONTROL STRING(DruDat,'99.99.9999'). PUT CONTROL '££'. DO WHILE TRUE: IF TArtbw.Tr_Art = 9 THEN DO: IF NUM-ENTRIES(TArtbw.Bez2, ';') < 5 THEN DO: PUT CONTROL '£'. LEAVE. END. PUT CONTROL ENTRY(5, TArtbw.Bez2, ';') '£'. LEAVE. END. IF TArtbw.Faknr > 0 THEN DO: PUT CONTROL STRING(TArtbw.Faknr ,'999999') '£'. LEAVE. END. PUT CONTROL STRING(TArtbw.Aufnr ,'999999') '£'. LEAVE. END. PUT CONTROL XAdresse '£££'. IF FEingang THEN PUT CONTROL STRING(VMenge,'->>>,>>9') '£' STRING(VLiter,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). ELSE PUT CONTROL '£££' STRING(VMenge,'->>>,>>9') '£' STRING(VLiter,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). DO WHILE TRUE: IF TArtbw.Tr_Art <> 9 THEN LEAVE. aArtnr = INTEGER(ENTRY(2, TArtbw.Bez2, ';')). aInhalt = INTEGER(ENTRY(3, TArtbw.Bez2, ';')). aJahr = INTEGER(ENTRY(4, TArtbw.Bez2, ';')). FIND Artst USE-INDEX Artst-k1 WHERE Artst.Firma = GVFirma AND Artst.Artnr = aArtnr AND Artst.Inhalt = aInhalt AND Artst.Jahr = aJahr NO-LOCK NO-ERROR. IF NOT AVAILABLE Artst THEN LEAVE. PUT CONTROL '£££££' STRING(aArtnr ,"999999/") STRING(aInhalt,"9999/") STRING(aJahr ,"9999 ") Artst.Bez CHR(10). LEAVE. END. DO WHILE TRUE: IF TArtbw.Tr_Art <> 9 THEN LEAVE. IF NUM-ENTRIES(TArtbw.Bez2, ';') < 6 THEN LEAVE. PUT CONTROL '£££££' ENTRY(6, TArtbw.Bez2, ';') CHR(10). LEAVE. END. DO WHILE TRUE: IF TArtbw.Tr_Art < 12 THEN LEAVE. IF TArtbw.Bez2 = '' THEN LEAVE. PUT CONTROL '£££££' TArtbw.Bez2 CHR(10). LEAVE. END. IF NOT LAST-OF ( BArtst.Jahr ) THEN NEXT. DO WHILE TRUE: IF THilfsTab.Wert[03] = ? THEN LEAVE. VMenge = THilfsTab.Wert[03]. VLiter = VMenge * VInhalt / 100. V100% = VLiter * BArtst.Alk_Gehalt / 100. WHilfsTab.Wert[09] = WHilfsTab.Wert[09] + VLiter. WHilfsTab.Wert[10] = WHilfsTab.Wert[10] + V100% . VMenge = GTotal[01] - GTotal[06]. IF VMenge = THilfsTab.Wert[03] THEN LEAVE. VMenge = THilfsTab.Wert[03] - VMenge. VLiter = VMenge * VInhalt / 100. V100% = VLiter * BArtst.Alk_Gehalt / 100. PUT CONTROL '££' STRING(F_BDatum,"99.99.9999") '£££' 'Lagerdifferenz' '£££'. IF VMenge > 0 THEN DO: PUT CONTROL STRING(VMenge ,'->>>,>>9') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). GTotal[01] = GTotal[01] + VMenge. GTotal[02] = GTotal[02] + VLiter. GTotal[03] = GTotal[03] + V100% . WHilfsTab.Wert[07] = WHilfsTab.Wert[03] + VLiter. WHilfsTab.Wert[08] = WHilfsTab.Wert[04] + V100% . END. ELSE DO: PUT CONTROL '£££' STRING(VMenge ,'->>>,>>9') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). GTotal[06] = GTotal[06] + VMenge. GTotal[07] = GTotal[07] + VLiter. GTotal[08] = GTotal[08] + V100% . WHilfsTab.Wert[07] = WHilfsTab.Wert[03] - VLiter. WHilfsTab.Wert[08] = WHilfsTab.Wert[04] - V100% . END. LEAVE. END. PUT CONTROL '££' '£££' 'Total Artikel' '£££' STRING(GTotal[01] ,'->>>,>>9') '£' STRING(GTotal[02] ,'->>>,>>9.99') '£' STRING(GTotal[03] ,'->>>,>>9.99') '£' STRING(GTotal[06] ,'->>>,>>9') '£' STRING(GTotal[07] ,'->>>,>>9.99') '£' STRING(GTotal[08] ,'->>>,>>9.99') CHR(10). IF THilfsTab.Wert[03] = ? THEN VMenge = 0. ELSE VMenge = THilfsTab.Wert[03]. VLiter = VMenge * VInhalt / 100. V100% = VLiter * BArtst.Alk_Gehalt / 100. PUT CONTROL '£££££' 'Lagerbestand am ' STRING(F_BDatum,'99.99.9999') '£££' STRING(VMenge,'->>>,>>9') '£' STRING(VLiter,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). PUT CONTROL CHR(10). END. OUTPUT CLOSE. OUTPUT TO VALUE(cDatenDatei01). FOR EACH WHilfsTab BY WHilfsTab.Sort_1: PUT CONTROL WHilfsTab.Zeichen_1 '£' STRING(WHilfsTab.Wert[01],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[02],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[03],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[04],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[05],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[06],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[07],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[08],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[09],'->>>>,>>9.99') '£' STRING(WHilfsTab.Wert[10],'->>>>,>>9.99') CHR(10). END. OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL'). RUN OPENEXCEL ( INPUT excelAppl, INPUT cExcelDatei, INPUT '', OUTPUT Ja ). IF NOT Ja THEN DO: MESSAGE 'Fehler beim Starten von Excel ! ' VIEW-AS ALERT-BOX ERROR. RETURN NO-APPLY. END. excelAppl:Sheets("Buchhaltung"):Select. Zelle = 'A6'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDatenDatei. excelAppl:Application:RUN ( 'DateiEinfügen' ). VLiArt = 04. RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. excelAppl:Sheets("Zusammenfassung"):Select. Zelle = 'A6'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDatenDatei01. excelAppl:Application:RUN ( 'DateiEinfügen' ). VLiArt = 14. RUN KOPF ( INPUT excelAppl ). RELEASE OBJECT excelAppl. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_13 D-Dialog PROCEDURE AUSGABE_13 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VLiter AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE V100% AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE cDatenDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cExcelDatei AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE LeerZeile AS LOG NO-UNDO. DEFINE VARIABLE excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. DEFINE VARIABLE FLeer AS LOG NO-UNDO. DEFINE VARIABLE xAdresse AS CHARACTER NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE cMonat AS CHARACTER INIT 'Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember'. FOR EACH TArtbw. DELETE TArtbw. END. cDatenDatei = 'EAVVerkäufeTotal.txt'. cExcelDatei = 'EAVVerkäufeTotal.xls'. cDateiName = cExcelDatei + CHR(01) + cExcelDatei. RUN CREATEDATEI ( INPUT cDateiName ). cExcelDatei = RETURN-VALUE. IF cExcelDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. cDateiName = cDatenDatei. RUN CREATEDATEI ( INPUT cDateiName ). cDatenDatei = RETURN-VALUE. IF cDatenDatei BEGINS 'ERROR' THEN DO: MESSAGE 'Fehler bei der Dateierzeugung ' cDateiName VIEW-AS ALERT-BOX ERROR. RETURN. END. OUTPUT TO VALUE(cDatenDatei). PUT CONTROL CHR(10) CHR(10) '££Monat££Text££££Menge£Liter£Liter 100%' CHR(10) CHR(10). FOR EACH THilfsTab NO-LOCK: FIND BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK NO-ERROR. FOR EACH Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum >= VDatum AND Artbw.Datum <= BDatum AND Artbw.Tr_Art < 9 NO-LOCK : dDatum = DATE(MONTH(Artbw.Datum),01,YEAR(Artbw.Datum)). FIND FIRST TArtbw USE-INDEX Artbw-k2 WHERE TArtbw.Firma = Artbw.Firma AND TArtbw.Artnr = Artbw.Artnr AND TArtbw.Inhalt = Artbw.Inhalt AND TArtbw.Jahr = Artbw.Jahr AND TArtbw.Datum = dDatum NO-ERROR. IF NOT AVAILABLE TArtbw THEN DO: CREATE TArtbw. BUFFER-COPY Artbw TO TArtbw ASSIGN TArtbw.Datum = dDatum. NEXT. END. TArtbw.Menge = TArtbw.Menge + Artbw.Menge. END. END. FOR EACH THilfsTab NO-LOCK, FIRST BArtst WHERE RECID(BArtst) = THilfsTab.Zahl_1 NO-LOCK, EACH TArtbw OF BArtst NO-LOCK BREAK BY THilfsTab.Sort_1 BY THilfsTab.Sort_2 BY BArtst.Artnr BY BArtst.Inhalt BY BArtst.Jahr BY TArtbw.Datum : FLeer = FALSE. IF FIRST-OF ( THilfsTab.Sort_1 ) THEN DO: RUN SORT01. IF XSort1 <> '' THEN PUT CONTROL '£' XSort1 CHR(10). END. IF FIRST-OF ( THilfsTab.Sort_2 ) THEN DO: RUN SORT02. IF XSort2 <> '' THEN PUT CONTROL '£' XSort2 CHR(10). END. IF FIRST-OF ( BArtst.Jahr ) THEN DO: FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. FIND KGebinde USE-INDEX KGebinde-k1 WHERE KGebinde.Firma = BArtst.Firma AND KGebinde.Geb_Cd = BArtst.KGeb_Cd NO-LOCK NO-ERROR. PUT CONTROL '£' STRING(BArtst.Artnr ,'999999') '££' ArtBez.Bez1 '£££'. IF BArtst.Jahr > 10 THEN PUT CONTROL STRING(BArtst.Jahr,'9999'). PUT CONTROL '£' STRING((KGebinde.Inhalt / 100),'zz9.99 l / ') STRING(BArtst.Alk_Gehalt,'zz9.99%') CHR(10). IF ArtBez.Bez2 <> '' THEN DO: PUT CONTROL '£££' ArtBez.Bez2 CHR(10). END. GTotal[01] = 0. GTotal[02] = 0. GTotal[03] = 0. VInhalt = KGebinde.Inhalt. END. xAdresse = 'Total Verkäufe ' + ENTRY(MONTH(TArtbw.Datum), cMonat, ',') + STRING(YEAR(TArtbw.Datum),' 9999'). VLiter = TArtbw.Menge * VInhalt / 100. V100% = VLiter * TArtbw.Alk_Gehalt / 100. GTotal[01] = GTotal[01] + TArtbw.Menge. GTotal[02] = GTotal[02] + VLiter. GTotal[03] = GTotal[03] + V100% . GTotal[06] = GTotal[06] + TArtbw.Menge. GTotal[07] = GTotal[07] + VLiter. GTotal[08] = GTotal[08] + V100% . PUT CONTROL '££' SUBSTRING(STRING(TArtbw.Datum,"99.99.9999"),04) '££' xAdresse '££££' STRING(TArtbw.Menge ,'->>>,>>9.99') '£' STRING(VLiter ,'->>>,>>9.99') '£' STRING(V100% ,'->>>,>>9.99') CHR(10). IF THilfsTab.Sort_2 <> '' THEN DO: FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = THilfsTab.Sort_2 AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Firma = GVFirma WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Sort_2 = THilfsTab.Sort_2 WHilfsTab.Sort_3 = '' WHilfsTab.Sort_4 = ''. END. ASSIGN WHilfsTab.Wert[01] = WHilfsTab.Wert[01] + TArtbw.Menge WHilfsTab.Wert[02] = WHilfsTab.Wert[02] + VLiter WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + V100% . END. IF THilfsTab.Sort_1 <> '' THEN DO: FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. IF NOT AVAILABLE WHilfsTab THEN DO: CREATE WHilfsTab. ASSIGN WHilfsTab.Firma = GVFirma WHilfsTab.Sort_1 = THilfsTab.Sort_1 WHilfsTab.Sort_2 = '' WHilfsTab.Sort_3 = '' WHilfsTab.Sort_4 = ''. END. ASSIGN WHilfsTab.Wert[01] = WHilfsTab.Wert[01] + TArtbw.Menge WHilfsTab.Wert[02] = WHilfsTab.Wert[02] + VLiter WHilfsTab.Wert[03] = WHilfsTab.Wert[03] + V100% . END. IF NOT LAST-OF ( BArtst.Jahr ) THEN NEXT. FIND FIRST ArtBez OF BArtst NO-LOCK NO-ERROR. PUT CONTROL '£Total ' STRING(BArtst.Artnr ,'999999 ') ArtBez.Bez1 '£££££££' STRING(GTotal[01] ,'->>>,>>9.99') '£' STRING(GTotal[02] ,'->>>,>>9.99') '£' STRING(GTotal[03] ,'->>>,>>9.99') CHR(10). FLeer = FALSE. DO WHILE XSort2 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_2 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = THilfsTab.Sort_2 AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort2 = 'Total ' + XSort2. PUT CONTROL '£' XSort2 '££££££££' STRING(WHilfsTab.Wert[02],"->>,>>>,>>9.99") '£' STRING(WHilfsTab.Wert[03],"->>,>>>,>>9.99") CHR(10). FLeer = TRUE. LEAVE. END. DO WHILE XSort1 <> '' : IF NOT LAST-OF ( THilfsTab.Sort_1 ) THEN LEAVE. FIND FIRST WHilfsTab WHERE WHilfsTab.Firma = GVFirma AND WHilfsTab.Sort_1 = THilfsTab.Sort_1 AND WHilfsTab.Sort_2 = '' AND WHilfsTab.Sort_3 = '' AND WHilfsTab.Sort_4 = '' NO-ERROR. XSort1 = 'Total ' + XSort1. PUT CONTROL '£' XSort1 '££££££££' STRING(WHilfsTab.Wert[02],"->>,>>>,>>9.99") '£' STRING(WHilfsTab.Wert[03],"->>,>>>,>>9.99") CHR(10). fLeer = TRUE. LEAVE. END. PUT CONTROL CHR(10). END. PUT CONTROL CHR(10) '£££' 'Gesamtverkäufe ' '££££££' STRING(GTotal[07],'->>,>>>,>>9.99') '£' STRING(GTotal[08],'->>,>>>,>>9.99') CHR(10). OUTPUT CLOSE. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL'). RUN OPENEXCEL ( INPUT excelAppl, INPUT cExcelDatei, INPUT '', OUTPUT Ja ). IF NOT Ja THEN DO: MESSAGE 'Fehler beim Starten von Excel ! ' VIEW-AS ALERT-BOX ERROR. RETURN NO-APPLY. END. Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:FormulaR1C1 = 'TEXT;' + cDatenDatei. excelAppl:Application:RUN ( 'DateiEinfügen' ). RUN KOPF ( INPUT excelAppl ). Zelle = 'A1'. excelAppl:Range(Zelle):SELECT. excelAppl:Selection:ColumnWidth = 0.3. RELEASE OBJECT excelAppl. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATEDATEI D-Dialog PROCEDURE CREATEDATEI : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ /* Parameter 1 = DateiName 2 = Vorlage 3 = Pfad der Datei */ DEFINE INPUT PARAMETER ipParam AS CHARACTER NO-UNDO. DEFINE VARIABLE DateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE Vorlage AS CHARACTER NO-UNDO. DEFINE VARIABLE Pfad AS CHARACTER NO-UNDO. DEFINE VARIABLE Laenge AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE Ja AS LOG NO-UNDO. DateiName = ''. Vorlage = ''. Pfad = ''. IF NUM-ENTRIES(ipParam, CHR(01)) = 0 THEN RETURN 'ERROR-PARAMETER'. IF NUM-ENTRIES(ipParam, CHR(01)) > 0 THEN DateiName = ENTRY(1, ipParam, CHR(01)). IF NUM-ENTRIES(ipParam, CHR(01)) > 1 THEN Vorlage = ENTRY(2, ipParam, CHR(01)). IF NUM-ENTRIES(ipParam, CHR(01)) > 2 THEN Pfad = ENTRY(3, ipParam, CHR(01)). IF DateiName = '' THEN RETURN 'ERROR-PARAMETER'. IF Pfad = '' THEN DO: Pfad = SESSION:TEMP-DIR. END. Laenge = LENGTH(Pfad). DO WHILE TRUE: IF SUBSTRING(Pfad,Laenge,01) = '/' THEN LEAVE. IF SUBSTRING(Pfad,Laenge,01) = '\' THEN LEAVE. Pfad = Pfad + '\'. LEAVE. END. DateiName = Pfad + DateiName. DO WHILE TRUE: IF SEARCH(DateiName) = ? THEN LEAVE. FILE-INFO:FILE-NAME = DateiName. DateiName = FILE-INFO:FULL-PATHNAME. ERROR-STATUS:ERROR = FALSE. OS-DELETE VALUE(DateiName) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: Ja = TRUE. MESSAGE 'Datei ' DateiName ' ist im Zugriff ' SKIP 'und kann nicht gelöscht werden ! ' VIEW-AS ALERT-BOX INFORMATION BUTTONS RETRY-CANCEL UPDATE Ja. IF Ja THEN NEXT. RETURN 'ERROR-LOESCHEN'. END. LEAVE. END. DO WHILE TRUE: IF Vorlage = '' THEN LEAVE. IF SEARCH(Vorlage) <> ? THEN DO: Vorlage = SEARCH(Vorlage). FILE-INFO:FILE-NAME = Vorlage. Vorlage = FILE-INFO:FULL-PATHNAME. LEAVE. END. cString = ''. Laenge = LENGTH(Vorlage). DO ix = Laenge TO 1 BY -1: IF SUBSTRING(Vorlage,ix,01) = '/' THEN LEAVE. IF SUBSTRING(Vorlage,ix,01) = '\' THEN LEAVE. cString = SUBSTRING(Vorlage,ix,01) + cString. END. Vorlage = 'Vorlagen\' + cString. IF SEARCH(Vorlage) <> ? THEN DO: Vorlage = SEARCH(Vorlage). FILE-INFO:FILE-NAME = Vorlage. Vorlage = FILE-INFO:FULL-PATHNAME. LEAVE. END. Vorlage = 'WordVorlagen\' + cString. IF SEARCH(Vorlage) <> ? THEN DO: Vorlage = SEARCH(Vorlage). FILE-INFO:FILE-NAME = Vorlage. Vorlage = FILE-INFO:FULL-PATHNAME. LEAVE. END. Vorlage = 'ExcelVorlagen\' + cString. IF SEARCH(Vorlage) <> ? THEN DO: Vorlage = SEARCH(Vorlage). FILE-INFO:FILE-NAME = Vorlage. Vorlage = FILE-INFO:FULL-PATHNAME. LEAVE. END. RETURN 'ERROR-VORLAGE'. END. IF Vorlage <> '' THEN OS-COPY VALUE(Vorlage) VALUE(DateiName). ELSE DO: OUTPUT TO VALUE(DateiName). OUTPUT CLOSE. END. RETURN DateiName. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI D-Dialog _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 D-Dialog. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKAUSGABE D-Dialog PROCEDURE DRUCKAUSGABE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE AnzKopien AS INTEGER NO-UNDO. IF VLiArt = 02 THEN RETURN. IF VLiArt = 03 THEN RETURN. IF VLiArt = 04 THEN RETURN. AnzKopien = BLiDruck.ListCopy. IF AnzKopien = 0 THEN AnzKopien = 1. IF BDrucker.Emul = 'TERMINAL' THEN AnzKopien = 1. DO VCopy = 1 TO AnzKopien: DO WHILE BDrucker.Emul <> "TERMINAL": IF BSteuer.Drucker <> "" AND OPSYS = "Unix" THEN OUTPUT STREAM Out_Stream THROUGH VALUE(BSteuer.Drucker) VALUE(BSchrift.Schname) CONVERT TARGET "ibm850". ELSE OUTPUT STREAM Out_Stream TO VALUE(BSchrift.Schname) CONVERT TARGET "ibm850". PUT STREAM Out_Stream CONTROL BSchrift.Schseqbeg. IF BLiDruck.Listlq THEN PUT STREAM Out_Stream CONTROL BDrucker.Drulqb. IF BLiDruck.Schacht > 0 THEN PUT STREAM Out_Stream CONTROL BDrucker.DruSchacht[Schacht]. INPUT STREAM In_Stream FROM VALUE(VTemp) NO-ECHO NO-MAP. REPEAT ON STOP UNDO, LEAVE WITH FRAME f_Print: IMPORT STREAM In_Stream UNFORMATTED VZeile. DISPLAY STREAM Out_Stream VZeile WITH FRAME f_Print NO-LABELS STREAM-IO NO-BOX USE-TEXT WIDTH 255. END. PUT STREAM Out_Stream CONTROL CHR(12). OUTPUT STREAM Out_Stream CLOSE. INPUT STREAM In_Stream CLOSE. LEAVE. END. DO WHILE BDrucker.Emul = "TERMINAL": RUN "v8/d-liste.w" ( INPUT HelpText[02] ). LEAVE. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN D-Dialog PROCEDURE DRUCKEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE XProgname AS CHARACTER NO-UNDO. DEFINE VARIABLE VListnr AS INTEGER NO-UNDO. DEFINE VARIABLE FNeu AS LOG NO-UNDO. DEFINE VARIABLE VDrucker AS CHARACTER NO-UNDO. DEFINE VARIABLE VSchrift AS CHARACTER NO-UNDO. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: cUser = DYNAMIC-FUNCTION('getDBUser':U) NO-ERROR. VProgname = TRIM(cUSER) + '!EAV' + STRING(VLiArt,"99"). XProgname = 'EAV' + STRING(VLiArt,"99"). FNeu = FALSE. DO WITH FRAME {&FRAME-NAME}: VDrucker = CB_Drucker:SCREEN-VALUE. VSchrift = CB_Schriftbild:SCREEN-VALUE. END. REPEAT TRANSACTION: FIND FIRST Listen USE-INDEX Listen-k1 WHERE Listen.Firma = GVFirma AND Listen.Progname = VProgname AND Listen.Listfl = '' NO-ERROR. IF NOT AVAILABLE Listen THEN DO: FIND LAST Listen USE-INDEX Listen-k1 WHERE Listen.Firma = GVFirma NO-LOCK NO-ERROR. IF AVAILABLE Listen THEN VListnr = Listen.Listnr + 1. ELSE VListnr = 1. CREATE Listen. ASSIGN Listen.Firma = GVFirma Listen.Listnr = VListnr Listen.Progname = VProgname Listen.Listfl = '' Listen.Jahr = GVJahr Listen.Sprcd = GVSprcd Listen.Sort = RS_Sort Listen.ProgWahl = VLiArt FNeu = TRUE. END. Listen.Listfl = 'A'. ARecid = RECID(Listen). FIND LiDruck USE-INDEX LiDruck-k1 WHERE LiDruck.Firma = GVFirma AND LiDruck.Listnr = Listen.Listnr AND LiDruck.ProgWahl = Listen.ProgWahl NO-ERROR. IF NOT AVAILABLE LiDruck THEN DO: CREATE LiDruck. ASSIGN LiDruck.Firma = GVFirma LiDruck.Listnr = Listen.Listnr LiDruck.ProgWahl = Listen.ProgWahl LiDruck.Listprog = XProgname LiDruck.ListCopy = 1 LiDruck.Schacht = 0 LiDruck.Listlq = FALSE. END. BRecid = RECID(LiDruck). ASSIGN Listen.Sort = RS_Sort Listen.ProgWahl = VLiArt Listen.VNr[01] = F_VArtnr Listen.BNr[01] = F_BArtnr Listen.VNr[02] = F_VInhalt Listen.BNr[02] = F_BInhalt Listen.VNr[03] = F_VJahr Listen.BNr[03] = F_BJahr Listen.VDa[01] = F_VDatum Listen.BDa[01] = F_BDatum Listen.ECh[01] = F_Hersteller Listen.ECh[02] = F_Warengruppe Listen.VFl[05] = F_Detail Listen.VFl[06] = F_Abschliessen. FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = GVFirma AND Tabel.RecArt = 'LISTEN' AND Tabel.CodeC = 'EAV' AND Tabel.CodeI = VLiArt AND Tabel.Sprcd = 0 NO-LOCK NO-ERROR. IF NOT AVAILABLE Tabel THEN TRecid = 0. ELSE TRecid = RECID(Tabel). IF TRecid = 0 THEN DO: CREATE Tabel. ASSIGN Tabel.Firma = GVFirma Tabel.RecArt = 'LISTEN' Tabel.CodeC = 'EAV' Tabel.CodeI = VLiArt Tabel.Sprcd = 0. END. ELSE DO: FIND Tabel WHERE RECID(Tabel) = TRecid. END. TRecid = RECID(Tabel). ASSIGN Tabel.Int_1 = ARecid Tabel.Int_2 = BRecid. FIND Schrift USE-INDEX Schrift-k1 WHERE Schrift.Schname = VDrucker AND Schrift.Schbild = VSchrift NO-LOCK NO-ERROR. IF AVAILABLE Schrift THEN DO: IF LiDruck.ListDru <> VDrucker OR LiDruck.ListBild <> VSchrift THEN DO: ASSIGN LiDruck.ListTzz = Schrift.Schzztot LiDruck.ListKzz = Schrift.Schzzbeg LiDruck.ListFzz = Schrift.Schzzend. END. ASSIGN LiDruck.ListDru = VDrucker LiDruck.ListBild = VSchrift. END. RUN LIBILD. RELEASE Listen. RELEASE LiDruck. RELEASE Tabel. LEAVE. END. IF FNeu THEN DO: T_Drucker = TRUE. DISPLAY T_Drucker WITH FRAME {&FRAME-NAME}. END. DFL = TRUE. SESSION:SET-WAIT-STATE(''). IF T_Drucker THEN RUN DRUCKER. SESSION:SET-WAIT-STATE('GENERAL'). REPEAT TRANSACTION WHILE NOT Dfl: FIND BListen WHERE RECID(BListen) = ARecid. BListen.ListFl = ''. RELEASE BListen. FIND BListen WHERE RECID(BListen) = ARecid NO-LOCK NO-ERROR. RETURN. END. FIND BSteuer WHERE BSteuer.Firma = GVFirma NO-LOCK NO-ERROR. FIND BListen WHERE RECID(BListen) = ARecid NO-LOCK NO-ERROR. FIND BLiDruck WHERE RECID(BLiDruck) = BRecid NO-LOCK NO-ERROR. FIND BSchrift USE-INDEX Schrift-k1 WHERE BSchrift.Schname = BLiDruck.ListDru AND BSchrift.Schbild = BLiDruck.ListBild NO-LOCK NO-ERROR. FIND BDrucker USE-INDEX Drucker-k1 WHERE BDrucker.Drucker = BSchrift.Schdru NO-LOCK NO-ERROR. IF T_Drucker THEN DO: FIND LiDruck WHERE RECID(LiDruck) = BRecid NO-LOCK NO-ERROR. i1 = CB_Drucker:LOOKUP(LiDruck.ListDru). IF i1 = 0 THEN i1 = 1. CB_Drucker:SCREEN-VALUE = CB_Drucker:ENTRY(i1). APPLY 'VALUE-CHANGED' TO CB_Drucker. END. TiDruck = TRUE. VSeite = 0. RUN TEMP_FILE. RUN LISTTIT1. RUN WORKFILE. IF DOpen = TRUE THEN OUTPUT STREAM Out_Stream TO VALUE(VTemp). IF BListen.ProgWahl = 1 THEN RUN AUSGABE_01. IF BListen.ProgWahl = 2 THEN RUN AUSGABE_02. IF BListen.ProgWahl = 3 THEN RUN AUSGABE_03. IF BListen.ProgWahl = 4 THEN RUN AUSGABE_04. IF DOpen THEN OUTPUT STREAM Out_Stream CLOSE. DOpen = FALSE. RUN DRUCKAUSGABE. IF VTemp <> '' THEN OS-DELETE VALUE(VTemp). END. REPEAT TRANSACTION: FIND BListen WHERE RECID(BListen) = ARecid. BListen.ListFl = ''. RELEASE BListen. LEAVE. END. FIND BListen WHERE RECID(BListen) = ARecid NO-LOCK NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKER D-Dialog PROCEDURE DRUCKER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ LVRecid = TRecid. DFl = FALSE. SELF:LOAD-MOUSE-POINTER('ARROW'). RUN "v8/d-druckauswahl.w". SELF:LOAD-MOUSE-POINTER('WAIT'). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI D-Dialog _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_Listenart RS_Sort F_VArtnr F_VInhalt F_VJahr F_BArtnr F_BInhalt F_BJahr F_Hersteller F_Warengruppe F_Detail F_VDatum F_BDatum F_Abschliessen CB_Drucker CB_Schriftbild T_Drucker WITH FRAME D-Dialog. ENABLE CB_Listenart RS_Sort F_VArtnr F_VInhalt F_VJahr F_BArtnr F_BInhalt F_BJahr F_Hersteller F_Warengruppe F_Detail F_VDatum F_BDatum F_Abschliessen CB_Drucker CB_Schriftbild T_Drucker Btn_OK Btn_Cancel RECT-2 RECT-3 WITH FRAME D-Dialog. VIEW FRAME D-Dialog. {&OPEN-BROWSERS-IN-QUERY-D-Dialog} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE INVENTAR_BESTAND D-Dialog PROCEDURE INVENTAR_BESTAND : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipDatum AS DATE NO-UNDO. DEFINE OUTPUT PARAMETER opBestand AS DECIMAL NO-UNDO. DEFINE VARIABLE Verkehr AS DECIMAL NO-UNDO. DEFINE VARIABLE InvBest AS DECIMAL NO-UNDO. DEFINE VARIABLE InvDat AS DATE NO-UNDO. DEFINE VARIABLE xTrnr AS INTEGER NO-UNDO. DEFINE VARIABLE cCodeC AS CHARACTER NO-UNDO. DEFINE VARIABLE iCodeI AS INTEGER NO-UNDO. DEFINE VARIABLE DiffTg AS INTEGER NO-UNDO. DEFINE VARIABLE GDat AS DATE NO-UNDO. DEFINE VARIABLE KDat AS DATE NO-UNDO. cCodeC = STRING(BArtst.Artnr ,'999999') + STRING(BArtst.Inhalt,'9999') + STRING(BArtst.Jahr ,'9999'). iCodeI = INTEGER(ipDatum). opBestand = ?. FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = BArtst.Firma AND Tabel.RecArt = 'EAVINV' AND Tabel.CodeC = cCodeC AND Tabel.CodeI = iCodeI AND Tabel.Sprcd = 1 NO-LOCK NO-ERROR. IF AVAILABLE Tabel THEN DO: opBestand = DECIMAL(Tabel.Bez1). RETURN. END. DO WHILE TRUE: InvDat = ?. GDat = ?. KDat = ?. FIND FIRST Artbw USE-INDEX Artbw-k7 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Tr_Art = 21 AND Artbw.Datum = ipDatum NO-LOCK NO-ERROR. IF AVAILABLE Artbw THEN DO: InvDat = Artbw.Datum. LEAVE. END. FIND FIRST Artbw USE-INDEX Artbw-k7 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Tr_Art = 21 AND Artbw.Datum < ipDatum NO-LOCK NO-ERROR. IF AVAILABLE Artbw THEN KDat = Artbw.Datum. ELSE DO: FIND LAST Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum <= ipDatum AND Artbw.Tr_Art < 21 NO-LOCK NO-ERROR. IF NOT AVAILABLE Artbw THEN RETURN. KDat = 01/01/0001. END. FIND LAST Artbw USE-INDEX Artbw-k7 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Tr_Art = 21 AND Artbw.Datum > ipDatum NO-LOCK NO-ERROR. IF AVAILABLE Artbw THEN GDat = Artbw.Datum. IF KDat = ? AND GDat <> ? THEN DO: InvDat = GDat. KDat = ipDatum. LEAVE. END. IF KDat <> ? AND GDat = ? THEN DO: InvDat = KDat. GDat = ipDatum. LEAVE. END. DiffTg = ipDatum - KDat. IF (GDat - ipDatum) < DiffTg THEN DO: InvDat = GDat. KDat = ipDatum. LEAVE. END. InvDat = KDat. GDat = ipDatum. LEAVE. END. InvBest = 0. Verkehr = 0. FOR EACH Artbw USE-INDEX Artbw-k7 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Tr_Art = 21 AND Artbw.Datum = InvDat NO-LOCK : InvBest = InvBest + Artbw.Menge. END. IF InvDat < ipDatum THEN DO: FOR EACH Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum >= InvDat AND Artbw.Datum <= ipDatum NO-LOCK: IF Artbw.Tr_Art = 21 THEN NEXT. IF Artbw.Tr_Art < 11 THEN DO: Verkehr = Verkehr - Artbw.Menge. NEXT. END. IF Artbw.Tr_Art < 21 THEN DO: Verkehr = Verkehr + Artbw.Menge. NEXT. END. END. END. IF InvDat > ipDatum THEN DO: FOR EACH Artbw USE-INDEX Artbw-k2 WHERE Artbw.Firma = BArtst.Firma AND Artbw.Artnr = BArtst.Artnr AND Artbw.Inhalt = BArtst.Inhalt AND Artbw.Jahr = BArtst.Jahr AND Artbw.Datum > ipDatum AND Artbw.Datum <= InvDat NO-LOCK: IF Artbw.Tr_Art = 21 THEN NEXT. IF Artbw.Tr_Art < 11 THEN DO: Verkehr = Verkehr - Artbw.Menge. NEXT. END. IF Artbw.Tr_Art < 21 THEN DO: Verkehr = Verkehr + Artbw.Menge. NEXT. END. END. END. InvBest = InvBest + Verkehr. opBestand = InvBest. IF VLiArt <> 2 THEN RETURN. REPEAT TRANSACTION: IF F_Abschliessen = FALSE THEN LEAVE. FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = BArtst.Firma AND Tabel.RecArt = 'EAVINV' AND Tabel.CodeC = cCodeC AND Tabel.CodeI = iCodeI AND Tabel.Sprcd = 1 NO-LOCK NO-ERROR. IF AVAILABLE Tabel THEN LEAVE. CREATE Tabel. ASSIGN Tabel.Firma = BArtst.Firma Tabel.RecArt = 'EAVINV' Tabel.CodeC = cCodeC Tabel.CodeI = iCodeI Tabel.Sprcd = 1 Tabel.Bez1 = STRING(InvBest,'999999999.999-'). RELEASE Tabel. LEAVE. END. RETURN. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE KOPF D-Dialog PROCEDURE KOPF : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER eh AS COMPONENT-HANDLE NO-UNDO. DEFINE VARIABLE Zelle AS CHARACTER NO-UNDO. FIND Steuer USE-INDEX Steuer-k1 WHERE Steuer.Firma = GVFirma NO-LOCK NO-ERROR. IF VLiArt = 02 THEN DO: Zelle = 'A1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = Steuer.Firma1. Zelle = 'D1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Spirituoseninventar'. 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 = 'D2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'per ' + STRING(F_VDatum,'99.99.9999'). Zelle = 'H2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. IF VLiArt = 03 THEN DO: Zelle = 'A1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = Steuer.Firma1. Zelle = 'G1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Spirituosenverkäufe'. Zelle = 'K1'. 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 = 'G2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = STRING(F_VDatum,'99.99.9999') + ' - ' + STRING(F_BDatum,'99.99.9999'). Zelle = 'K2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. IF VLiArt = 04 THEN DO: Zelle = 'A1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = Steuer.Firma1. Zelle = 'H1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Spirituosenbuchhaltung (Eidg. Alkoholverwaltung)'. Zelle = 'N1'. 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 = 'H2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = STRING(F_VDatum,'99.99.9999') + ' - ' + STRING(F_BDatum,'99.99.9999'). Zelle = 'N2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. IF VLiArt = 14 THEN DO: Zelle = 'A1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = Steuer.Firma1. Zelle = 'E1'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Spirituosenbuchhaltung (Eidg. Alkoholverwaltung)'. Zelle = 'K1'. 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 = 'E2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Zusammenfassung ' + STRING(F_VDatum,'99.99.9999') + ' - ' + STRING(F_BDatum,'99.99.9999'). Zelle = 'K2'. eh:Range(Zelle):SELECT. eh:SELECTION:VALUE = 'Zeit : ' + STRING(TIME,'HH:MM:SS'). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LIBILD D-Dialog PROCEDURE LIBILD : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ Helptext = "". FOR EACH LiBild USE-INDEX LiBild-k1 WHERE LiBild.Sprcd = GVSprcd AND LiBild.Prog = LiDruck.Listprog AND LiBild.Tenr > 0 NO-LOCK ix = 1 TO 20: Helptext[ix] = LiBild.Litext. END. Breite = INTEGER(SUBSTRING(Helptext[01],02,03)). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LISTTIT1 D-Dialog PROCEDURE LISTTIT1 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ IF BListen.ProgWahl = 2 THEN DO: Tittxt = 'per ' + STRING(F_BDatum,"99.99.9999"). END. IF BListen.ProgWahl = 3 THEN DO: Tittxt = STRING(F_VDatum,"99.99.9999") + " - " + STRING(F_BDatum,"99.99.9999"). END. IF BListen.ProgWahl = 4 THEN DO: Tittxt = STRING(F_VDatum,"99.99.9999") + " - " + STRING(F_BDatum,"99.99.9999"). END. Fuell = SUBSTRING(Helptext[01],01,01). Breite = INTEGER(SUBSTRING(Helptext[01],02,03)). VRand = INTEGER(SUBSTRING(Helptext[01],68,03)). Dattxt = SUBSTRING(Helptext[01],05,10). Seitxt = SUBSTRING(Helptext[01],15,10). Zeitxt = SUBSTRING(Helptext[01],25,10). Firtxt = SUBSTRING(Helptext[01],35,10). Jahtxt = SUBSTRING(Helptext[01],45,10). PPos1 = Breite - 20. PPos2 = (Breite - LENGTH(Helptext[02]) - 1) / 2. PPos5 = (Breite - LENGTH(Tittxt) - 1) / 2. ix = LENGTH(BDrucker.Drufettb) + LENGTH(BDrucker.Drufette). PPos3 = PPos1 + ix. PPos4 = Breite + ix - 3. IF Fuell <> "" THEN Kopfz = FILL(Fuell,Breite). Ueber1 = "". Ueber2 = "". Ueber3 = "". IF Helptext[03] <> "" THEN SUBSTRING(Ueber1,001) = Helptext[03]. IF Helptext[04] <> "" THEN SUBSTRING(Ueber1,071) = Helptext[04]. IF Helptext[05] <> "" THEN SUBSTRING(Ueber1,141) = Helptext[05]. IF Helptext[06] <> "" THEN SUBSTRING(Ueber2,001) = Helptext[06]. IF Helptext[07] <> "" THEN SUBSTRING(Ueber2,071) = Helptext[07]. IF Helptext[08] <> "" THEN SUBSTRING(Ueber2,141) = Helptext[08]. IF Helptext[09] <> "" THEN SUBSTRING(Ueber3,001) = Helptext[09]. IF Helptext[10] <> "" THEN SUBSTRING(Ueber3,071) = Helptext[10]. IF Helptext[11] <> "" THEN SUBSTRING(Ueber3,141) = Helptext[11]. IF Ueber1 <> '' THEN Ueber1 = BDrucker.Drufettb + Ueber1 + BDrucker.Drufette. IF Ueber2 <> '' THEN Ueber2 = BDrucker.Drufettb + Ueber2 + BDrucker.Drufette. IF Ueber3 <> '' THEN Ueber3 = BDrucker.Drufettb + Ueber3 + BDrucker.Drufette. Helptext[02] = BDrucker.Drufettb + Helptext[02] + BDrucker.Drufette. Tittxt = BDrucker.Drufettb + Tittxt + BDrucker.Drufette. ap = 1. XDruDat = ?. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LISTTIT2 D-Dialog PROCEDURE LISTTIT2 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ IF NOT TiDruck AND Leer > 0 THEN DO: { v8/putzeily.i XLeer Leer } END. IF (VLine + BLiDruck.Listfzz + Zuszz) > BLiDruck.Listtzz THEN TiDruck = TRUE. IF TiDruck THEN DO: IF Uebertrag <> "" THEN DO: { v8/putzeily.i XLeer "1" } { v8/putzeily.i Uebertrag "1" } { v8/putzeily.i XLeer "1" } END. IF DOpen = TRUE THEN DO: RUN NEUE_SEITE. END. ELSE DO: VSeite = VSeite + 1. VZNr = VZNr + 1. VLine = 0. CREATE XTermOut. ASSIGN XTermOut.ZNr = VZNr XTermOut.Zeile = ''. END. IF Listkzz > 0 THEN DO: { v8/putzeily.i XLeer Listkzz } END. IF Kopfz <> "" THEN DO: { v8/putzeily.i Kopfz "1" } END. Titelz = "". SUBSTRING(Titelz,01) = BSteuer.Firma1. SUBSTRING(Titelz,PPos1) = Dattxt. IF XDruDat <> ? THEN SUBSTR(Titelz,Breite - 9) = STRING(XDruDat,VDatForm). ELSE SUBSTR(Titelz,Breite - 9) = STRING(TODAY ,VDatForm). { v8/putzeily.i Titelz "1" } Titelz = "". SUBSTRING(Titelz,01) = BSteuer.Strasse. SUBSTRING(Titelz,PPos2) = Helptext[02]. SUBSTRING(Titelz,PPos3) = Seitxt. SUBSTRING(Titelz,PPos4) = STRING(VSeite,"zzz9"). { v8/putzeily.i Titelz "1" } Titelz = "". SUBSTRING(Titelz,01) = BSteuer.Ort. IF Tittxt <> "" THEN DO: SUBSTRING(Titelz,PPos5) = Tittxt. END. SUBSTRING(Titelz,PPos3) = Zeitxt. SUBSTRING(Titelz,PPos4 - 4) = STRING(TIME,"HH:MM:SS"). { v8/putzeily.i Titelz "1" } IF BListen.FirmaFl OR BListen.JahrFl THEN DO: Titelz = "". IF BListen.FirmaFl THEN DO: SUBSTRING(Titelz,01) = Firtxt. SUBSTRING(Titelz,11) = STRING(BListen.Firma). END. IF BListen.JahrFl THEN DO: SUBSTRING(Titelz,PPos1) = Jahtxt. SUBSTRING(Titelz,Breite - 3) = STRING(BListen.Jahr,"9999"). END. { v8/putzeily.i Titelz "1" } END. IF Kopfz <> "" THEN DO: { v8/putzeily.i Kopfz "1" } END. { v8/putzeily.i XLeer "1" } aa = 0. IF Ueber1 <> "" THEN DO: { v8/putzeily.i Ueber1 "1" } aa = 1. END. IF Ueber2 <> "" THEN DO: { v8/putzeily.i Ueber2 "1" } aa = 1. END. IF Ueber3 <> "" THEN DO: { v8/putzeily.i Ueber3 "1" } aa = 1. END. IF aa = 1 THEN DO: { v8/putzeily.i XLeer "1" }. END. TiGedru = TRUE. END. IF Leer > 0 OR TiDruck THEN DO: IF Ueber4 <> "" THEN DO: { v8/putzeily.i Ueber4 "2" } END. IF Ueber5 <> "" THEN DO: { v8/putzeily.i Ueber5 "2" } END. IF Uebertrag <> "" THEN DO: { v8/putzeily.i Uebertrag "2" } END. END. TiDruck = FALSE. Uebertrag = "". Leer = 0. Zuszz = 0. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-view D-Dialog PROCEDURE local-view : /*------------------------------------------------------------------------------ Purpose: Override standard ADM method Notes: ------------------------------------------------------------------------------*/ RUN dispatch IN THIS-PROCEDURE ( INPUT 'view':U ) . APPLY 'VALUE-CHANGED' TO CB_Listenart IN FRAME {&FRAME-NAME}. APPLY 'VALUE-CHANGED' TO CB_Drucker IN FRAME {&FRAME-NAME}. APPLY 'ENTRY' TO CB_Listenart IN FRAME {&FRAME-NAME}. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_SEITE D-Dialog PROCEDURE NEUE_SEITE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE A AS INTEGER NO-UNDO. DEFINE VARIABLE B AS INTEGER NO-UNDO. DO WHILE VSeite > 0: IF DOpen THEN DO: PUT STREAM Out_Stream CHR(12). LEAVE. END. A = BLiDruck.Listtzz. DO B = VLine TO A: VZNr = VZNr + 1. CREATE XTermOut. ASSIGN XTermOut.ZNr = VZNr XTermOut.Zeile = ''. END. LEAVE. END. VLine = 0. VSeite = VSeite + 1. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPENEXCEL D-Dialog PROCEDURE OPENEXCEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER excelAppl AS COMPONENT-HANDLE NO-UNDO. DEFINE INPUT PARAMETER VDateiName AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER VMakro AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER io AS LOG NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE Laenge AS INTEGER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE ReadOnly AS LOG NO-UNDO. DO WHILE TRUE: IF VDateiName = '' THEN DO: io = FALSE. RETURN. END. IF SEARCH(VDateiName) <> ? THEN DO: VDateiName = SEARCH(VDateiName). LEAVE. END. cString = ''. Laenge = LENGTH(VDateiName). DO ix = Laenge TO 1 BY -1: IF SUBSTRING(VDateiName,ix,01) = '/' THEN LEAVE. IF SUBSTRING(VDateiName,ix,01) = '\' THEN LEAVE. cString = SUBSTRING(VDateiName,ix,01) + cString. END. VDateiName = 'Vorlagen\' + cString. IF SEARCH(VDateiName) <> ? THEN DO: VDateiName = SEARCH(VDateiName). LEAVE. END. VDateiName = 'WordVorlagen\' + cString. IF SEARCH(VDateiName) <> ? THEN DO: VDateiName = SEARCH(VDateiName). LEAVE. END. VDateiName = 'ExcelVorlagen\' + cString. IF SEARCH(VDateiName) <> ? THEN DO: VDateiName = SEARCH(VDateiName). LEAVE. END. io = FALSE. RETURN. END. FILE-INFO:FILE-NAME = VDateiName. VDateiName = FILE-INFO:FULL-PATHNAME. IF INDEX(VDateiName, 'Vorlage') > 0 THEN ReadOnly = TRUE. ELSE ReadOnly = FALSE. io = excelAppl:Workbooks:Open(VDateiName, 0, ReadOnly) NO-ERROR. IF NOT io THEN RETURN. IF VMakro = '' THEN RETURN. io = excelAppl:APPLICATION:RUN(VMakro). RETURN. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records D-Dialog _ADM-SEND-RECORDS PROCEDURE send-records : /*------------------------------------------------------------------------------ Purpose: Send record ROWID's for all tables used by this file. Parameters: see template/snd-head.i ------------------------------------------------------------------------------*/ /* Define variables needed by this internal procedure. */ {src/adm/template/snd-head.i} /* For each requested table, put it's ROWID in the output list. */ {src/adm/template/snd-list.i "Listen"} /* Deal with any unexpected table requests before closing. */ {src/adm/template/snd-end.i} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SORT01 D-Dialog PROCEDURE SORT01 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ XSort1 = ''. IF THilfsTab.Sort_1 = '' THEN RETURN. FIND EAVSt1 USE-INDEX EAVSt1-k1 WHERE EAVSt1.Firma = THilfsTab.Firma AND EAVSt1.Cd_1 = INTEGER(THilfsTab.Sort_1) NO-LOCK NO-ERROR. IF AVAILABLE EAVSt1 THEN XSort1 = EAVSt1.Bezeichnung. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SORT02 D-Dialog PROCEDURE SORT02 : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ XSort2 = ''. IF THilfsTab.Sort_2 = '' THEN RETURN. FIND EAVSt2 USE-INDEX EAVSt2-k1 WHERE EAVSt2.Firma = THilfsTab.Firma AND EAVSt2.Cd_1 = INTEGER(THilfsTab.Sort_1) AND EAVSt2.Cd_2 = INTEGER(THilfsTab.Sort_2) NO-LOCK NO-ERROR. IF AVAILABLE EAVSt2 THEN XSort2 = EAVSt2.Bezeichnung. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SORTIERARTEN D-Dialog PROCEDURE SORTIERARTEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: CASE VLiArt: /* WHEN 1 THEN DO: RS_Sort:RADIO-BUTTONS = 'Warengruppe/Produktegruppe/Artikelgruppe,1,,2,,3'. RS_Sort-2:RADIO-BUTTONS = 'Suchbegriff,1,Kundengruppe/Suchbegriff,2,Preisgruppe/Suchbegriff,3'. END. */ WHEN 1 THEN DO: RS_Sort:RADIO-BUTTONS = 'EAV-Code / Artikelnummer / Inhalt / Jahr,1'. END. WHEN 2 THEN DO: RS_Sort:RADIO-BUTTONS = 'EAV-Code / Artikelnummer / Inhalt / Jahr,1'. END. WHEN 3 THEN DO: RS_Sort:RADIO-BUTTONS = 'EAV-Code / Artikelnummer / Inhalt / Jahr,1'. END. END CASE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed D-Dialog PROCEDURE state-changed : /* ----------------------------------------------------------- Purpose: Parameters: Notes: -------------------------------------------------------------*/ DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO. DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEMP_FILE D-Dialog PROCEDURE TEMP_FILE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE VSort1 AS CHARACTER NO-UNDO. DEFINE VARIABLE VSort2 AS CHARACTER NO-UNDO. DEFINE VARIABLE VSort3 AS CHARACTER NO-UNDO. DEFINE VARIABLE XVDat AS DATE NO-UNDO. DEFINE VARIABLE XBDat AS DATE NO-UNDO. DEFINE VARIABLE YVDat AS DATE NO-UNDO. DEFINE VARIABLE YBDat AS DATE NO-UNDO. DEFINE VARIABLE VBestand AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE VInvAlt AS DECIMAL DECIMALS 4 NO-UNDO. DEFINE VARIABLE VInvNeu AS DECIMAL DECIMALS 4 NO-UNDO. VDatum = F_VDatum. BDatum = F_BDatum. XVDat = VDatum - 10. XBDat = VDatum + 10. YVDat = BDatum - 10. YBDat = BDatum + 10. FOR EACH THilfsTab: DELETE THilfsTab. END. FOR EACH BArtst USE-INDEX Artst-k1 WHERE BArtst.Firma = GVFirma AND BArtst.Artnr >= F_VArtnr AND BArtst.Artnr <= F_BArtnr AND BArtst.Inhalt >= F_VInhalt AND BArtst.Inhalt <= F_BInhalt AND BArtst.Jahr >= F_VJahr AND BArtst.Jahr <= F_BJahr AND BArtst.Aktiv = TRUE AND BArtst.EAV_Code <> '' NO-LOCK : Ja = FALSE. VBestand = 0. VInvAlt = 0. VInvNeu = 0. IDatA = VDatum. IDatN = BDatum. DO WHILE TRUE: IF F_Hersteller <> '' AND LOOKUP(STRING(BArtst.Herst ,"999"), F_Hersteller ) = 0 THEN LEAVE. IF F_Warengruppe <> '' AND LOOKUP(STRING(BArtst.Wg_Grp ,"999"), F_Warengruppe ) = 0 THEN LEAVE. IF VLiArt = 2 THEN DO: RUN INVENTAR_BESTAND ( INPUT VDatum, OUTPUT VBestand ). IF VBestand = ? THEN LEAVE. END. IF VLiArt = 4 THEN DO: RUN INVENTAR_BESTAND ( INPUT VDatum - 1, OUTPUT VInvAlt ). RUN INVENTAR_BESTAND ( INPUT BDatum , OUTPUT VInvNeu ). END. Ja = TRUE. LEAVE. END. IF NOT Ja THEN NEXT. VSort1 = SUBSTRING(BArtst.EAV_Code,01,02). VSort2 = SUBSTRING(BArtst.EAV_Code,03,02). DO WHILE TRUE: IF VSort2 <> '00' THEN LEAVE. VSort2 = ''. IF VSort1 <> '00' THEN LEAVE. VSort1 = ''. LEAVE. END. IF VSort1 = '' THEN NEXT. CREATE THilfsTab. ASSIGN THilfsTab.Firma = GVFirma THilfsTab.Sort_1 = VSort1 THilfsTab.Sort_2 = VSort2 THilfsTab.Sort_3 = STRING(BArtst.Artnr ,"999999") + STRING(BArtst.Inhalt,"9999") + STRING(BArtst.Jahr ,"9999") THilfsTab.Zahl_1 = RECID(BArtst) THilfsTab.Wert[01] = VBestand THilfsTab.Wert[02] = VInvAlt THilfsTab.Wert[03] = VInvNeu THilfsTab.Datum_1 = IDatA THilfsTab.Datum_2 = IDatN THilfsTab.Wert_1 = BArtst.Alk_Gehalt. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WORKFILE D-Dialog PROCEDURE WORKFILE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DOpen = FALSE. VTemp = ''. IF BDrucker.Emul = 'TERMINAL' THEN DO: FOR EACH XTermOut: DELETE XTermOut. END. VZNr = 0. RETURN. END. IF VLiArt = 2 THEN RETURN. IF VLiArt = 3 THEN RETURN. DO WHILE TRUE TRANSACTION: FIND Tabel USE-INDEX Tabel-k1 WHERE Tabel.Firma = GVFirma AND Tabel.RecArt = 'TEMPFILE' AND Tabel.CodeI = 0 AND Tabel.CodeC = 'EWK' AND Tabel.Sprcd = 0 NO-ERROR. IF NOT AVAILABLE Tabel THEN DO: CREATE Tabel. ASSIGN Tabel.Firma = GVFirma Tabel.RecArt = 'TEMPFILE' Tabel.CodeI = 0 Tabel.CodeC = 'EWK' Tabel.Sprcd = 0 Tabel.Bez1 = SESSION:TEMP-DIR. END. Tabel.Int_1 = Tabel.Int_1 + 1. VTemp = Tabel.Bez1 + 'EWK' + STRING(Tabel.Int_1) + '.tmp'. RELEASE Tabel. LEAVE. END. DOpen = TRUE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION CREATEEXCEL D-Dialog FUNCTION CREATEEXCEL RETURNS COMPONENT-HANDLE ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE hdExcel AS COMPONENT-HANDLE NO-UNDO. DO WHILE TRUE: CREATE "Excel.Application" hdExcel CONNECT NO-ERROR. IF VALID-HANDLE(hdExcel) THEN LEAVE. CREATE "Excel.Application" hdExcel NO-ERROR. IF VALID-HANDLE(hdExcel) THEN hdExcel:Visible = TRUE. LEAVE. END. RETURN hdExcel. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME