&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW {adecomm/appserv.i} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS dTables /*------------------------------------------------------------------------ File: Description: from DATA.W - Template For SmartData objects in the ADM Input Parameters: Output Parameters: Modified: February 24, 1999 ------------------------------------------------------------------------*/ /* 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 iKnr AS INT NO-UNDO. DEF VAR iArtnr AS INT NO-UNDO. DEF VAR iInhalt AS INT NO-UNDO. DEF VAR iJahr AS INT NO-UNDO. DEF VAR iPreis_Grp AS INT NO-UNDO. &SCOPED-DEFINE Tabelle SpezPrei &SCOPED-DEFINE TabWhere /* USE-INDEX Benutzer-k1 ~ WHERE {&Tabelle}.Benutzer = tRowObject.Benutzer */ { incl/datdefinition.i } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Global-define DATA-LOGIC-PROCEDURE .p &Scoped-define PROCEDURE-TYPE SmartDataObject &Scoped-define DB-AWARE yes &Scoped-define ADM-SUPPORTED-LINKS Data-Source,Data-Target,Navigation-Target,Update-Target,Commit-Target,Filter-Target /* Db-Required definitions. */ &IF DEFINED(DB-REQUIRED) = 0 &THEN &GLOBAL-DEFINE DB-REQUIRED TRUE &ENDIF &GLOBAL-DEFINE DB-REQUIRED-START &IF {&DB-REQUIRED} &THEN &GLOBAL-DEFINE DB-REQUIRED-END &ENDIF &Scoped-define QUERY-NAME Query-Main /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES SpezPrei /* Definitions for QUERY Query-Main */ &Scoped-Define ENABLED-FIELDS Firma Knr Kunde Artnr Inhalt Jahr Ab_Datum Bis_Datum Menge Proz_Betr Wert~ Marge AltPreis Artikel PreisMut VP_Normal lAktion lNetto &Scoped-define ENABLED-FIELDS-IN-SpezPrei Firma Knr Artnr Inhalt Jahr ~ Ab_Datum Bis_Datum Menge Proz_Betr Wert lAktion lNetto &Scoped-Define DATA-FIELDS Firma Knr Kunde Artnr Inhalt Jahr Ab_Datum Bis_Datum Menge Proz_Betr Wert~ Marge AltPreis Artikel PreisMut VP_Normal lAktion lNetto &Scoped-define DATA-FIELDS-IN-SpezPrei Firma Knr Artnr Inhalt Jahr Ab_Datum ~ Bis_Datum Menge Proz_Betr Wert lAktion lNetto &Scoped-Define MANDATORY-FIELDS &Scoped-Define APPLICATION-SERVICE &Scoped-Define ASSIGN-LIST &Scoped-Define DATA-FIELD-DEFS "d-spezprei.i" &Scoped-Define DATA-TABLE-NO-UNDO NO-UNDO &Scoped-define QUERY-STRING-Query-Main FOR EACH SpezPrei NO-LOCK INDEXED-REPOSITION {&DB-REQUIRED-START} &Scoped-define OPEN-QUERY-Query-Main OPEN QUERY Query-Main FOR EACH SpezPrei NO-LOCK INDEXED-REPOSITION. {&DB-REQUIRED-END} &Scoped-define TABLES-IN-QUERY-Query-Main SpezPrei &Scoped-define FIRST-TABLE-IN-QUERY-Query-Main SpezPrei /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getCurrentRecid dTables _DB-REQUIRED FUNCTION getCurrentRecid RETURNS RECID ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getDaten dTables _DB-REQUIRED FUNCTION getDaten RETURNS DECIMAL ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getQueryBuffer dTables _DB-REQUIRED FUNCTION getQueryBuffer RETURNS HANDLE ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD openQuery dTables _DB-REQUIRED FUNCTION openQuery RETURNS LOGICAL ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} /* *********************** Control Definitions ********************** */ {&DB-REQUIRED-START} /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY Query-Main FOR SpezPrei SCROLLING. &ANALYZE-RESUME {&DB-REQUIRED-END} /* ************************ Frame Definitions *********************** */ /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDataObject Allow: Query Frames: 0 Add Fields to: Neither Other Settings: PERSISTENT-ONLY COMPILE APPSERVER DB-AWARE */ /* This procedure should always be RUN PERSISTENT. Report the error, */ /* then cleanup and return. */ IF NOT THIS-PROCEDURE:PERSISTENT THEN DO: MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U VIEW-AS ALERT-BOX ERROR BUTTONS OK. RETURN. END. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW dTables ASSIGN HEIGHT = 1.62 WIDTH = 72.6. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB dTables /* ************************* Included-Libraries *********************** */ {src/adm2/data.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW dTables VISIBLE,,RUN-PERSISTENT */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK QUERY Query-Main /* Query rebuild information for SmartDataObject Query-Main _TblList = "AnaDat.SpezPrei" _Options = "NO-LOCK INDEXED-REPOSITION" _FldNameList[1] > AnaDat.SpezPrei.Firma "Firma" "Firma" ? ? "character" ? ? ? ? ? ? yes ? no 8 yes ? _FldNameList[2] > AnaDat.SpezPrei.Knr "Knr" "Knr" ? ? "integer" ? ? ? ? ? ? yes ? no 7.2 yes ? _FldNameList[3] > "_" "IF sAktiv THEN DYNAMIC-FUNCTION('getAdressAnzeige':U, RowObject.Knr) ELSE ''" "Kunde" "Kunde" "x(50)" "character" ? ? ? ? ? ? yes ? no 50 no ? _FldNameList[4] > AnaDat.SpezPrei.Artnr "Artnr" "Artnr" ? ? "integer" ? ? ? ? ? ? yes ? no 7.2 yes ? _FldNameList[5] > AnaDat.SpezPrei.Inhalt "Inhalt" "Inhalt" ? ? "integer" ? ? ? ? ? ? yes ? no 5.2 yes ? _FldNameList[6] > AnaDat.SpezPrei.Jahr "Jahr" "Jahr" ? ? "integer" ? ? ? ? ? ? yes ? no 4.8 yes ? _FldNameList[7] > AnaDat.SpezPrei.Ab_Datum "Ab_Datum" "Ab_Datum" ? ? "date" ? ? ? ? ? ? yes ? no 10.8 yes ? _FldNameList[8] > AnaDat.SpezPrei.Bis_Datum "Bis_Datum" "Bis_Datum" ? ? "date" ? ? ? ? ? ? yes ? no 10.8 yes ? _FldNameList[9] > AnaDat.SpezPrei.Menge "Menge" "Menge" ? ? "decimal" ? ? ? ? ? ? yes ? no 6.8 yes ? _FldNameList[10] > AnaDat.SpezPrei.Proz_Betr "Proz_Betr" "Proz_Betr" ? ? "logical" ? ? ? ? ? ? yes ? no 9.2 yes ? _FldNameList[11] > AnaDat.SpezPrei.Wert "Wert" "Wert" ? ? "decimal" ? ? ? ? ? ? yes ? no 9.2 yes ? _FldNameList[12] > "_" "0.0000" "Marge" "Marge" "->>,>>9.99" "Decimal" ? ? ? ? ? ? yes ? no 10.2 no ? _FldNameList[13] > "_" "0.0000" "AltPreis" "alter Preis" "->>,>>9.99" "Decimal" ? ? ? ? ? ? yes ? no 10.2 no ? _FldNameList[14] > "_" "''" "Artikel" "Artikel" "x(40)" "character" ? ? ? ? ? ? yes ? no 40 no ? _FldNameList[15] > "_" "FALSE" "PreisMut" ? "Yes/No" "Logical" ? ? ? ? ? ? yes ? no 3.6 no ? _FldNameList[16] > "_" "DYNAMIC-FUNCTION('getDaten':U IN THIS-PROCEDURE)" "VP_Normal" "norm. VP" "->>,>>9.99" "Decimal" ? ? ? ? ? ? yes ? no 10.2 no ? _FldNameList[17] > AnaDat.SpezPrei.lAktion "lAktion" "lAktion" ? ? "logical" ? ? ? ? ? ? yes ? no 6.4 yes ? _FldNameList[18] > AnaDat.SpezPrei.lNetto "lNetto" "lNetto" ? ? "logical" ? ? ? ? ? ? yes ? no 15.6 yes ? _Design-Parent is WINDOW dTables @ ( 1.14 , 2.6 ) */ /* QUERY Query-Main */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK dTables /* *************************** Main Block *************************** */ { incl/datmainblock.i } SUBSCRIBE TO 'OPENPREIS' ANYWHERE. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN initializeObject. &ENDIF /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DATA.CALCULATE dTables DATA.CALCULATE _DB-REQUIRED PROCEDURE DATA.CALCULATE : /*------------------------------------------------------------------------------ Purpose: Calculate all the Calculated Expressions found in the SmartDataObject. Parameters: ------------------------------------------------------------------------------*/ ASSIGN rowObject.AltPreis = (0.0000) rowObject.Artikel = ('') rowObject.Kunde = (IF sAktiv THEN DYNAMIC-FUNCTION('getAdressAnzeige':U, RowObject.Knr) ELSE '') rowObject.Marge = (0.0000) rowObject.PreisMut = (FALSE) rowObject.VP_Normal = (DYNAMIC-FUNCTION('getDaten':U IN THIS-PROCEDURE)) . END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE dataAvailable dTables _DB-REQUIRED PROCEDURE dataAvailable : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datdataavailable.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI dTables _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. */ IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE INAKTIVIEREN dTables _DB-REQUIRED PROCEDURE INAKTIVIEREN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datinaktivieren.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject dTables _DB-REQUIRED PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datinitialize.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPENPREIS dTables _DB-REQUIRED PROCEDURE OPENPREIS : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DYNAMIC-FUNCTION('openQuery':U) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REAKTIVIEREN dTables _DB-REQUIRED PROCEDURE REAKTIVIEREN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datreaktivieren.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REPOS_TABELLE dTables _DB-REQUIRED PROCEDURE REPOS_TABELLE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datrepos.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_FILTER dTables _DB-REQUIRED PROCEDURE SET_FILTER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datsetfilter.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_OPENFLAG dTables _DB-REQUIRED PROCEDURE SET_OPENFLAG : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datsetopenflag.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SET_SORT dTables _DB-REQUIRED PROCEDURE SET_SORT : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/datsetsort.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} /* ************************ Function Implementations ***************** */ {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getCurrentRecid dTables _DB-REQUIRED FUNCTION getCurrentRecid RETURNS RECID ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ { incl/datgetcurrentrecid.i } END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getDaten dTables _DB-REQUIRED FUNCTION getDaten RETURNS DECIMAL ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEF VAR dAbDatum AS DATE NO-UNDO. DEF VAR ListenEp AS DEC DECIMALS 4 NO-UNDO. DEF VAR dWert AS DEC DECIMALS 4 NO-UNDO. DEF VAR Ansatz AS DEC DECIMALS 4 NO-UNDO. DEF VAR VK_Spez AS DEC DECIMALS 4 NO-UNDO. DEF VAR VK_Norm AS DEC DECIMALS 4 NO-UNDO. DEF VAR lInkl AS LOG NO-UNDO. DEF VAR lProzBetr AS LOG NO-UNDO. DEF VAR lMut AS LOG NO-UNDO. DEF BUFFER BArtPreis FOR ArtPreis. ASSIGN iKnr = rowObject.Knr iArtnr = rowObject.Artnr iInhalt = rowObject.Inhalt iJahr = rowObject.Jahr dWert = rowObject.Wert lProzBetr = rowObject.Proz_Betr dAbDatum = rowObject.Ab_Datum. /* IF lFirst THEN DO: MESSAGE iKnr SKIP iArtnr SKIP iInhalt SKIP iJahr SKIP dWert SKIP lProzBetr SKIP dAbDatum SKIP VIEW-AS ALERT-BOX. lFirst = FALSE. END. */ FIND Artst NO-LOCK USE-INDEX Artst-k1 WHERE Artst.Firma = Firma AND Artst.Artnr = iArtnr AND Artst.Inhalt = iInhalt AND Artst.Jahr = iJahr NO-ERROR. IF NOT AVAILABLE Artst THEN RETURN 0.0000. ListenEp = Artst.Listen_Ep. FIND FIRST Artbez NO-LOCK USE-INDEX Artbez-k1 WHERE Artbez.Firma = Firma AND Artbez.Artnr = iArtnr AND Artbez.Inhalt = iInhalt AND Artbez.Jahr = iJahr NO-ERROR. rowObject.Artikel = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2). FIND Debst NO-LOCK USE-INDEX Debst-k1 WHERE Debst.Firma = Firma AND Debst.Knr = iKnr NO-ERROR. iPreis_Grp = Debst.Preis_Grp. FIND Wust NO-LOCK USE-INDEX Wust-k1 WHERE Wust.CodeK = Debst.MWST AND Wust.CodeA = 99 NO-ERROR. lInkl = Wust.Incl. FIND AbwPrGrp NO-LOCK USE-INDEX AbwPrGrp-k1 WHERE AbwPrGrp.Firma = Firma AND AbwPrGrp.Knr = iKnr AND AbwPrGrp.Wg_Grp = Artst.Wg_Grp NO-ERROR. IF AVAILABLE AbwPrGrp THEN iPreis_Grp = AbwPrGrp.Preis_Grp. FIND LAST ArtPreis NO-LOCK USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = iArtnr AND ArtPreis.Inhalt = iInhalt AND ArtPreis.Jahr = iJahr AND ArtPreis.Preis_Grp = iPreis_Grp AND ArtPreis.Ab_Datum <= TODAY AND ArtPreis.Aktion = FALSE AND ArtPreis.Aktiv = TRUE NO-ERROR. IF NOT AVAILABLE ArtPreis THEN DO: FIND LAST ArtPreis NO-LOCK USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = iArtnr AND ArtPreis.Inhalt = iInhalt AND ArtPreis.Jahr = iJahr AND ArtPreis.Preis_Grp = Debst.Preis_Grp AND ArtPreis.Ab_Datum <= TODAY AND ArtPreis.Aktion = FALSE AND ArtPreis.Aktiv = TRUE NO-ERROR. END. IF NOT AVAILABLE ArtPreis THEN DO: FIND LAST ArtPreis NO-LOCK USE-INDEX ArtPreis-k1 WHERE ArtPreis.Firma = Firma AND ArtPreis.Artnr = iArtnr AND ArtPreis.Inhalt = iInhalt AND ArtPreis.Jahr = iJahr AND ArtPreis.Preis_Grp = 0 AND ArtPreis.Ab_Datum <= TODAY AND ArtPreis.Aktion = FALSE AND ArtPreis.Aktiv = TRUE NO-ERROR. END. lMut = FALSE. IF AVAILABLE ArtPreis THEN DO: IF lInkl THEN VK_Norm = ArtPreis.VK_Brutto. ELSE VK_Norm = ArtPreis.VK_Netto. rowObject.PreisMut = (IF ArtPreis.Ab_Datum > (TODAY - 90 ) THEN TRUE ELSE FALSE). FIND LAST BArtPreis NO-LOCK USE-INDEX ArtPreis-k1 WHERE BArtPreis.Firma = ArtPreis.Firma AND BArtPreis.Artnr = ArtPreis.Artnr AND BArtPreis.Inhalt = ArtPreis.Inhalt AND BArtPreis.Jahr = ArtPreis.Jahr AND BArtPreis.Preis_Grp = ArtPreis.Preis_Grp AND BArtPreis.Ab_Datum <= ArtPreis.Ab_Datum AND BArtPreis.Aktion = FALSE NO-ERROR. IF AVAILABLE BArtPreis THEN rowObject.AltPreis = BArtPreis.VK_Netto. ELSE rowObject.AltPreis = 0. END. Ansatz = (ArtPreis.VK_Brutto * 100 / ArtPreis.VK_Netto) NO-ERROR. IF Ansatz = ? THEN Ansatz = 0. IF NOT lProzBetr THEN VK_Spez = dWert. ELSE VK_Spez = VK_Norm * (100 - dWert) / 100. IF lInkl THEN VK_Spez = VK_Spez / Ansatz * 100. IF ListenEP = 0 THEN rowObject.Marge = 0. ELSE rowObject.Marge = 100 - (ListenEP * 100 / VK_Spez). RETURN VK_Norm. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getQueryBuffer dTables _DB-REQUIRED FUNCTION getQueryBuffer RETURNS HANDLE ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ RETURN BUFFER rowObject:HANDLE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END} {&DB-REQUIRED-START} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION openQuery dTables _DB-REQUIRED FUNCTION openQuery RETURNS LOGICAL ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Super Override Notes: ------------------------------------------------------------------------------*/ DEF VAR Felder AS CHAR NO-UNDO. DEF VAR Inhalt AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF VAR cFeld AS CHAR NO-UNDO. IF NOT fOpen THEN RETURN FALSE. xWhere = ''. xSort = ''. xString = ''. Felder = DYNAMIC-FUNCTION('getForeignFields':U) NO-ERROR. Inhalt = DYNAMIC-FUNCTION('getForeignValues':U) NO-ERROR. /* ix = LOOKUP('Feld', Felder, ',') / 2. */ /* cFeld = ENTRY (ix , Inhalt, CHR(01)). */ /* xWhere = 'Aufko.Firma = ' + QUOTER(Firma) + ' AND ' */ /* + 'Aufko.Auf_Sta = ' + STRING(Auf_Sta) + ' '. */ /* xString = 'FOR EACH Debop ' + xSort + 'WHERE ' */ /* + 'Debop.Firma = "' + Firma + '" AND ' */ /* + 'Debop.Knr = ' + STRING(Knr) + ' ' */ /* + 'NO-LOCK BY Debop.FakDat DESCENDING INDEXED-REPOSITION '. */ { incl/datopenquery.i } IF xWhere <> '' THEN DYNAMIC-FUNCTION('setQueryWhere':U , INPUT xWhere ). IF xString <> '' THEN DYNAMIC-FUNCTION('setQueryString':U, INPUT xString). IF xSort <> '' THEN DYNAMIC-FUNCTION('setQuerySort':U , INPUT xSort ). RETURN SUPER( ). END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME {&DB-REQUIRED-END}