User Tools

Site Tools



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.


The following UDTs and UDFs are used by COBI.ppc.

IMPORTANT: All tables should be of type No object with auto-increment.


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 __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.


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.

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.


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.

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.)


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).

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).

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.

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.

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:

Key Columns
IX_0 WORDocEntry
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:

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
cobi.ppc.txt · Last modified: 2023/11/21 20:12 by tkammer

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki