COBI.ppc
Table of Contents
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.”)
PPC_ATTRIBUTES |
||
---|---|---|
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 __QUANTITY_WTR_PROD
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 |
||
---|---|---|
Column | 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 |
||
---|---|---|
Column | 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.
PPC_PARAM_INPUTS |
||
---|---|---|
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 |