&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-horelager.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 Lager &Scoped-define LETZTES_FELD MaxMenge_KGeb &Scoped-define KEY_FELDER Lager,Regal,Niveau,Platz,Sf &Scoped-define NUR_LESEN Firma,Art,Artikel,cSort,GGebinde,VGebinde,KGebinde { incl/viwdefinition.i } DEFINE VARIABLE iJahrEff AS INTEGER NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE VARIABLE cReadOnlyFelder AS CHARACTER NO-UNDO. DEFINE TEMP-TABLE tArtst LIKE Artst. {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-horelager.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.Regal RowObject.Platz ~ RowObject.Niveau RowObject.Sf RowObject.cSort RowObject.Bezeichnung ~ RowObject.Artnr RowObject.Inhalt RowObject.Jahr RowObject.Artikel ~ RowObject.Eingang RowObject.Verfall RowObject.Lotnummer RowObject.Bestand ~ RowObject.GGebinde RowObject.MinMenge_GGeb RowObject.MaxMenge_GGeb ~ RowObject.VGebinde RowObject.MinMenge_VGeb RowObject.MaxMenge_VGeb ~ RowObject.KGebinde RowObject.MinMenge_KGeb RowObject.MaxMenge_KGeb &Scoped-define ENABLED-TABLES RowObject &Scoped-define FIRST-ENABLED-TABLE RowObject &Scoped-Define ENABLED-OBJECTS RECT-2 CB_Status &Scoped-Define DISPLAYED-FIELDS RowObject.Regal RowObject.Platz ~ RowObject.Niveau RowObject.Sf RowObject.Lager RowObject.Firma RowObject.Art ~ RowObject.cSort RowObject.iStatus RowObject.HoReLager_Id ~ RowObject.Bezeichnung RowObject.Artnr RowObject.Inhalt RowObject.Jahr ~ RowObject.Artikel RowObject.Eingang RowObject.Verfall RowObject.Lotnummer ~ RowObject.Bestand RowObject.GGebinde RowObject.MinMenge_GGeb ~ RowObject.MaxMenge_GGeb RowObject.VGebinde RowObject.MinMenge_VGeb ~ RowObject.MaxMenge_VGeb RowObject.KGebinde RowObject.MinMenge_KGeb ~ RowObject.MaxMenge_KGeb &Scoped-define DISPLAYED-TABLES RowObject &Scoped-define FIRST-DISPLAYED-TABLE RowObject &Scoped-Define DISPLAYED-OBJECTS CB_Status /* Custom List Definitions */ /* ADM-ASSIGN-FIELDS,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 CB_Status /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getArtikel vTableWin FUNCTION getArtikel RETURNS LOGICAL ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Definitions of the field level widgets */ DEFINE VARIABLE CB_Status AS CHARACTER FORMAT "X(256)":U INITIAL "0" LABEL "Status" VIEW-AS COMBO-BOX INNER-LINES 5 LIST-ITEM-PAIRS "Frei für alle Artikel","0", "Für den Artikel reserviert","1", "vom Artikel belegt","2", "Reserviert zur Einlagerung","3", "Lagerplatz gesperrt","9" DROP-DOWN-LIST SIZE 30 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 126 BY 11.43. /* ************************ Frame Definitions *********************** */ DEFINE FRAME F-Main RowObject.Regal AT ROW 2 COL 17 COLON-ALIGNED WIDGET-ID 48 VIEW-AS FILL-IN NATIVE SIZE 9 BY 1 BGCOLOR 15 RowObject.Platz AT ROW 2 COL 34 COLON-ALIGNED WIDGET-ID 46 VIEW-AS FILL-IN NATIVE SIZE 9 BY 1 BGCOLOR 15 RowObject.Niveau AT ROW 2 COL 53 COLON-ALIGNED WIDGET-ID 44 VIEW-AS FILL-IN NATIVE SIZE 9 BY 1 BGCOLOR 15 RowObject.Sf AT ROW 2 COL 67 COLON-ALIGNED WIDGET-ID 50 VIEW-AS FILL-IN NATIVE SIZE 9 BY 1 BGCOLOR 15 RowObject.Lager AT ROW 2 COL 74 COLON-ALIGNED WIDGET-ID 28 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Firma AT ROW 2 COL 74 COLON-ALIGNED WIDGET-ID 16 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.Art AT ROW 2 COL 74 COLON-ALIGNED WIDGET-ID 2 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.cSort AT ROW 2 COL 84 COLON-ALIGNED WIDGET-ID 12 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.iStatus AT ROW 2 COL 90 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 115 COLON-ALIGNED WIDGET-ID 62 VIEW-AS FILL-IN NATIVE SIZE 4 BY 1 NO-TAB-STOP RowObject.Bezeichnung AT ROW 3.52 COL 17 COLON-ALIGNED WIDGET-ID 10 VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 RowObject.Artnr AT ROW 5 COL 17 COLON-ALIGNED WIDGET-ID 6 LABEL "Artikel" VIEW-AS FILL-IN NATIVE SIZE 11 BY 1 BGCOLOR 15 RowObject.Inhalt AT ROW 5 COL 29 COLON-ALIGNED NO-LABEL WIDGET-ID 20 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 RowObject.Jahr AT ROW 5 COL 38 COLON-ALIGNED NO-LABEL WIDGET-ID 24 VIEW-AS FILL-IN NATIVE SIZE 8 BY 1 BGCOLOR 15 RowObject.Artikel AT ROW 5 COL 48 COLON-ALIGNED NO-LABEL WIDGET-ID 4 VIEW-AS FILL-IN NATIVE SIZE 60 BY 1 BGCOLOR 15 RowObject.Eingang AT ROW 6.52 COL 17 COLON-ALIGNED WIDGET-ID 14 VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 RowObject.Verfall AT ROW 6.52 COL 45 COLON-ALIGNED WIDGET-ID 52 VIEW-AS FILL-IN NATIVE SIZE 16 BY 1 BGCOLOR 15 RowObject.Lotnummer AT ROW 6.52 COL 75 COLON-ALIGNED WIDGET-ID 30 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 RowObject.Bestand AT ROW 6.52 COL 110 COLON-ALIGNED WIDGET-ID 8 FORMAT "zzz,zz9-" VIEW-AS FILL-IN NATIVE SIZE 13 BY 1 BGCOLOR 15 CB_Status AT ROW 7.52 COL 17 COLON-ALIGNED WIDGET-ID 60 RowObject.GGebinde AT ROW 9 COL 17 COLON-ALIGNED WIDGET-ID 18 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.MinMenge_GGeb AT ROW 9 COL 55 COLON-ALIGNED WIDGET-ID 38 LABEL "Min Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 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. /* DEFINE FRAME statement is approaching 4K Bytes. Breaking it up */ DEFINE FRAME F-Main RowObject.MaxMenge_GGeb AT ROW 9 COL 85 COLON-ALIGNED WIDGET-ID 32 LABEL "Max Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 RowObject.VGebinde AT ROW 10 COL 17 COLON-ALIGNED WIDGET-ID 54 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.MinMenge_VGeb AT ROW 10 COL 55 COLON-ALIGNED WIDGET-ID 42 LABEL "Min Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 RowObject.MaxMenge_VGeb AT ROW 10 COL 85 COLON-ALIGNED WIDGET-ID 36 LABEL "Max Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 RowObject.KGebinde AT ROW 11 COL 17 COLON-ALIGNED WIDGET-ID 26 VIEW-AS FILL-IN NATIVE SIZE 22 BY 1 BGCOLOR 15 NO-TAB-STOP RowObject.MinMenge_KGeb AT ROW 11 COL 55 COLON-ALIGNED WIDGET-ID 40 LABEL "Min Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 RowObject.MaxMenge_KGeb AT ROW 11 COL 85 COLON-ALIGNED WIDGET-ID 34 LABEL "Max Best." VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 RECT-2 AT ROW 1.24 COL 2 WIDGET-ID 58 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-horelager.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-horelager.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 = 11.91 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.Art IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Art:HIDDEN IN FRAME F-Main = TRUE RowObject.Art:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Artnr IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.Bestand IN FRAME F-Main EXP-FORMAT */ /* SETTINGS FOR COMBO-BOX CB_Status IN FRAME F-Main 6 */ /* 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. ASSIGN RowObject.GGebinde: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.iStatus IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.iStatus:HIDDEN IN FRAME F-Main = TRUE RowObject.iStatus:READ-ONLY IN FRAME F-Main = TRUE. ASSIGN RowObject.KGebinde:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.Lager IN FRAME F-Main NO-ENABLE */ ASSIGN RowObject.Lager:HIDDEN IN FRAME F-Main = TRUE RowObject.Lager:READ-ONLY IN FRAME F-Main = TRUE. /* SETTINGS FOR FILL-IN RowObject.MaxMenge_GGeb IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.MaxMenge_KGeb IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.MaxMenge_VGeb IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.MinMenge_GGeb IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.MinMenge_KGeb IN FRAME F-Main EXP-LABEL */ /* SETTINGS FOR FILL-IN RowObject.MinMenge_VGeb IN FRAME F-Main EXP-LABEL */ ASSIGN RowObject.VGebinde:READ-ONLY IN FRAME F-Main = TRUE. /* _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 /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME RowObject.Artnr &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL RowObject.Artnr vTableWin ON ALT-F OF RowObject.Artnr IN FRAME F-Main /* Artikel */ DO: RUN SUCHEN. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst OR tArtst.Artnr = 0 THEN RETURN NO-APPLY. APPLY 'ENTRY' TO rowObject.Eingang. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL RowObject.Artnr vTableWin ON CTRL-N OF RowObject.Artnr IN FRAME F-Main /* Artikel */ DO: RUN SUCHEN_NUMMER. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst OR tArtst.Artnr = 0 THEN RETURN NO-APPLY. APPLY 'ENTRY' TO rowObject.Eingang. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME CB_Status &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Status vTableWin ON VALUE-CHANGED OF CB_Status IN FRAME F-Main /* Status */ DO: IF FMut THEN rowObject.iStatus:SCREEN-VALUE = SELF:SCREEN-VALUE NO-ERROR. SELF:SCREEN-VALUE = rowObject.iStatus:SCREEN-VALUE NO-ERROR. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &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. EMPTY TEMP-TABLE tArtst. CREATE tArtst. 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. EMPTY TEMP-TABLE tArtst. CREATE tArtst. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE deleteRecord vTableWin PROCEDURE deleteRecord : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE Ja AS LOGICAL NO-UNDO. DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. rHoReLager = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR. IF rHoReLager = ? OR rHoReLager = 0 THEN DO: RUN TOOLBAR IN hKontainer ( INPUT 'CANCEL':U ) NO-ERROR. RETURN NO-APPLY. END. FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. IF bHoReLager.Artnr > 0 THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1112, '') NO-ERROR. RETURN NO-APPLY. END. 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: Super Override */ /* 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}: END. PUBLISH 'LAGERMUTATION' ( 'ENDE' ). 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: Super Override */ /* 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}: CB_Status:SCREEN-VALUE = rowObject.iStatus:SCREEN-VALUE NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableFields vTableWin PROCEDURE enableFields : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* 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 ). IF cReadOnlyFelder <> '' THEN RUN READONLY_FELDER ( Fenster, cReadOnlyFelder, TRUE ). END. DO WITH FRAME {&FRAME-NAME}: END. PUBLISH 'LAGERMUTATION' ( 'START' ). 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: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ /* Code placed here will execute PRIOR to standard behavior. */ 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: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ { incl/viwentryfeldtest.i } DO WITH FRAME {&FRAME-NAME}: CASE FeldName: WHEN 'Inhalt' THEN DO: IF INTEGER(rowObject.Artnr:SCREEN-VALUE) = 0 THEN APPLY 'TAB' TO SELF. END. WHEN 'Jahr' THEN DO: IF INTEGER(rowObject.Artnr:SCREEN-VALUE) = 0 THEN APPLY 'TAB' TO SELF. END. END CASE. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FEHLWERTE vTableWin PROCEDURE FEHLWERTE : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT-OUTPUT PARAMETER pcColValues AS CHARACTER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE iArt AS INTEGER NO-UNDO. IF FCancel THEN RETURN. iArt = DYNAMIC-FUNCTION('getLagerart':U IN hKontainer) NO-ERROR. iLager = DYNAMIC-FUNCTION('getLager':U IN hKontainer) NO-ERROR. IF iArt = ? THEN iArt = 0. IF iLager = ? THEN iLager = 0. IF NOT FCopy THEN DO WITH FRAME {&FRAME-NAME}: i1 = LOOKUP('Firma', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = Firma NO-ERROR. i1 = LOOKUP('Art', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = STRING(iArt) NO-ERROR. i1 = LOOKUP('Lager', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = STRING(iLager) NO-ERROR. i1 = LOOKUP('HoReLager_Id', oldColList, ',') + 1. ENTRY(i1, pcColValues, CHR(1)) = STRING(0) NO-ERROR. END. IF FCopy THEN DO: END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDERECHNUNG vTableWin PROCEDURE GEBINDERECHNUNG : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipcMinMax AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipcGebArt AS CHARACTER NO-UNDO. DEFINE VARIABLE iGGeb AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE iVGeb AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE iKGeb AS INTEGER INIT 0 NO-UNDO. DEFINE VARIABLE iInhalt AS INTEGER INIT 0 NO-UNDO. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN RETURN. IF tArtst.Artnr = 0 THEN RETURN. DO WITH FRAME {&FRAME-NAME}: CASE ipcMinMax: WHEN 'Min' THEN DO: CASE ipcGebArt: WHEN 'GGeb' THEN iGGeb = INTEGER(rowObject.MinMenge_GGeb:SCREEN-VALUE). WHEN 'VGeb' THEN iVGeb = INTEGER(rowObject.MinMenge_VGeb:SCREEN-VALUE). WHEN 'KGeb' THEN iKGeb = INTEGER(rowObject.MinMenge_KGeb:SCREEN-VALUE). END CASE. END. WHEN 'Max' THEN DO: CASE ipcGebArt: WHEN 'GGeb' THEN iGGeb = INTEGER(rowObject.MaxMenge_GGeb:SCREEN-VALUE). WHEN 'VGeb' THEN iVGeb = INTEGER(rowObject.MaxMenge_VGeb:SCREEN-VALUE). WHEN 'KGeb' THEN iKGeb = INTEGER(rowObject.MaxMenge_KGeb:SCREEN-VALUE). END CASE. END. END CASE. END. DO WHILE TRUE WITH FRAME {&FRAME-NAME}: CASE ipcGebArt: WHEN 'GGeb' THEN DO: iInhalt = DYNAMIC-FUNCTION('getGGebindeInhalt':U, tArtst.GGeb_Cd ) NO-ERROR. iVGeb = iGGeb * iInhalt. iInhalt = DYNAMIC-FUNCTION('getVGebindeInhalt':U, tArtst.VGeb_Cd ) NO-ERROR. iKGeb = iVGeb * iInhalt. CASE ipcMinMax: WHEN 'Min' THEN DO: rowObject.MinMenge_VGeb:SCREEN-VALUE = STRING(iVGeb). rowObject.MinMenge_KGeb:SCREEN-VALUE = STRING(iKGeb). END. WHEN 'Max' THEN DO: rowObject.MaxMenge_VGeb:SCREEN-VALUE = STRING(iVGeb). rowObject.MaxMenge_KGeb:SCREEN-VALUE = STRING(iKGeb). END. END CASE. END. WHEN 'VGeb' THEN DO: iInhalt = DYNAMIC-FUNCTION('getVGebindeInhalt':U, tArtst.VGeb_Cd ) NO-ERROR. iKGeb = iVGeb * iInhalt. CASE ipcMinMax: WHEN 'Min' THEN DO: rowObject.MinMenge_KGeb:SCREEN-VALUE = STRING(iKGeb). END. WHEN 'Max' THEN DO: rowObject.MaxMenge_KGeb:SCREEN-VALUE = STRING(iKGeb). END. END CASE. END. END CASE. LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LEAVE_FELD_TEST vTableWin PROCEDURE LEAVE_FELD_TEST : /*------------------------------------------------------------------------------*/ /* Purpose: Super Override */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ { incl/viwleavefeldtest.i } DEFINE BUFFER bArtst FOR Artst. DO WHILE FNeu WITH FRAME {&FRAME-NAME}: CASE FeldName: END CASE. LEAVE. END. DO WHILE TRUE WITH FRAME {&FRAME-NAME}: CASE FeldName: WHEN 'Regal' THEN SELF:SCREEN-VALUE = CAPS(SELF:SCREEN-VALUE). WHEN 'Niveau' THEN SELF:SCREEN-VALUE = CAPS(SELF:SCREEN-VALUE). WHEN 'Platz' THEN SELF:SCREEN-VALUE = CAPS(SELF:SCREEN-VALUE). WHEN 'Sf' THEN SELF:SCREEN-VALUE = CAPS(SELF:SCREEN-VALUE). WHEN 'Artnr' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. IF INTEGER(SELF:SCREEN-VALUE) = 0 THEN DO: ASSIGN rowObject.Artnr :SCREEN-VALUE = '' rowObject.Inhalt :SCREEN-VALUE = '' rowObject.Jahr :SCREEN-VALUE = '' rowObject.Bestand :SCREEN-VALUE = '0' rowObject.Eingang :SCREEN-VALUE = '?' rowObject.Verfall :SCREEN-VALUE = '?' rowObject.Lotnummer:SCREEN-VALUE = '' rowObject.iStatus :SCREEN-VALUE = STRING(0,'9') CB_Status :SCREEN-VALUE = '0'. END. ELSE DO: FIND FIRST bArtst NO-LOCK WHERE bArtst.Firma = Firma AND bArtst.Artnr = INTEGER(SELF:SCREEN-VALUE) AND bArtst.Aktiv = TRUE AND bArtst.Ausverk < 9 NO-ERROR. IF NOT AVAILABLE bArtst THEN DO: RUN FEHLER ( 213 ) NO-ERROR. RETURN 'ERROR'. END. ASSIGN rowObject.Artnr :SCREEN-VALUE = STRING(bArtst.Artnr) rowObject.Inhalt:SCREEN-VALUE = STRING(bArtst.Inhalt) rowObject.Jahr :SCREEN-VALUE = STRING(bArtst.Jahr). RELEASE bArtst. DYNAMIC-FUNCTION('getArtikel':U IN THIS-PROCEDURE) NO-ERROR. END. END. WHEN 'Inhalt' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. IF INTEGER(rowObject.Artnr:SCREEN-VALUE) = 0 THEN LEAVE. FIND FIRST bArtst NO-LOCK WHERE bArtst.Firma = Firma AND bArtst.Artnr = INTEGER(rowObject.Artnr:SCREEN-VALUE) AND bArtst.Inhalt = INTEGER(SELF:SCREEN-VALUE) AND bArtst.Aktiv = TRUE AND bArtst.Ausverk < 9 NO-ERROR. IF NOT AVAILABLE bArtst THEN DO: RUN FEHLER ( 213 ) NO-ERROR. RETURN 'ERROR'. END. ASSIGN rowObject.Artnr :SCREEN-VALUE = STRING(bArtst.Artnr) rowObject.Inhalt:SCREEN-VALUE = STRING(bArtst.Inhalt) rowObject.Jahr :SCREEN-VALUE = STRING(bArtst.Jahr). RELEASE bArtst. DYNAMIC-FUNCTION('getArtikel':U IN THIS-PROCEDURE) NO-ERROR. END. WHEN 'Jahr' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. IF INTEGER(rowObject.Artnr:SCREEN-VALUE) = 0 THEN LEAVE. FIND FIRST bArtst NO-LOCK WHERE bArtst.Firma = Firma AND bArtst.Artnr = INTEGER(rowObject.Artnr :SCREEN-VALUE) AND bArtst.Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE) AND bArtst.Jahr = INTEGER(SELF:SCREEN-VALUE) AND bArtst.Aktiv = TRUE AND bArtst.Ausverk < 9 NO-ERROR. IF NOT AVAILABLE bArtst THEN DO: RUN FEHLER ( 213 ) NO-ERROR. RETURN 'ERROR'. END. ASSIGN rowObject.Artnr :SCREEN-VALUE = STRING(bArtst.Artnr) rowObject.Inhalt:SCREEN-VALUE = STRING(bArtst.Inhalt) rowObject.Jahr :SCREEN-VALUE = STRING(bArtst.Jahr). RELEASE bArtst. DYNAMIC-FUNCTION('getArtikel':U IN THIS-PROCEDURE) NO-ERROR. END. WHEN 'MinMenge_GGeb' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN LEAVE. IF tArtst.Artnr = 0 THEN LEAVE. RUN GEBINDERECHNUNG ( 'Min', 'GGeb' ) NO-ERROR. END. WHEN 'MaxMenge_GGeb' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN LEAVE. IF tArtst.Artnr = 0 THEN LEAVE. RUN GEBINDERECHNUNG ( 'Max', 'GGeb' ) NO-ERROR. END. WHEN 'MinMenge_VGeb' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN LEAVE. IF tArtst.Artnr = 0 THEN LEAVE. RUN GEBINDERECHNUNG ( 'Min', 'VGeb' ) NO-ERROR. END. WHEN 'MaxMenge_VGeb' THEN DO: IF NOT SELF:MODIFIED THEN LEAVE. FIND FIRST tArtst NO-ERROR. IF NOT AVAILABLE tArtst THEN LEAVE. IF tArtst.Artnr = 0 THEN LEAVE. RUN GEBINDERECHNUNG ( 'Max', 'VGeb' ) NO-ERROR. END. 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 SUCHEN vTableWin PROCEDURE SUCHEN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iRecid AS RECID NO-UNDO. DEFINE BUFFER bArtst FOR Artst. IF NOT FMut THEN RETURN NO-APPLY. RUN g-suchen-artikel.w ( '', OUTPUT iRecid) NO-ERROR. IF iRecid = ? OR iRecid = 0 THEN RETURN NO-APPLY. FIND bArtst NO-LOCK WHERE RECID(bArtst) = iRecid NO-ERROR. DO WITH FRAME {&FRAME-NAME}: rowObject.Artnr :SCREEN-VALUE = STRING(bArtst.Artnr ). rowObject.Inhalt:SCREEN-VALUE = STRING(bArtst.Inhalt). rowObject.Jahr :SCREEN-VALUE = STRING(bArtst.Jahr ). END. RELEASE bArtst. DYNAMIC-FUNCTION('getArtikel':U IN THIS-PROCEDURE) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SUCHEN_NUMMER vTableWin PROCEDURE SUCHEN_NUMMER : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iRecid AS RECID NO-UNDO. DEFINE VARIABLE cRowId AS CHARACTER NO-UNDO. DEFINE BUFFER bArtst FOR Artst. IF NOT FMut THEN RETURN NO-APPLY. RUN g-artikelnr.w (OUTPUT iRecid) NO-ERROR. IF iRecid = ? THEN RETURN NO-APPLY. IF iRecid = 0 THEN RETURN NO-APPLY. FIND bArtst NO-LOCK WHERE RECID(bArtst) = iRecid. DO WITH FRAME {&FRAME-NAME}: rowObject.Artnr :SCREEN-VALUE = STRING(bArtst.Artnr ). rowObject.Inhalt:SCREEN-VALUE = STRING(bArtst.Inhalt). rowObject.Jahr :SCREEN-VALUE = STRING(bArtst.Jahr ). END. RELEASE bArtst. DYNAMIC-FUNCTION('getArtikel':U) NO-ERROR. 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 iNummer AS INTEGER NO-UNDO. DEFINE VARIABLE cRegal AS CHARACTER NO-UNDO. DEFINE VARIABLE cNiveau AS CHARACTER NO-UNDO. DEFINE VARIABLE cPlatz AS CHARACTER NO-UNDO. DEFINE VARIABLE cSf AS CHARACTER NO-UNDO. DEFINE VARIABLE iLager AS INTEGER NO-UNDO. DEFINE VARIABLE iArt AS INTEGER NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. iArt = DYNAMIC-FUNCTION('getLagerart':U IN hKontainer) NO-ERROR. iLager = DYNAMIC-FUNCTION('getLager':U IN hKontainer) NO-ERROR. IF iArt = ? THEN iArt = 0. IF iLager = ? THEN iLager = 0. opJa = FALSE. eHandle = ?. IF NOT FMut THEN RETURN. AAA000: DO WHILE TRUE WITH FRAME {&FRAME-NAME}: cRegal = CAPS(rowObject.Regal :SCREEN-VALUE). cPlatz = CAPS(rowObject.Platz :SCREEN-VALUE). cNiveau = CAPS(rowObject.Niveau:SCREEN-VALUE). cSf = CAPS(rowObject.Sf :SCREEN-VALUE). IF fNeu THEN DO: 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. ASSIGN rowObject.Regal :SCREEN-VALUE = cRegal rowObject.Platz :SCREEN-VALUE = cPlatz rowObject.Niveau:SCREEN-VALUE = cNiveau rowObject.Sf :SCREEN-VALUE = cSf. IF CAN-FIND(FIRST bHoReLager NO-LOCK WHERE bHoReLager.Firma = Firma AND bHoReLager.Art = iArt AND bHoReLager.Regal = cRegal AND bHoReLager.Niveau = cNiveau AND bHoReLager.Platz = cPlatz AND bHoReLager.Sf = cSf AND bHoReLager.Lager = iLager ) THEN DO: RUN FEHLER ( 1099 ). eHandle = rowObject.Regal:HANDLE. LEAVE. END. END. rowObject.cSort:SCREEN-VALUE = SUBSTITUTE('&1-&2-&3', cRegal, cPlatz, cNiveau). IF cSf <> '' THEN rowObject.cSort:SCREEN-VALUE = rowObject.cSort:SCREEN-VALUE + '-' + cSf. rowObject.cSort:SCREEN-VALUE = CAPS(rowObject.cSort:SCREEN-VALUE). rowObject.cSort:MODIFIED = TRUE. FIND FIRST tArtst NO-ERROR. ASSIGN tArtst.Artnr = INTEGER(rowObject.Artnr :SCREEN-VALUE) tArtst.Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE) tArtst.Jahr = INTEGER(rowObject.Jahr :SCREEN-VALUE) NO-ERROR. IF tArtst.Artnr > 0 AND iArt = 1 THEN DO: FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = iLager AND HoReLager.Artnr = tArtst.Artnr AND HoReLager.Inhalt = tArtst.Inhalt AND HoReLager.cSort <> rowObject.cSort:SCREEN-VALUE NO-ERROR. IF AVAILABLE HoReLager THEN DO: DYNAMIC-FUNCTION ('fehlerMeldung':U, 1120, HoReLager.cSort) NO-ERROR. eHandle = rowObject.Artnr:HANDLE. LEAVE. END. END. IF tArtst.Artnr = 0 THEN DO: ASSIGN rowObject.Inhalt :SCREEN-VALUE = STRING(0) rowObject.Jahr :SCREEN-VALUE = STRING(0) rowObject.Artikel:SCREEN-VALUE = '' GGebinde:SCREEN-VALUE = '' VGebinde:SCREEN-VALUE = '' KGebinde:SCREEN-VALUE = '' rowObject.Eingang :SCREEN-VALUE = ? rowObject.Verfall :SCREEN-VALUE = ? rowObject.Lotnummer :SCREEN-VALUE = '' rowObject.Bestand :SCREEN-VALUE = STRING(0) rowObject.MinMenge_GGeb :SCREEN-VALUE = STRING(0) rowObject.MinMenge_VGeb :SCREEN-VALUE = STRING(0) rowObject.MinMenge_KGeb :SCREEN-VALUE = STRING(0) rowObject.MaxMenge_GGeb :SCREEN-VALUE = STRING(0) rowObject.MaxMenge_VGeb :SCREEN-VALUE = STRING(0) rowObject.MaxMenge_KGeb :SCREEN-VALUE = STRING(0). IF INTEGER(rowObject.iStatus:SCREEN-VALUE) <> 9 THEN DO: ASSIGN rowObject.iStatus :SCREEN-VALUE = STRING(0) CB_Status :SCREEN-VALUE = rowObject.iStatus:SCREEN-VALUE. END. LEAVE. END. IF INTEGER(rowObject.iStatus:SCREEN-VALUE) = 9 OR INTEGER(rowObject.iStatus:SCREEN-VALUE) = 0 THEN DO: RUN FEHLER ( 1101 ) NO-ERROR. eHandle = CB_Status:HANDLE. LEAVE. END. IF INTEGER(rowObject.iStatus:SCREEN-VALUE) = 1 THEN DO: ASSIGN rowObject.Eingang :SCREEN-VALUE = ? rowObject.Verfall :SCREEN-VALUE = ? rowObject.Lotnummer :SCREEN-VALUE = '' rowObject.Bestand :SCREEN-VALUE = STRING(0). END. IF INTEGER(rowObject.iStatus:SCREEN-VALUE) = 2 THEN DO: IF rowObject.Eingang:SCREEN-VALUE = ? THEN rowObject.Eingang:SCREEN-VALUE = STRING(TODAY). IF rowObject.Verfall:SCREEN-VALUE = ? THEN rowObject.Verfall:SCREEN-VALUE = rowObject.Eingang:SCREEN-VALUE. END. rowObject.cSort:SCREEN-VALUE = rowObject.Regal:SCREEN-VALUE. IF rowObject.Platz:SCREEN-VALUE <> '' THEN rowObject.cSort:SCREEN-VALUE = rowObject.cSort :SCREEN-VALUE + '-' + rowObject.Platz :SCREEN-VALUE. IF rowObject.Niveau :SCREEN-VALUE <> '' THEN rowObject.cSort:SCREEN-VALUE = rowObject.cSort:SCREEN-VALUE + '-' + rowObject.Niveau:SCREEN-VALUE. IF rowObject.Sf :SCREEN-VALUE <> '' THEN rowObject.cSort:SCREEN-VALUE = rowObject.cSort :SCREEN-VALUE + '-' + rowObject.Sf :SCREEN-VALUE. 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. DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE BUFFER bHoReLager FOR HoReLager. rHoReLager = DYNAMIC-FUNCTION ('getCurrentRecid':U IN hDaten) NO-ERROR. FIND bHoReLager NO-LOCK WHERE RECID(bHoReLager) = rHoReLager. IF bHoReLager.Bestand > 0 THEN cReadOnlyFelder = 'Artnr,Inhalt,Jahr'. ELSE cReadOnlyFelder = ''. 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 WITH FRAME {&FRAME-NAME}: FMut = TRUE. EMPTY TEMP-TABLE tArtst. CREATE tArtst. IF INTEGER(rowObject.Artnr:SCREEN-VALUE) > 0 THEN DYNAMIC-FUNCTION('getArtikel':U) NO-ERROR. END. WHEN 'updateEnd' THEN DO: FNeu = FALSE. FMut = FALSE. FCopy = FALSE. IF INTEGER(rowObject.Artnr:SCREEN-VALUE) > 0 THEN DO: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND ArtLager WHERE ArtLager.Firma = Firma AND ArtLager.Artnr = INTEGER(rowObject.Artnr :SCREEN-VALUE) AND ArtLager.Inhalt = INTEGER(rowObject.Inhalt:SCREEN-VALUE) AND ArtLager.Jahr = INTEGER(rowObject.Jahr :SCREEN-VALUE) AND ArtLager.Lager = iLager NO-ERROR. IF AVAILABLE ArtLager THEN ArtLager.Ort = rowObject.cSort:SCREEN-VALUE. RELEASE ArtLager. LEAVE. END. END. 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). /* rowObject.HoReLager_Id:SCREEN-VALUE = STRING(NEXT-VALUE(HoReLager_Id)).*/ END. rowObject.iStatus:SCREEN-VALUE = CB_Status:SCREEN-VALUE. END. FNeu = FALSE. FCopy = FALSE. RUN SUPER. RUN REFRESHLAGER IN hDaten. APPLY 'U1'. /* Code placed here will execute AFTER standard behavior. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getArtikel vTableWin FUNCTION getArtikel RETURNS LOGICAL ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iArtnr AS INTEGER NO-UNDO. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO. DEFINE VARIABLE iStatus AS INTEGER NO-UNDO. DEFINE BUFFER bArtst FOR Artst. DEFINE BUFFER bArtbez FOR Artbez. DO WITH FRAME {&FRAME-NAME}: ASSIGN iArtnr = INTEGER(rowObject.Artnr :SCREEN-VALUE) iInhalt = INTEGER(rowObject.Inhalt :SCREEN-VALUE) iJahr = INTEGER(rowObject.Jahr :SCREEN-VALUE) iStatus = INTEGER(rowObject.iStatus:SCREEN-VALUE) NO-ERROR. END. DO WHILE TRUE: IF iArtnr = 0 THEN DO: EMPTY TEMP-TABLE tArtst. CREATE tArtst. LEAVE. END. FIND FIRST bArtst NO-LOCK WHERE bArtst.Firma = Firma AND bArtst.Artnr = iArtnr AND bArtst.Inhalt = iInhalt AND bArtst.Jahr = iJahr NO-ERROR. IF NOT AVAILABLE bArtst THEN DO: FIND LAST bArtst NO-LOCK WHERE bArtst.Firma = Firma AND bArtst.Artnr = iArtnr AND bArtst.Inhalt = iInhalt NO-ERROR. END. IF NOT AVAILABLE bArtst THEN DO: iArtnr = 0. NEXT. END. FIND FIRST bArtbez OF bArtst. FIND FIRST tArtst. BUFFER-COPY bArtst TO tArtst ASSIGN tArtst.Bez = TRIM(bArtbez.Bez1 + ' ' + bArtbez.Bez2). RELEASE bArtst. RELEASE bArtbez. LEAVE. END. DO WITH FRAME {&FRAME-NAME}: rowObject.Artnr :SCREEN-VALUE = STRING(tArtst.Artnr ). rowObject.Inhalt:SCREEN-VALUE = STRING(tArtst.Inhalt). rowObject.Jahr :SCREEN-VALUE = STRING(tArtst.Jahr ). rowObject.Artikel:SCREEN-VALUE = tArtst.Bez. IF tArtst.Artnr > 0 THEN DO: GGebinde:SCREEN-VALUE = DYNAMIC-FUNCTION('getGGebindeKBez':U, tArtst.GGeb_Cd ) NO-ERROR. VGebinde:SCREEN-VALUE = DYNAMIC-FUNCTION('getVGebindeKBez':U, tArtst.VGeb_Cd ) NO-ERROR. KGebinde:SCREEN-VALUE = DYNAMIC-FUNCTION('getKGebindeKBez':U, tArtst.KGeb_Cd ) NO-ERROR. rowObject.Eingang :SCREEN-VALUE = (IF iStatus = 1 THEN '?' ELSE STRING(TODAY) ). rowObject.Verfall :SCREEN-VALUE = (IF tArtst.lVerfall THEN ? ELSE rowObject.Eingang:SCREEN-VALUE). /* rowObject.Lotnummer:SCREEN-VALUE = ''. */ /* rowObject.Bestand :SCREEN-VALUE = STRING(0).*/ rowObject.iStatus :SCREEN-VALUE = STRING(iStatus). CB_Status :SCREEN-VALUE = rowObject.iStatus:SCREEN-VALUE. END. ELSE DO: GGebinde:SCREEN-VALUE = ''. VGebinde:SCREEN-VALUE = ''. KGebinde:SCREEN-VALUE = ''. rowObject.Eingang :SCREEN-VALUE = ?. rowObject.Verfall :SCREEN-VALUE = ?. rowObject.Lotnummer:SCREEN-VALUE = ''. rowObject.Bestand :SCREEN-VALUE = STRING(0). rowObject.iStatus :SCREEN-VALUE = (IF iStatus <> 9 THEN STRING(0) ELSE STRING(iStatus)). CB_Status :SCREEN-VALUE = rowObject.iStatus:SCREEN-VALUE. END. END. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME