Process OPTLIB : Detailed Scheduling
SBBWST: Differentiating work center resources
This entry point is used to differentiate the various main work centers in the scheduling (as sub-work centers).
To do this, updates are required:
- When extracting the work center data (splitting the work centers into as many sub-work centers as necessary)
- When extracting operations (assigning the operation to the relevant work center according to a defined setup)
- When updating once the scheduling is complete (the criteria is updated). See the OPTLIBA process.
Example:
To differentiate work centers based on tooling, the P1 work center can be broken down as follows:
P1 - 00
P1 - 01 Tool1
P1 - 02 Tool2
Work center 00 is always available for the operations not defined according to this criteria.
Context and operating method
Transaction
There is no transaction in progress.
Log file
It is possible to have an open log file (according to the scheduling launch setup).
Different call cases
The entry point is called twice, each call is identifiable by the global variable GSBBWST :
GSBBWST = « LOADWST »
Extraction of the work centres, the entry point must enter the criteria list for work centre shortage.
To do this, the XSBBT(15)(100) table must be loaded by taking into account on leaving the first index (0) set to blank. The NBSBB variable must contain the number of entered lines. The GPE global variable must be set to 1 to signify that the work centre is subject to the distinction.
For instance :
XSBBT(0) = ""
XSBBT(1) = "OUTIL1"
XSBBT(2) = "OUTIL2"
NBSBB = 3
GPE = 1
GSBBWST = « LOADOPE »
Operation extraction, the entry point must supply the distinction criterion in the form of a field in the MFGOPE table, for which it is necessary to enter the alphanumerical variable XSCHSBB (length 15).
The XSBBT grid must be loaded again if necessary.
For instance :
XSCHSBB = "EQUNUM" # Standard tool field
If [F:MWS]WST <> XWST
XSBBT(0) = ""
XSBBT(1) = "OUTIL1"
XSBBT(2) = "OUTIL2"
NBSBB = 3
Endif
GPE = 1
Important:
As it is necessary to pass through the MFGOPE table to find the criteria used, a class [F :MFO2] has been specially opened for this use ([F :MFO] class) is on line and must not be modified.
Available variables and masks
During the first call (GSBBWST = « LOADWST »), the [F :MWS] class is online.
During the second call (GSBBWST = « LOADOPE »), the [F :MWS] and [F :MFO] and classes are on line.
Open tables
In the table below, the significant content flag indicates that the content is in phase with the context.
Table |
Significant content |
Table Title |
MFGHEAD |
No |
WO header |
MFGITM |
No |
Released products |
MFGMAT |
No |
Materials |
MFGOPE |
No |
Operations (MFO + MFO2) |
SCHEDULING |
No |
Scheduling data |
WORKSTATIO |
No |
Work centers |
TABWEEDIA |
No |
Weekly structures |
ITMMASTER |
No |
Product |
ITMFACILIT |
No |
Product/site |
OPE_FOCUS : Highligthing of operations at the scheduling's launch
This entry point is used to define a list of operations that should be highlighted at the initial display of the Gantt. It is also used to change the screentip's content linked to the operation.
Context and operating method
Transaction
There is no transaction in progress.
Log file
It is possible to have an open log file (according to the scheduling launch setup).
Different call cases
The entry point is called upon the extraction of each operation.
The [M :OPTK] mask is on line at the moment of the call.
The [F :MFG], [F :MFO] and [F :SCH] classes are on line with a significant content.
The highlighting of an operation is formulated by a call to the WRITE_FOCUS subprogram of the OPTLIBB process.
Subprog WRITE_FOCUS(LFCY, LCOD, LOK, LMESS)
With :
Char LFCY : Production site
Char LCOD : response code
"000" = focus-type action (stable value)
Integer LOK : Focus indicator
0 = no focus (only the replacement of the screentip's text)
1 = active focus
Char LMESS : Message to be displayed in scheduling
The identification of the opération must be entered in the [M :OPW1] mask (MFGNUM, OPENUM, OPESPLNUM).
Implementation example
###########################################################################
$ACTION
ACTION example
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, operations that contain a tool are flagged to be highlitened
If [F:MFO]EQUNUM = "" : Return : Endif
# when writing a chain of character, be careful not to include any comas, semi-colons or any other incompatible character ...
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
# when writing a chain of character, be careful not to include any comas, semi-colons or any other incompatible character ...
WCHAIN = [M:OPTK]ITMDES1
WSPECHAR = ","
Gosub REMOVE_CHAR From OPTLIB
[M:OPTK]ITMDES1 = WCHAIN
# when writing a chain of character, be careful not to include any comas, semi-colons or any other incompatible character ...
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 positionned on theis operation ...) "
[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
Open tables
In the table below, the significant content flag indicates that the content is in phase with the context.
Table | Significant content | Table Title |
MFGHEAD | Yes | WO header |
MFGOPE | Yes | Operations |
SCHEDULING | Yes | Scheduling data |
INIT_JAL : Initialization of the scheduling
This entry point is used on all the operations loaded in memory and before the extraction towards the scheduling in order to be used on specific values.
Context and operating method
This entry point is used on the list of operations loaded in memory.
The available variables for each operation are:
Local Shortint WOPENUM (NBOPMX) : # oper number
Local Shortint WOPESPLNUM (NBOPMX) : # fract. oper
Local Char WWST (GLONWST) (NBOPMX) : # workstation
Local Char WLAB (GLONWST) (NBOPMX) : # labour
Local Decimal WSETLABC(NBOPMX) : # labour setting coeff
Local Decimal WOPELABC(NBOPMX) : # labour oper coeff
Local Integer WOPESTA (NBOPMX) : # operation status
Local Date WOPEEND (NBOPMX) : # start date
Local Date WOPEEND (NBOPMX) : # end date
Local Date WOPEEND (NBOPMX) : # number of workstations
Local Integer WLABN (NBOPMX) : # number of persons
Local Integer WPRPTIM (NBOPMX) : # preparation time
Local Decimal WSETTIM (NBOPMX) : # setting time for 1 ex
Local Decimal WOPETIM (NBOPMX) : # operationg time for 1 ex
Local Decimal WWAITIM (NBOPMX) : # waiting time
Local Decimal WPSPTIM (NBOPMX) : # post oper time
Local Decimal WQTY (NBOPMX) : # remaining quantity
Local Date WFRCSTRD (NBOPMX) : # forced start date
Local Decimal WFRCSTRH (NBOPMX) : # Forced start hour
Local Char WFRCHOU(5)(NBOPMX) # Heure forcée au format hh:mm
Local Decimal WFRCSTRF(NBOPMX) : # Forced stard day fraction
Local Integer WFRCFLG (NBOPMX) : # Forced oper start flag
Local Integer WWSTTYP (NBOPMX) : # subcontract code
Local Decimal WSCOLTI (NBOPMX) : # subcontract delay
Local Char WWIPNUM (GLONVCR)(NBOPMX) : # subcontract credit number
Local Char WSCOITMREF(GLONITM)(NBOPMX) : # subcontract product
Local Integer WSCDCOD (NBOPMX) : # scheduling code
Local Integer WNEXOPEN (NBOPMX) : # next op number op
Local Integer WNEXSPLN (NBOPMX) : # next op. fract. (created in PG)
Local Integer WOPERG (NBOPMX) : # op rank
Local Integer WOPETRT (NBOPMX) : # ope processed in classification
Local Decimal WSCDPCT (NBOPMX) : # % chev
Use
Example of a code for the replacement of the subcontract product purchase delay by the product/site delay:
$ACTION
ACTION example
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