This chapter describes how to handle interfacing when performing split and join in ROB-EX at operation level (split at order level is another subject). The challenge is how interface wise, to handle the additional Operation objects created after a split.
To further elaborate by an example.
- ROB-EX is importing production order PO1 with operation O1 from an external ERP system.
- The ROB-EX planner would like to produce the operation in two steps and performs an operation split of O1 into O1-1 and O1-2
At this point in time, the object model between ERP and ROB-EX is no longer in sync. The order has one operation in ERP – but two in ROB-EX. This will provide a challenge in the following situations.
- Situation S1: The plan is re-imported ERP -> ROB-EX. The ERP will only export O1. Even though two operations O1-1 and O1-2 now exists in ROB-EX?
- Situation S2: The plan is exported ROB-EX -> ERP. The ERP system will not know operation O1-1 and O1-2, so where should the ERP map this information to?
The brief conclusion of the details described below is, that it is OK to split and join operations in ROB-EX, even when you run integrated to external systems. As long as you
- use XML import/export, SQL (GanttERP2) or DirectSQL. These technologies will handle the challenge like described below
- once you start splitting in ROB-EX, then be aware that from that point on, ROB-EX will no longer update the route with new or deleted operations. So a change to the route in ERP will no longer be reflected in ROB-EX
XML, SQL and DirectSQL
As of ROB-EX 220.127.116.11 this is the how ROB-EX will default handle this situation
Import ERP -> ROB-EX
For situation S1, then ROB-EX will , by default investigate if an imported operation has been split inside ROB-EX – and map accordingly. In the above example O1 is imported and the following will take place
- O1 start time is ignored
- O1 end time is ignored
- O1 status is set on all split members, if O1 status is higher than current status of the split member. One exception is status “Started”, which is not immediately forwarded, since we want the progress reports to start the individual split members (based on the “ProdOrderSettings.splitProgress” setting)
- O1 setup time is ignored
- O1 workload time is ignored
- O1 switch over time is ignored
- O1 progress is distributed across the operations according to the ProdOrderSettings.splitProgress setting
Effectively this means, that as soon as you start splitting operations in ROB-EX, then new or deleted operations from the ERP side will be ignored. I.e. ROB-EX is now master of what operations exists in the route.
Requirement for versions prior to 18.104.22.168: ProdOrderSetting.opSeqStructureMaster=destination
Handled automatically from 22.214.171.124 and later
Export ROB-EX -> ERP
For situation S2, then ROB-EX will , by default aggregate information of O1-1 and O1-2 and export the information as O1. The aggregation will happen like this
- O1 start time is the earliest start of either O1-1 or O1-2
- O1 end time is the latest end of either O1-1 or O1-2
- O1 status is the highest status of O1-1 and O1-2. Except for status Complete, in which case second highest state is exported. O1 will get status “Complete” only when O1-1 and O1-2 is “Complete”
- O1 setup time is the setup time of the earliest of the operations
- O1 workload time is the workload time of the original operation before the split
- O1 switch over time is the switchover time of the latest of the operations
- O1 progress: the quantityFinished field is the quantity sum completed among all split members (only DirectSQL and DB – not pure XML export which does not export progress)
When joining operations back to the starting point, then the original operation is re-created in ROB-EX. I.e. ROB-EX will now be in sync again with the ERP object model. So no special handling is needed for joining.