SBBWST : Distinction des exemplaires de poste de charge

Ce point d'entrée sert à mettre en œuvre une distinction des exemplaires de poste de charge principal dans l’ordonnancement (notion de sous-postes).

Pour ce faire, on intervient :

-        à l’extraction des données poste (Eclatement des postes concernés en autant d’exemplaires que nécessaire)

-        à l’extraction des opérations (Affectation de l’opération au bon exemplaire de poste suivant un critère paramétrable)

-        à la mise à jour en sortie d'ordonnancement (mise à jour du critère) - voir traitement OPTLIBA.

Exemple :

Pour une distinction basée sur l’outillage, le poste P1 serait décomposé comme suit :

P1           - 00

P1           - 01 Outil1

P1           - 02 Outil2

On dispose toujours d’un exemplaire 00 pour les opérations non affectée suivant le critère.          

Contexte et mode de fonctionnement

Transaction

Il n’y a pas de  transaction en cours.

Fichier trace

Il peut y avoir un fichier trace ouvert (suivant paramètre de lancement de l’ordonnancement).

Différents cas d’appel

Le point d’entrée est appelé deux fois, chaque appel est identifiable par la variable globale GSBBWST :

GSBBWST  = « LOADWST »                       

Extraction des postes de charge, le point d’entrée doit renseigner la liste des critères de rupture du poste.

Pour ce faire, le tableau XSBBT(15)(100) doit être alimenté en prenant soin de laisser le premier indice (0) à blanc. La variable NBSBB doit contenir le nombre de lignes renseignées. La variable globale GPE doit être positionnée à 1 pour signifier que le poste est sujet à distinction.

Exemple :

XSBBT(0) = ""

XSBBT(1) = "OUTIL1"

XSBBT(2) = "OUTIL2"

NBSBB    = 3

GPE = 1

 

GSBBWST  = « LOADOPE »                        

Extraction des opérations, le point d’entrée doit fournir le critère de distinction sous la forme d’un champ de la table MFGOPE, pour cela il faut renseigner la variable alphanumérique XSCHSBB (longueur 15).

Le tableau XSBBT doit être chargé à nouveau si nécessaire.

Exemple :

XSCHSBB = "EQUNUM"     # Champ standard outillage

If [F:MWS]WST <> XWST

XSBBT(0) = ""

XSBBT(1) = "OUTIL1"

XSBBT(2) = "OUTIL2"

NBSBB    = 3

Endif

GPE = 1

 

Important :                  

Comme il peut être nécessaire de parcourir la table MFGOPE pour retrouver les critères utilisés, une classe [F :MFO2] a été spécialement ouverte à cet usage (la classe [F :MFO] est en ligne et ne doit pas être modifiée

 

 

Variables et masques disponibles

Lors du premier appel (GSBBWST = « LOADWST »), la classe [F :MWS] est en ligne.

Lors du second appel (GSBBWST = « LOADOPE »), les classes [F :MWS] et [F :MFO] sont en ligne.

Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte.

Table

Contenu significatif

Intitulé Table

MFGHEAD

Non

Entête OF

MFGITM

Non

Articles lancés

MFGMAT

Non

Matières

MFGOPE

Non

Opérations (MFO + MFO2)

SCHEDULING

Non

Données de jalonnement

WORKSTATIO

Non

Postes de charge

TABWEEDIA

Non

Schémas hebdomadaires

ITMMASTER

Non

Article

ITMFACILIT

Non

Article/Site

 

OPE_FOCUS : Mise en évidence d’opérations au lancement de l’ordonnancement

 

Ce point d'entrée permet de mettre en œuvre la définition d’une liste d’opérations devant être mises en évidences à l’afichage initial du gantt.

Il permet également de remplacer le contenu de l’infobulle liée à l’opération.

Contexte et mode de fonctionnement

Transaction

Il n’y a pas de  transaction en cours.

Fichier trace

Il peut y avoir un fichier trace ouvert (suivant paramètre de lancement de l’ordonnancement).

Différents cas d’appel

Le point d’entrée est appelé à l’extraction de chaque opération.

Le masque [M :OPTK] est en ligne au moment de l’appel.

Les classes [F :MFG], [F :MFO] et [F :SCH] sont en ligne avec un contenu significatif.

La mise en évidence d’une opération est formulée par un appel au sous-programme WRITE_FOCUS du traitement OPTLIBB.          

Subprog WRITE_FOCUS(LFCY, LCOD, LOK, LMESS)

Avec:

Char     LFCY  : site de production

Char     LCOD  : code réponse  

"000" = action de type focus (valeur constante)

Integer  LOK   : Indicateur focus

0 = pas de focus (seulement substitution texte infobulle)

1 = focus actif

Char     LMESS : Message à afficher dans l'infobulle

L’identification de l’opération doit être renseignée dans le masque [M :OPW1] (MFGNUM, OPENUM, OPESPLNUM). 

Exemple d’implémentation

###########################################################################

$ACTION

Case ACTION

 When "OPE_FOCUS"      : Gosub OPE_FOCUS

Endcase

Return

$OPE_FOCUS

Local Integer IOK     : IOK = 0

Local Char    XMESS(250)  

Local Char    WCHAIN, WSPECHAR

 

# pour test, on marque les opérations comportant un outil comme étant à mettre én évidence

If [F:MFO]EQUNUM = "" : Return : Endif

# quand on écrit une chaine, toujours s'assurer qu'elle ne contient pas de virgule, point-virgule ...

WCHAIN     = [M:OPTK]ITMREF

WSPECHAR   = ","

Gosub REMOVE_CHAR From OPTLIB

[M:OPTK]ITMREF = WCHAIN

 

WCHAIN     = [M:OPTK]ITMREF

WSPECHAR   = ";"

Gosub REMOVE_CHAR From OPTLIB

[M:OPTK]ITMREF = WCHAIN

 

# quand on écrit une chaine, toujours s'assurer qu'elle ne contient pas de virgule, point-virgule ...

WCHAIN     = [M:OPTK]ITMDES1

WSPECHAR   = ","

Gosub REMOVE_CHAR From OPTLIB

[M:OPTK]ITMDES1 = WCHAIN

 

# quand on écrit une chaine, toujours s'assurer qu'elle ne contient pas de virgule, point-virgule ...

WCHAIN     = [M:OPTK]ITMDES1

WSPECHAR   = ";"

Gosub REMOVE_CHAR From OPTLIB

[M:OPTK]ITMDES1 = WCHAIN

 

 

XMESS = [F:MFO]MFGNUM+"/"+num$([F:MFO]OPENUM)-[M:OPTK]ITMREF-[M:OPTK]ITMDES1-"____(Focus positionné sur cette sur cette opération ...)    "

 

[M:OPW1]MFGNUM = [F:MFO]MFGNUM

[M:OPW1]OPENUM = [F:MFO]OPENUM

[M:OPW1]OPESPLNUM = [F:MFO]OPESPLNUM

 

Call WRITE_FOCUS([F:MFO]MFGFCY, "000", IOK, XMESS) From OPTLIBB

Return

 

 

 

 

 
Tables ouvertes

Dans le tableau ci-dessous, le flag contenu significatif signifie que le contenu est en phase avec le contexte.

Table

Contenu significatif

Intitulé Table

MFGHEAD

Oui

Entête OF

MFGOPE

Oui

Opérations

SCHEDULING

Oui

Données de jalonnement

INIT_JAL : Initialisation de l'ordonnancement

Ce point d’entrée permet d’intervenir sur l'ensemble des opérations chargées en mémoire avant l'extraction des opérations vers l'ordonnancement afin d'intervenir sur certaines valeurs.

Contexte et mode de fonctionnement

il s'agit ici d'intervenir sur la liste des opérations chargées en mémoire.

Les variables disponibles pour chaque opération sont:

Local Shortint WOPENUM (NBOPMX)           : # numéro oper
Local Shortint WOPESPLNUM (NBOPMX)        : # fract. oper
Local Char    WWST    (GLONWST) (NBOPMX)  : # poste
Local Char    WLAB    (GLONWST) (NBOPMX)  : # main d'oeuvre
Local Decimal WSETLABC(NBOPMX)            : # coeff réglage MO
Local Decimal WOPELABC(NBOPMX)            : # coeff oper MO
Local Integer WOPESTA (NBOPMX)            : # état opération
Local Date    WOPESTR (NBOPMX)            : # date début
Local Date    WOPEEND (NBOPMX)            : # date fin
Local Integer WWSTN   (NBOPMX)            : # nb de postes
Local Integer WLABN   (NBOPMX)            : # nb de personnes
Local Integer WPRPTIM (NBOPMX)            : # temps préparation
Local Decimal WSETTIM (NBOPMX)            : # temps réglage pour 1 ex
Local Decimal WOPETIM (NBOPMX)            : # temps opératoire pour 1 ex
Local Decimal WWAITIM (NBOPMX)            : # temps attente
Local Decimal WPSPTIM (NBOPMX)            : # temps post oper
Local Decimal WQTY (NBOPMX)               : # quantité restante
Local Date    WFRCSTRD (NBOPMX)           : # date début forcé
Local Decimal WFRCSTRH (NBOPMX)           : # Heure début forcé
Local Char    WFRCHOU(5)(NBOPMX)            # Heure forcée au format hh:mm          
Local Decimal WFRCSTRF(NBOPMX)            : # Fraction de jour début forcé
Local Integer WFRCFLG (NBOPMX)            : # Flag oper début forcé
Local Integer WWSTTYP (NBOPMX)            : # code sous-traitance
Local Decimal WSCOLTI (NBOPMX)            : # délai sous-traitance
Local Char    WWIPNUM (GLONVCR)(NBOPMX)   : # n° encours sous-traitance
Local Char    WSCOITMREF(GLONITM)(NBOPMX) : # article sous-traitance
Local Integer WSCDCOD (NBOPMX)            : # code jalonnement
Local Integer WNEXOPEN (NBOPMX)           : # no op suivante
Local Integer WNEXSPLN (NBOPMX)           : # fract. op suivante (créé dans PG)
Local Integer WOPERG (NBOPMX)             : # rang op
Local Integer WOPETRT (NBOPMX)            : # ope traitée en classement
Local Decimal WSCDPCT (NBOPMX)            : # % chev

 Utilisation

Exemple de code pour remplacer le délai d'achat articl d'un service de sous-traitance par le délai article/site:

$ACTION

Case ACTION

      When "INIT_JAL" : Gosub INIT_JAL

Endcase

Return

$INIT_JAL

For I = 0 To NBOP-1

   If WWSTTYP(I) = 3

       Read [ITF]ITF0=WSCOITMREF(I);WMFGFCY

       If !fstat : WSCOLTI(I)= [F:ITF]OFS : Endif

   Endif

Next I

Return