As promised, today’s MKS as follow-up to MKS53 will give an insight how the SAP TM 9.3 Package Builder transfers the supplied product items into a product – package item hierarchy.
1) Get the Package Builder Profile: This profile assigned to the Freight Unit Building rule holds some of the generally valid steering parameters. Some of them are also available on a more specific level in the product – package type assignment.
For those interested, available parameters (external/internal): /SCMB/IF_PB_PROFILE=>TY_S_PB_PROFILE
Enhancement method available: ADJUST_SETTINGS
2) Determine for each item if it is considered as changed: In case the calling application has provided a before state (which can already include a created product – package item hierarchy), the PB checks which product items have been changed (new or adjusted quantity) and will process only those items. All other will remain untouched. In the SAP TM case the Freight Unit Builder does take over this delta handling and no before state will be available.
Nevertheless interesting, because there is an enhancement method available CHECK_ITEM_CHANGED. This might be useful as all items are passed throught here and a special logic can be applied to exclude some items from the packaging. In addition, all items can be collected here in case some mass reading of item specific data is required for the enhancement. (Example: Collect all keys in an instacne attribute of the enhancement implementation class and read all required data in one of the following methods).
3) Get all product – package type assignments including all steering attributes and settings: Determine most specific assignment for each relevant item. Usually product, partner, and location is supplied and now the best key fit needs to be found. The assignment is the key for the later split factor determination.
4) Get all product/package master data: Read alternative unit of measure definitions and packaging specific attributes
5) Determine item split factor for each relevant product item: Combines the product – package type assignment with the available master data definitions. Determines target package type, the split quantity for full product packages, layer quantities, stacking attributes, combination indicators, and height and weight limits.
For those interested, available parameters (external/internal): /SCMB/IF_PB=>TY_S_ITEM_SPLIT_FACTOR
Enhancement method: DETERMINE_SPLIT_FACTOR
6) Group product items by target package type: Groups all product items that go onto for example the same pallet type. Items within one group could potentially be consolidated together.
7) Build full product packages and determine remaining consolidation quantity: PB applies for each product item the full package split quantity. This can lead to 0 to n full product packages and a remaining product item quantity of 0 to < full package split quantity.
Example: 100 pieces of product A fill a pallet
|Product Quantity||Full Product Pallets||Remaining Product Quantity|
The following graphic shows step 7 as phase 1: Nothing is consolidated so far. In case the PB stops now, the remaining product quantities are placed onto seperate pallets.
8) Determine product layers: For all remaining product quantities the PB now creates product layers as defined in the layer split quantity. A product layer can either be full (layer quantity = split quantity) or incomplete (layer quantity < split quantity). For each remaining product quantity the result of this step can be 0 to n full product layers and 0 to at most 1 incomplete layer. This layer holds the remaining quantity that could be consolidated further into mixed layers.
In case a product is marked to be kept together on a single mixed package, its layers will be aggregated to ensure this.
9) Determine mixed layers: All incomplete product layers are subject of further consolidation. The PB will try to merge incomplete layers based on a logic that fills up the layer surface (potentially this can also be done considering volume). The standard mixed layer building is split into 2 steps:
a) The standard layer consolidation will always try to create stable layers by prefering to combine products with the same height. Those could form a complete layer where something could be stacked onto.
b) Remaining product quanities will be consolidated into inhomogenous layers creating non-stackable layers.
Depending on the product mix and the left-over product quantities the result of the mixed layer building can vary quite a bit. Customer scenarios will little product line items per order and high product quantities will see little effect in step 9 (but a lot in step 7), while scenarios with many product line items and small quantities will mainly depend on the efficiency of this step.
Note that the mixed layer building already can consider product sequence (in case provided using enhancement method DETERMINE_ITEM_SEQUENCE).
Note that the completness indicator of a mixed layer can be manipulated using the package building profile, where a tolerance can be maintained.
Enhancement method: CONSOLIDATE_LAYERS
10) Layer combination: Result of steps 8 and 9 is a set of 0 to n full product layers, 0 to n incomplete product layers (could not be consolidated into mixed layers; for whatever reason), 0 to n complete mixed layers, and 0 to n incomplete mixed layers.
The standard applies a package count and height optimization logic. Basic rule: Any package / pallet can have at most 1 incomplete non-stackable layer (in reality the one on top). So the number of incomplete (product/mixed) layers is the minimum number of result packages. After doing this assignment, the PB will add the remaining layers to the packages using a bin stacking algorithm.
The standard provides as alternative a pick-sequence algorithm, but this must be activated using the settings (as it requires data from enhancement method DETERMINE_ITEM_SEQUENCE anyway). This algorithm then just goes through the item layers and adds them up until a limit is reached. Then it starts a new package (or fills up the next package created due to an incomplete layers).
Enhancement method: COMBINE_LAYERS_TO_PACKAGE
11) Create the required package items: So far all processing was done based on the product items and their layers. All of those items and layers now have an assignment to a package. Those are created now including all attributes (weight, height, …).
12) Create package hierarchy: In case the scenario is configured to first package products into boxes and then put those onto pallets, this package item hierarchy is created similar to the product – package hierarchy.
Obviously the challenge here is step 9 for scenarios with many product items with little quantity. Approach for this is to view the complete pallet as a single mixed layer and fill it up in an efficient way. Here we are continously improving together with our front-runner projects.