/*------------------------------------------------------------------------------
Purpose: Création de la table temporaire dynamique
Parameters: <none>
Notes:
------------------------------------------------------------------------------*/
DEFINE VARIABLE cmpt AS INTEGER NO-UNDO.
DEFINE VARIABLE avance AS INTEGER NO-UNDO.
DEFINE VARIABLE ordout AS INTEGER NO-UNDO.
DEFINE VARIABLE myBrowse AS HANDLE NO-UNDO.
DEFINE VARIABLE myColumn AS HANDLE NO-UNDO.
DEFINE VARIABLE myUpdate AS HANDLE NO-UNDO.
DEFINE VARIABLE myField AS HANDLE NO-UNDO.
DEFINE VARIABLE lstLabel AS CHARACTER NO-UNDO.
DEFINE BUFFER BUFBES FOR TTBES .
/*setup de la liste des labels pour les types de valeurs */
lstLabel = "PIC" + ",":U + "Commande":U + ",":U + "Stck Date":U + ",":U + "Couverture" + ",":U + "Stock"
+ ",":U + "Prod" .
/* creation de la table temporaire */
CREATE TEMP-TABLE TTFIN.
TTFIN:ADD-NEW-FIELD("indnumenr":U,"INTEGER":U) .
TTFIN:ADD-NEW-FIELD("proref":U,"CHARACTER":U) .
TTFIN:ADD-NEW-FIELD("va1ref":U,"CHARACTER":U).
TTFIN:ADD-NEW-FIELD("ordout":U,"INTEGER":U).
TTFIN:ADD-NEW-FIELD("labelout":U,"CHARACTER":U).
TTFIN:ADD-NEW-FIELD("nbjcouv":U,"INTEGER":U).
TTFIN:ADD-NEW-FIELD("nbjouvr":U,"INTEGER":U).
TTFIN:ADD-NEW-FIELD("stockini":U,"DECIMAL":U).
TTFIN:ADD-NEW-FIELD("output":U,"DECIMAL":U,profondeur) . /* profondeur = valeur de l'extent pour le champs */
TTFIN:ADD-NEW-INDEX("I01":U,TRUE,TRUE). /* Setup de l'index primaire de la table */
/* Ajout des champs dans l'ordre souhaité de l'index */
TTFIN:ADD-INDEX-FIELD("I01":U,"proref":U).
TTFIN:ADD-INDEX-FIELD("I01":U,"va1ref":U).
TTFIN:ADD-INDEX-FIELD("I01":U,"ordout":U).
TTFIN:ADD-NEW-INDEX("I02":U).
TTFIN:ADD-INDEX-FIELD("I02":U,"indnumenr":U).
TTFIN:TEMP-TABLE-PREPARE("fin":U) . /* Attribution du nom de la table temporaire */
/* Récupération des buffers handle pour manipulation */
ASSIGN
BUFFIN = TTFIN:DEFAULT-BUFFER-HANDLE
BUFPIC = TTFIN:DEFAULT-BUFFER-HANDLE .
/* Création de la requête pour la mise à jour du champs output */
CREATE QUERY myUpdate .
myUpdate:SET-BUFFERS(BUFPIC) . /* Attribution du buffer de table employé */
FOR EACH TTREF NO-LOCK :
/* visualisation de l'avancement dans le process */
avance = avance + 1.
PROCESS EVENTS.
IF avance MODULO 10 = 0 THEN
myInfo:SCREEN-VALUE = STRING(avance) + " / " + STRING(nbproduit) .
/* Début de la transaction */
DO TRANSACTION :
DO cmpt = 1 TO NUM-ENTRIES(lstLabel) : /* Création des lignes de table en fonction des différentes données à afficher par ref */
BUFPIC:BUFFER-CREATE() .
ASSIGN
BUFPIC:BUFFER-FIELD("indnumenr":U):BUFFER-VALUE = TTREF.indnumenr
BUFPIC:BUFFER-FIELD("proref":U):BUFFER-VALUE = TTREF.proref
BUFPIC:BUFFER-FIELD("va1ref":U):BUFFER-VALUE = TTREF.va1ref
BUFPIC:BUFFER-FIELD("nbjcouv":U):BUFFER-VALUE = TTREF.nbjcouv
BUFPIC:BUFFER-FIELD("nbjouvr":U):BUFFER-VALUE = TTREF.nbjouvr
BUFPIC:BUFFER-FIELD("stockini":U):BUFFER-VALUE = TTREF.stock
BUFPIC:BUFFER-FIELD("ordout":U):BUFFER-VALUE = cmpt
BUFPIC:BUFFER-FIELD("labelout":U):BUFFER-VALUE = ENTRY(cmpt,lstLabel) .
END.
ASSIGN cmpt = 0 .
FOR EACH TTBES WHERE TTBES.indnumenr = TTREF.indnumenr NO-LOCK: /* parcours des besoins */
cmpt = cmpt + 1.
/* préparation de la requête */
myUpdate:QUERY-PREPARE("FOR EACH fin WHERE fin.indnumenr = ":U + STRING(TTBES.indnumenr) + " NO-LOCK":U) .
myUpdate:QUERY-OPEN. /* Ouverture de la requête */
REPEAT:
myUpdate:GET-NEXT. /* Récupérer le premier enregistrement */
IF myUpdate:QUERY-OFF-END THEN LEAVE. /* Si plus de data on quitte la boucle repeat */
myUpdate:GET-CURRENT(EXCLUSIVE-LOCK) .
ordout = BUFPIC:BUFFER-FIELD("ordout":U):BUFFER-VALUE . /* Récupération de ordout car ne passe pas dans l'instruction Case */
CASE ordout :
WHEN 1 THEN DO: /* Besoin issue du PIC */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.besoinPic .
END.
WHEN 2 THEN DO: /* Besoin issue des CDE */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.besoinCde .
END.
WHEN 3 THEN DO: /* Besoin issue du stock a date */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.besoinSad .
END.
WHEN 4 THEN DO: /* Couverture */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.couverture .
END.
WHEN 5 THEN DO: /* Stock */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.Stock .
END.
WHEN 6 THEN DO: /* Prod */
BUFPIC:BUFFER-FIELD("output":U):BUFFER-VALUE(cmpt) = TTBES.prod .
END.
END CASE.
END.
myUpdate:QUERY-CLOSE . /* Fermeture de la requête */
END.
END.
END.
CREATE QUERY dispQuery . /* Création de la requête d'affichage dans le BROWSE */
dispQuery:SET-BUFFERS(BUFFIN). /* Attribution du/des buffer/s exploités par la requête */
dispQuery:QUERY-PREPARE("FOR EACH fin NO-LOCK":U) . /* Inscription de la requête */
ASSIGN
myBrowse = BROWSE-8:HANDLE IN FRAME F-Main /* récupération du handle de browse */
myBrowse:QUERY = dispQuery /* Ajout de la requête au browse */
myBrowse:READ-ONLY = FALSE
/* création des colonnes */
myColumn = myBRowse:ADD-LIKE-COLUMN("fin.labelout":U)
myColumn:LABEL = "Type"
/* myColumn:FORMAT = "X(12)":U */
myColumn:WIDTH-PIXELS = func-widthcolumn(myColumn) + 100
myColumn = myBRowse:ADD-LIKE-COLUMN("fin.proref":U)
myColumn:LABEL = "Référence"
myColumn:WIDTH-PIXELS = func-widthcolumn(myColumn)
myColumn = myBRowse:ADD-LIKE-COLUMN("fin.va1ref":U)
myColumn:LABEL = "Variante"
myColumn:WIDTH-PIXELS = func-widthcolumn(myColumn)
myField = BUFFIN:BUFFER-FIELD("output"):HANDLE
myColumn = myBRowse:ADD-LIKE-COLUMN(myField)
myColumn:READ-ONLY = FALSE
cmpt = 4
myBrowse:NUM-LOCKED-COLUMN = 3 .
FOR EACH TTWEEK NO-LOCK: /* mise à jour des labels de colonne pour l'extent*/
ASSIGN
myColumn = myBrowse:GET-BROWSE-COLUMN(cmpt)
myColumn:NAME = "COL" + STRING(cmpt - 3) /* attribution d'un code unique non visible */
myColumn:LABEL = STRING(TTWEEK.weekann) + " - ":U + STRING(TTWEEK.weeknum)
myColumn:WIDTH-PIXELS = func-widthcolumn(myColumn)
myColumn:READ-ONLY = FALSE .
cmpt = cmpt + 1.
END.
cmpt = 1 .
myColumn = myBrowse:GET-BROWSE-COLUMN(cmpt).
DO WHILE VALID-HANDLE(myColumn) :
CREATE TTCOL.
ASSIGN
TTCOL.mycol = myColumn:HANDLE
cmpt = cmpt + 1
myColumn = myBrowse:GET-BROWSE-COLUMN(cmpt) NO-ERROR .
END.
dispQuery:QUERY-OPEN .