COBI.ppc is a Production Process Control solution aka Manufacturing Execution System (MES) for SAP Business One, offered mainly in the form of an Android App.
It is similar to and based on COBI.wms, but specialized for complex production workflows.
Setup
The following UDTs and UDFs are used by COBI.ppc.
IMPORTANT: All tables should be of type ''No object with auto-increment''.
Attributes
In COBI.ppc we use the term "attributes" to refer to information about production orders that will be shown to the user. These attributes can come from a number of sources (see ''Origin'') and can be shown in the production overview screen, the production order details/execution screen, and in some step types. (See below for explanation of "steps.")
Column
Type
Size
Department
Alphanumeric
20
RouteStage
Alphanumeric
50
Title
Alphanumeric
20
Origin
Alphanumeric
20
FieldName
Alphanumeric
254
PositionInOverview
Numeric
2
PositionInDetails
Numeric
2
PositionInSteps
Numeric
2
The ''Origin'' can have the following values:
Value
Meaning
RDR
Sales order on which production order is based
RDR_LINE
Sales order line containing the item being produced
WOR
The production order itself
ITM
Item master data of item being produced
CUSTOM
Special
The ''FieldName'' must contain the name of an SAP Business One object field with the name given to it in DI-API / Service Layer, not the name of the database column.
For example, if the origin is ''RDR'', then it's fine to use ''DocNum'' because that's the name of the field both in the database and in DI-API / Service Layer.
However, if the origin is ''WOR'', then you must use ''DocumentNumber'' instead, because even though in the database it's still ''DocNum'', in DI-API / Service Layer it's ''DocumentNumber'' instead.
If the origin is ''CUSTOM'', the following values are supported for the ''FieldName'':
Value
Meaning
__QUANTITY
Completed & planned quantity displayed as X / Y
__QUANTITY_WTR_PROD
Transferred & planned quantities displayed as X / Y
The ''<nowiki>__QUANTITY_WTR_PROD</nowiki>'' is useful if you don't want to consider a quantity to be truly completed yet before it's transferred to the target warehouse. See the "step" of action type ''ProdWTR'' below.
Buttons
When the user selects a production order from the overview, the details/execution screen will be opened for that order. In this screen, there can be up to five buttons with various actions attached to them.
In the beginning all buttons are in the "Start" state. If a button has a ''TimeType'' value other than ''None'', then pressing it will switch the button into the "Stop" state and a timer will be started. The timer ends when the button is pressed again, or when a button of type ''Fault'' is pressed.
PPC Buttons
Type
Size
Id
Alphanumeric
20
Department
Alphanumeric
20
RouteStage
Alphanumeric
50
Position
Numeric
1
StartTitle
Alphanumeric
20
StopTitle
Alphanumeric
20
TimeType
Alphanumeric
20
The ''TimeType'' can have the following values:
Value
Meaning
Normal
Regular production time
Preparation
Production preparation time
Fault
Duration of a fault situation
None
Button doesn't measure time
If ''None'' is used, the button is always in the "Start" state.
Steps
We use the term "steps" to refer to one or more actions that can be tied to the clicking of a button in a certain state. This is how you can tie in actions like Goods Issue, Goods Receipt, and so on into the production workflow.
For example, you might have a simple "Begin Production / End Production" button, which triggers a Goods Issue step when it's clicked in the "Start" state, and triggers a Goods Receipt when in the "Stop" state.
PPC_STEPS
Type
Size
--------------------
--------------
------
Department
Alphanumeric
20
RouteStage
Alphanumeric
50
FirstStageOnly
Alphanumeric
1
LastStageOnly
Alphanumeric
1
ButtonId
Alphanumeric
20
ButtonState
Alphanumeric
20
Position
Numeric
2
Title
Alphanumeric
50
ShowAttrs
Alphanumeric
1
ActionType
Alphanumeric
20
ActionParam
Alphanumeric
254
The ''Department'' and ''RouteStage'' fields, if filled, limit this step to the corresponding department (resource group) and/or route stage.
The ''FirstStageOnly'' and ''LastStageOnly'' fields can be ''Y'' or ''N'' and only make sense if the ''RouteStage'' field was left empty. They limit the step automatically to the first or last route stage in a production order, without having to explicitly name that stage.
The combination of ''ButtonId'' and ''ButtonState'' determines when the step will be triggered. The ''ButtonState'' must be ''Start'' or ''Stop''. (A button with ''TimeType = None'' is always in the ''Start'' state.)
The ''Position'' determines the order in which the steps will be executed if they would both be executed after a button event.
The ''ShowAttrs'' field can be ''Y'' or ''N'' and determines whether the display attributes of the production order should be shown in the step's screen.
The ''ActionType'' determines what type of step this is, and can have the following values:
Value
Meaning
AllItems
List all item components of the production order
MatsWTR
Relocation of component items to be issued
IGE
Goods issue of the component items
CompletedQty
Enter completed quantity for current routing stage
SimpleIGN
Goods receipt of finished goods
IGN
Goods receipt with optional discarded/return items
ProdWTR
Relocation of received goods that were produced
FillParams
Parameter input screen (see below)
Text
Show the user a static text (e.g. instructions)
Close
Offer to close routing stage or production order
The ''ActionParam'' can have different meanings depending on the ''ActionType''. The following table describes the meanings it can have. When there are multiple possibilities, they can be added together and separated with a comma.
Action type
Meaning of ActionParam
IGE
Comma-separated list of item groups to include
:::
Start with ! to exclude instead
MatsWTR
Comma-separated list of exactly two warehouse codes
:::
Determines the from and to warehouse
CompletedQty
IGNIfLast to call SimpleIGN during last stage
:::
PreFillQty to pre-fill the quantity field
:::
OverwriteQty to make the entered quantity overwrite the old
ProdWTR
Same as for MatsWTR
FillParams
Comma-separated list of parameter IDs
Text
The text that will be shown on the screen
Close
CloseDocIfLast to close production order during last stage
(Note that the ''ActionParam'' has nothing to do with the "parameters" mechanism described below, except that for the ''FillParams'' action type it contains a list of parameter IDs.)
Parameters
We use the term "parameters" (not to be confused with "attributes") to refer to completely specialized values that users can input via a ''FillParams'' step, to document various information that doesn't fit into any standard SAP Business One logic.
For example, you might have a "Tool State" parameter, and add a ''FillParam'' step to an "End Production" button where the user has to specify in what shape the tool is (fine, damaged, broken).
PPC_PARAMS
Column
Type
Size
--------------------
--------------
------
Id
Alphanumeric
20
Name
Alphanumeric
50
DataType
Alphanumeric
20
ValidValues
Alphanumeric
254
DefaultValue
Alphanumeric
254
Mandatory
Alphanumeric
1
MultiValue
Alphanumeric
1
The ''DataType'' can be ''Text'' or ''Number''.
The ''ValidValues'' is a list of comma-separated values.
The ''Mandatory'' and ''MultiValue'' fields can be ''Y'' or ''N''.
When a ''FillParams'' step is executed, the values given by the user are saved in the following UDT.
Column
Type
Size
Timestamp
Alphanumeric
12
Resource
Alphanumeric
50
EmployeeId
Numeric
11
UserInfo
Alphanumeric
20
WORDocEntry
Numeric
11
RDRDocEntry
Numeric
11
ParamId
Alphanumeric
20
ParamValue
Alphanumeric
254
Fault and rejection reasons
The fault reasons will be shown in a drop-down when a user clicks on a button with a ''TimeType'' value of ''Fault''. The user has to select one of the reasons before the fault state can be ended.
The fault reason will be saved in the ''Comment'' field of the ''PPC_WORSTATUS'' table (see below).
PPC_FAULT_REASONS
Column
Type
Size
---------------
--------------
------
Reason
Alphanumeric
254
The reject reasons are shown in a drop-down when a user wants to add rejected quantities in a Goods Receipt, i.e. goods that were produced but are being discarded again for some reason, like being damaged.
PPC_REJECT_REASONS
Column
Type
Size
---------------
--------------
------
Reason
Alphanumeric
254
Production status / timeline
The following table records all button start/stop events so the price state in which a production order is, and for how long it's been running, can be seen.
PPC_WORSTATUS
Column
Type
Size
--------------------
--------------
------
Timestamp
Alphanumeric
12
Resource
Alphanumeric
50
EmployeeId
Numeric
11
UserInfo
Alphanumeric
20
WORDocEntry
Numeric
11
WORDocLine
Numeric
11
RDRDocEntry
Numeric
11
PrevStatus
Alphanumeric
20
Status
Alphanumeric
20
ResourceGroup
Alphanumeric
20
RouteStage
Alphanumeric
50
ButtonId
Alphanumeric
20
Comment
Alphanumeric
254
In addition to the fields, it's recommended to add the following keys to this table for better performance:
PPC_WORSTATUS keys
Key
Columns
------
--------------------
IX_0
WORDocEntry
WORDocLine
IX_1
ResourceGroup
IX_2
UserInfo
(To add keys to a user-defined table in SAP Business One, open the User-Defined Fields - Management window, find the table under User Tables, click on the ''PPC_WORSTATUS'' table, and then click on the Keys button at the bottom right.)
User-defined fields
Resources can be tied to a specific route stage (aka sub-department) via this UDF:
Resource Master Data
Column
Type
Size
--------------------
--------------
------
PPC_RouteStage
Alphanumeric
20
Items can be declared to be of various types: ''Tool'', ''RawMaterial'', ''IntermediateProduct'', ''FinalProduct'', ''ByProduct''. However, currently only the ''Tool'' type is used. Items of type ''Tool'' will be automatically added to a Goods Receipt document as returned good.
Item Master Data
Column
Type
Size
--------------------
--------------
------
PPC_ItemType
Alphanumeric
20
Since Relocation documents can't be based on a Production Order, the following UDF is used to specify for which Production Order they were executed:
Documents
Column
Type
Size
--------------------
--------------
------
PPC_WORDocId
Numeric
11
PPC_User
Alphanumeric
20
Times measured by COBI.ppc are booked as a Goods Issue with a Resource line; the following UDF describes what time of type this was (Normal, Preparation, Fault).
Document Lines
Column
Type
Size
--------------------
--------------
------
PPC_TimeType
Alphanumeric
20
In the following UDFs, COBI.ppc stores information about the status of a routing stage within a production order.
The UDF ''PPC_CompletedQty'' represents the quantity of items whose processing //within this routing stage// has been completed, although they may still have to go through other routing stages before they can be booked in as a Receipt from Production.
The UDF ''PPC_Closed'' can be set to Y to indicate that no further processing will take place within the routing stage.
Production Order - Route Stage Rows
Column
Type / Structure
Size
Valid values
Default
PPC_CompletedQty
Units and Totals / Quantity
PPC_DiscardedQty
Units and Totals / Quantity
PPC_User
Alphanumeric
254
PPC_Closed
Alphanumeric
1
Y / N
N