&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME /* Connected Databases anadat PROGRESS */ &Scoped-define WINDOW-NAME CURRENT-WINDOW {adecomm/appserv.i} /* Temp-Table and Buffer definitions */ DEFINE TEMP-TABLE RowObject NO-UNDO {"d-lotlager.i"}. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS vTableWin /*------------------------------------------------------------------------ File: Description: from viewer.w - Template for SmartDataViewer objects Input Parameters: Output Parameters: ------------------------------------------------------------------------*/ /* 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 ************************** */ /* Komma-Trennzeichen */ /* Keyfelder werden beim Mutieren nicht "Enabled" */ &Scoped-define ERSTES_FELD Eingang &Scoped-define LETZTES_FELD Barcode &Scoped-define KEY_FELDER Lagerort,Eingang,Verfall,Lotnummer &Scoped-define NUR_LESEN Firma,Artnr,Inhalt,Jahr,Lager,Lotnummer_2,ProdNummer { incl/viwdefinition.i } DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE VARIABLE iArtnr AS INTEGER NO-UNDO. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE lVerfall AS LOG NO-UNDO. DEFINE VARIABLE lLotnr AS LOG NO-UNDO. DEFINE VARIABLE iHoReLager_Id AS INTEGER NO-UNDO. {src/adm2/widgetprto.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDataViewer &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER FRAME &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target /* Include file with RowObject temp-table definition */ &Scoped-define DATA-FIELD-DEFS "d-lotlager.i" /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME F-Main /* Standard List Definitions */ &Scoped-Define ENABLED-FIELDS RowObject.Lagerort RowObject.Eingang ~ RowObject.Verfall RowObject.Lotnummer RowObject.Bestand RowObject.Barcode &Scoped-define ENABLED-TABLES RowObject &Scoped-define FIRST-ENABLED-TABLE RowObject &Scoped-Define ENABLED-OBJECTS RECT-3 CB_Lager &Scoped-Define DISPLAYED-FIELDS RowObject.Lager RowObject.Jahr ~ RowObject.Inhalt RowObject.Firma RowObject.Artnr RowObject.ProdNummer ~ RowObject.HoReLager_Id RowObject.Lotnummer_2 RowObject.Lagerort ~ RowObject.Eingang RowObject.Verfall RowObject.Lotnummer RowObject.Bestand ~ RowObject.Barcode &Scoped-define DISPLAYED-TABLES RowObject &Scoped-define FIRST-DISPLAYED-TABLE RowObject &Scoped-Define DISPLAYED-OBJECTS CB_Lager /* Custom List Definitions */ /* ADM-ASSIGN-FIELDS,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD formatLagerPlatz vTableWin FUNCTION formatLagerPlatz RETURNS CHARACTER ( ipcLagerPlatz AS CHARACTER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE VARIABLE CB_Lager AS CHARACTER FORMAT "X(256)":U LABEL "Lager" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Item 1","Item 1" DROP-DOWN-LIST SIZE 30 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-3 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 126 BY 6.67. /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main CB_Lager AT ROW 1.52 COL 18 COLON-ALIGNED WIDGET-ID 28 RowObject.Lager AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 16 FORMAT "999999" VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Jahr AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 14 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Inhalt AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 12 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Firma AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 10 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Artnr AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 2 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.ProdNummer AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 22 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.HoReLager_Id AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 30 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Lotnummer_2 AT ROW 2 COL 78 COLON-ALIGNED WIDGET-ID 20 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Lagerort AT ROW 2.52 COL 18 COLON-ALIGNED WIDGET-ID 32 VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 RowObject.Eingang AT ROW 3.52 COL 18 COLON-ALIGNED WIDGET-ID 8 LABEL "Eingangsdatum" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 RowObject.Verfall AT ROW 4.52 COL 18 COLON-ALIGNED WIDGET-ID 24 LABEL "Verfall (MHD)" VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 RowObject.Lotnummer AT ROW 4.52 COL 49 COLON-ALIGNED WIDGET-ID 18 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 RowObject.Bestand AT ROW 4.52 COL 93 COLON-ALIGNED WIDGET-ID 6 VIEW-AS FILL-IN NATIVE SIZE 15 BY 1 BGCOLOR 15 RowObject.Barcode AT ROW 6 COL 18 COLON-ALIGNED WIDGET-ID 4 VIEW-AS FILL-IN NATIVE SIZE 62 BY 1 BGCOLOR 15 RECT-3 AT ROW 1.24 COL 2 WIDGET-ID 26 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY USE-DICT-EXPS SIDE-LABELS NO-UNDERLINE THREE-D NO-AUTO-VALIDATE AT COL 1 ROW 1 SCROLLABLE WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDataViewer Data Source: "d-lotlager.w" Allow: Basic,DB-Fields,Smart Container Links: Data-Target,Update-Source,TableIO-Target,GroupAssign-Source,GroupAssign-Target Frames: 1 Add Fields to: Neither Other Settings: PERSISTENT-ONLY COMPILE APPSERVER Temp-Tables and Buffers: TABLE: RowObject D "?" NO-UNDO ADDITIONAL-FIELDS: {d-lotlager.i} END-FIELDS. END-TABLES. */ /* 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 vTableWin ASSIGN HEIGHT = 7.14 WIDTH = 128. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB vTableWin /* ************************* Included-Libraries *********************** */ {src/adm2/viewer.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW vTableWin VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME F-Main NOT-VISIBLE FRAME-NAME Size-to-Fit */ ASSIGN FRAME F-Main:SCROLLABLE = FALSE FRAME F-Main:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN RowObject.Artnr IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Artnr:HIDDEN IN FRAME F-Main = TRUE RowObject.Artnr:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Eingang IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.Firma IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Firma:HIDDEN IN FRAME F-Main = TRUE RowObject.Firma:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.HoReLager_Id IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.HoReLager_Id:HIDDEN IN FRAME F-Main = TRUE RowObject.HoReLager_Id:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Inhalt IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Inhalt:HIDDEN IN FRAME F-Main = TRUE RowObject.Inhalt:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Jahr IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Jahr:HIDDEN IN FRAME F-Main = TRUE RowObject.Jahr:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Lager IN FRAME F-Main NO-ENABLE EXP-FORMAT */ ASSIGN RowObject.Lager:HIDDEN IN FRAME F-Main = TRUE RowObject.Lager:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Lotnummer_2 IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Lotnummer_2:HIDDEN IN FRAME F-Main = TRUE RowObject.Lotnummer_2:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.ProdNummer IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.ProdNummer:HIDDEN IN FRAME F-Main = TRUE RowObject.ProdNummer:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Verfall IN FRAME F-Main EXP-LABEL */ /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main /* Query rebuild information for FRAME F-Main _Options = "NO-LOCK" _Query is NOT OPENED */ /* FRAME F-Main */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK vTableWin /* *************************** Main Block *************************** */ { incl/viwmainblock.i } &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN RUN initializeObject. &ENDIF /************************ INTERNAL PROCEDURES ********************/ /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE addRecord vTableWin PROCEDURE addRecord : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FNeu = TRUE. FMut = TRUE. FDisp = TRUE. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancelRecord vTableWin PROCEDURE cancelRecord : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FCancel = TRUE. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE copyRecord vTableWin PROCEDURE copyRecord : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ FNeu = TRUE. FMut = TRUE. FCopy = TRUE. FDisp = TRUE. RUN SUPER. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE deleteRecord vTableWin PROCEDURE deleteRecord : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE Ja AS LOG NO-UNDO. Ja = DYNAMIC-FUNCTION( 'ANTWORT_NEIN':U, INPUT 1000 ). IF NOT Ja THEN DO: RUN TOOLBAR IN hKontainer ( INPUT 'CANCEL':U ) NO-ERROR. RETURN NO-APPLY. END. /* REPEAT TRANSACTION: */ /* RUN INAKTIVIEREN IN hDaten. */ /* LEAVE. */ /* END. */ /* */ RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disableFields vTableWin PROCEDURE disableFields : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcFieldType AS CHARACTER NO-UNDO. DO WITH FRAME {&FRAME-NAME}: END. RUN SUPER( INPUT pcFieldType). IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT TRUE ). IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO: RUN FARBE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT 15 ). END. DO WITH FRAME {&FRAME-NAME}: CB_Lager:SENSITIVE = TRUE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI vTableWin _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 F-Main. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE displayFields vTableWin PROCEDURE displayFields : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcColValues AS CHARACTER NO-UNDO. IF NOT FDisp THEN DO: FDisp = TRUE. RETURN. END. IF FCancel THEN pcColValues = OldColValues. IF NOT FNeu THEN OldColValues = pcColValues. OldColList = DYNAMIC-FUNCTION('getDisplayedFields':U). IF FNeu THEN RUN FEHLWERTE ( INPUT-OUTPUT pcColValues ). DO WITH FRAME {&FRAME-NAME}: END. RUN SUPER( INPUT pcColValues). FCancel = FALSE. DO WITH FRAME {&FRAME-NAME}: IF FMut THEN DO: END. ASSIGN iArtnr = INTEGER(rowObject.Artnr :SCREEN-VALUE) iInhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE) iJahr = INTEGER(rowObject.Jahr :SCREEN-VALUE). lVerfall = DYNAMIC-FUNCTION('isVerfall':U, iArtnr, iInhalt, iJahr ) NO-ERROR. lLotnr = DYNAMIC-FUNCTION('isLotnr':U , iArtnr, iInhalt, iJahr ) NO-ERROR. IF NOT lVerfall THEN rowObject.Verfall:SENSITIVE = FALSE. IF NOT lLotnr THEN rowObject.Lotnummer :SENSITIVE = FALSE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableFields vTableWin PROCEDURE enableFields : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ /* RUN SUPER. */ IF NOT VALID-HANDLE(Fenster) THEN Fenster = FRAME {&FRAME-NAME}:CURRENT-ITERATION. RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&ENABLED-FIELDS}', INPUT FALSE ). IF NUM-ENTRIES('{&NUR_LESEN}', ',') > 0 THEN DO: RUN READONLY_FELDER ( INPUT Fenster, INPUT '{&NUR_LESEN}', INPUT TRUE ). END. DO WITH FRAME {&FRAME-NAME}: CB_Lager:SENSITIVE = FALSE. END. IF FNeu THEN RETURN. IF NUM-ENTRIES('{&KEY_FELDER}', ',') > 0 THEN DO: RUN SCHUETZE_FELDER ( INPUT Fenster, INPUT '{&KEY_FELDER}', INPUT TRUE ). END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject vTableWin PROCEDURE enableObject : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: RUN COMBO_LAGER ( CB_Lager:HANDLE ) NO-ERROR. END. RUN SUPER. { incl/viwenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENTRY_FELD_TEST vTableWin PROCEDURE ENTRY_FELD_TEST : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ { incl/viwentryfeldtest.i } DO WITH FRAME {&FRAME-NAME}: CASE FeldName: END CASE. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FEHLWERTE vTableWin PROCEDURE FEHLWERTE : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT-OUTPUT PARAMETER pcColValues AS CHARACTER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. IF FCancel THEN RETURN. PUBLISH 'GET-LAGER-IN-ARTIKEL' (OUTPUT iLager). i1 = LOOKUP('Artnr', oldColList, ',') + 1. iArtnr = INTEGER(ENTRY(i1, pcColValues, CHR(1))) NO-ERROR. i1 = LOOKUP('Inhalt', oldColList, ',') + 1. iInhalt = INTEGER(ENTRY(i1, pcColValues, CHR(1))) NO-ERROR. i1 = LOOKUP('Jahr', oldColList, ',') + 1. iJahr = INTEGER(ENTRY(i1, pcColValues, CHR(1))) NO-ERROR. FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = iLager AND HoReLager.Artnr = iArtnr AND HoReLager.Inhalt = iInhalt AND HoReLager.Jahr = iJahr NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = iLager AND HoReLager.Artnr = iArtnr AND HoReLager.Inhalt = iInhalt NO-ERROR. END. IF NOT FCopy THEN DO WITH FRAME {&FRAME-NAME}: i1 = LOOKUP('Lager', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = STRING(iLager) NO-ERROR. IF AVAILABLE HoReLager THEN DO: i1 = LOOKUP('Lagerort', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = HoReLager.cSort NO-ERROR. END. END. IF FCopy THEN DO: END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LEAVE_FELD_TEST vTableWin PROCEDURE LEAVE_FELD_TEST : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. { incl/viwleavefeldtest.i } DO WHILE FNeu WITH FRAME {&FRAME-NAME}: CASE FeldName: WHEN 'Lagerort' THEN DO: SELF:SCREEN-VALUE = DYNAMIC-FUNCTION ('formatLagerPlatz':U, SELF:SCREEN-VALUE) NO-ERROR. FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.cSort = SELF:SCREEN-VALUE NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1113, '') NO-ERROR. RETURN 'ERROR'. END. iArtnr = INTEGER(rowObject.Artnr :SCREEN-VALUE). iInhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE). IF HoReLager.Artnr <> 0 AND HoReLager.Artnr <> iArtnr THEN DO: cString = SUBSTITUTE('&1/&2/&3', HoReLager.Artnr, HoReLager.Inhalt, HoReLager.Jahr). DYNAMIC-FUNCTION ('fehlerMeldung':U, 1118, cString) NO-ERROR. RETURN 'ERROR'. END. rowObject.HoReLager_Id:SCREEN-VALUE = STRING(HoReLager.HoReLager_Id). END. WHEN 'Eingang' THEN DO: dDatum = DATE(SELF:SCREEN-VALUE) NO-ERROR. IF ERROR-STATUS:ERROR OR dDatum = ? THEN SELF:SCREEN-VALUE = STRING(TODAY). END. WHEN 'Verfall' THEN DO: IF NOT lVerfall THEN SELF:SCREEN-VALUE = rowObject.Eingang:SCREEN-VALUE. ELSE DO: dDatum = DATE(SELF:SCREEN-VALUE) NO-ERROR. IF ERROR-STATUS:ERROR OR dDatum = ? THEN DO: RUN FEHLER ( 1104 ). RETURN 'ERROR'. END. END. END. WHEN 'Lotnummer' THEN DO: IF NOT lLotnr THEN DO: SELF:SCREEN-VALUE = ''. END. ELSE DO: IF SELF:SCREEN-VALUE = '' THEN DO: RUN FEHLER ( 1105 ). RETURN 'ERROR'. END. END. END. END CASE. LEAVE. END. DO WHILE TRUE WITH FRAME {&FRAME-NAME}: CASE FeldName: END CASE. LEAVE. END. IF LOOKUP(FeldName, '{&LETZTES_FELD}', ',') > 0 THEN DO: DO WHILE TRUE: IF KEYFUNCTION(LKY) = 'TAB' THEN LEAVE. IF KEYFUNCTION(LKY) = 'RETURN' THEN LEAVE. IF KEYFUNCTION(LKY) = 'F9' THEN LEAVE. RETURN ''. END. APPLY 'ALT-S'. RETURN 'APPLY'. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RETURN_FELD vTableWin PROCEDURE RETURN_FELD : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ { incl/viwreturnfeld.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEST_EINGABEN vTableWin PROCEDURE TEST_EINGABEN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE OUTPUT PARAMETER opJa AS LOG NO-UNDO. DEFINE VARIABLE eHandle AS HANDLE NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE iLotnummer AS INTEGER NO-UNDO. DEFINE VARIABLE dverfall AS DATE NO-UNDO. DEFINE VARIABLE cLotnr AS CHARACTER NO-UNDO. opJa = FALSE. eHandle = ?. IF NOT FMut THEN RETURN. DO WHILE FNeu WITH FRAME {&FRAME-NAME}: iHoReLager_Id = INTEGER(RowObject.HoReLager_Id:SCREEN-VALUE). dVerfall = DATE (RowObject.Verfall :SCREEN-VALUE ). cLotnr = RowObject.Lotnummer:SCREEN-VALUE . FIND FIRST LotLager NO-LOCK WHERE LotLager.HoReLager_Id = iHoReLager_Id AND LotLager.Verfall = dVerfall AND LotLager.Lotnummer = cLotnr NO-ERROR. IF NOT AVAILABLE LotLager THEN LEAVE. DYNAMIC-FUNCTION ('fehlerMeldung':U, 1119, '' ) NO-ERROR. eHandle = rowObject.Verfall:HANDLE. LEAVE. END. AAA000: DO WHILE TRUE WITH FRAME {&FRAME-NAME}: IF DATE(rowObject.Eingang:SCREEN-VALUE) = ? THEN rowObject.Eingang:SCREEN-VALUE = STRING(TODAY). IF NOT lVerfall THEN rowObject.Verfall:SCREEN-VALUE = rowObject.Eingang:SCREEN-VALUE. ELSE DO: IF rowObject.Verfall:SCREEN-VALUE = ? THEN DO: RUN FEHLER ( 1104 ). eHandle = rowObject.Verfall:HANDLE. LEAVE. END. END. IF lLotnr THEN DO: IF rowObject.Lotnummer:SCREEN-VALUE = '' THEN DO: RUN FEHLER ( 1105 ). eHandle = rowobject.Lotnummer:HANDLE. LEAVE. END. END. LEAVE. END. IF VALID-HANDLE(eHandle) THEN DO: APPLY 'ENTRY' TO eHandle. RETURN NO-APPLY. END. opJa = TRUE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateMode vTableWin PROCEDURE updateMode : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER pcMode AS CHARACTER NO-UNDO. CASE pcMode: WHEN 'updateBegin' THEN DO: RUN refreshRow IN hDaten. END. WHEN 'updateEnd' THEN DO: END. END. RUN SUPER( INPUT pcMode). CASE pcMode: WHEN 'updateBegin' THEN DO: FMut = TRUE. END. WHEN 'updateEnd' THEN DO: FNeu = FALSE. FMut = FALSE. FCopy = FALSE. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE updateRecord vTableWin PROCEDURE updateRecord : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: IF FNeu THEN DO: DYNAMIC-FUNCTION('SETMODIFIEDFLAG':U, INPUT Fenster, INPUT TRUE). END. END. FNeu = FALSE. FCopy = FALSE. RUN SUPER. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION formatLagerPlatz vTableWin FUNCTION formatLagerPlatz RETURNS CHARACTER ( ipcLagerPlatz AS CHARACTER ): /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO. DEFINE VARIABLE cSf AS CHARACTER NO-UNDO. DEFINE VARIABLE cLagerPlatz AS CHARACTER NO-UNDO. cLagerPlatz = REPLACE(ipcLagerPlatz, '.', '-'). cLagerPlatz = REPLACE(cLagerPlatz , ',', '-'). DO ii = 1 TO NUM-ENTRIES(cLagerPlatz, '-'): CASE ii: WHEN 1 THEN cRegal = ENTRY(ii, cLagerPlatz, '-'). WHEN 2 THEN cPlatz = ENTRY(ii, cLagerPlatz, '-'). WHEN 3 THEN cNiveau = ENTRY(ii, cLagerPlatz, '-'). WHEN 4 THEN cSf = ENTRY(ii, cLagerPlatz, '-'). END. END. DO WHILE LENGTH(cPlatz) < 3: cPlatz = '0' + cPlatz. END. DO WHILE LENGTH(cNiveau) < 2: cNiveau = '0' + cNiveau. END. DO WHILE cSf <> '' AND LENGTH(cSf) < 2: cSf = '0' + cSf. END. cLagerPlatz = ''. cLagerPlatz = SUBSTITUTE('&1-&2-&3', cRegal, cPlatz, cNiveau). IF cSf <> '' THEN cLagerPlatz = cLagerPlatz + '-' + cSf. cLagerPlatz = CAPS(cLagerPlatz). RETURN cLagerPlatz. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME