There are many use cases of SAP S/4HANA TM Load Optimizer and one such use case is used in conjunction with the Deployment Optimizer of SAP IBP for response and supply for TLB (Truck Load Building) functionality. In this use case, the Deployment Optimizer generates the Deployment Stock Transport Requisitions (DSTRs) which will be published onto the On-premise SAP S/4HANA system first and then, they will be fed into the SAP S/4HANA TM Load Optimizer to generate the optimized full truckloads to be created as the Consolidated Stock Transport Requisitions (CSTRs)(Each CSTR represents one shipment of Full truckload). These CSTRs can be reviewed, modified, and later converted into STOs (Stock Transport Orders). This use case was used when the TLB (Truck Load Building) functionality was not available in SAP IBP for response and supply but still is very relevant if there are unique and complex requirements exist for the Truckload building.
This is the second blog in this series to showcase the tricks and tips for meeting a few unique requirements of Truckload building during the Load Optimizer calls.
Please refer to this URL for the earlier blog in this series.
Though each use case is unique and different for each customer, these tricks and tips can be combined to meet their own business requirements.
Requirement: Perform the Dead-stack loading to utilize the volume of the truck to the maximum (Basically loading the cases from floor to ceiling of the truck as shown in the diagram). This scenario is more relevant for volume-based lightweight products where volume is the more dominant constraint than weight.
Let’s say, for example, a pallet is made of four cases as shown below for lightweight materials.
When the Load Optimization is performed using pallets as they are, the output may not be optimal in terms of the volume as two pallets may not be able to stack on top of each other inside the truck, and as a result, the volume utilization of the truck would be around 60~70% but the desired volume utilization for each truckload is above 95%.
The Load Optimization process primarily consists of two steps – Package Building and the Load Optimizer, as shown below. The Package Building steps perform the palletization of products and regardless of what process is used for the package building (Package Building using Optimizer or Pack Instructions or Packaging Specifications), the output of package building will be the pallet entries and they will be fed as input to the Load optimizer process. As shown below, there are enhancement spots (BADis) that exist before and after the Optimizer engine call to enable the direct manipulation of inputs and outputs of the Optimizer engine.
In this use case, the Pre-processing BADi will be used to “manipulate the inputs” to get the desired outcome from the Optimizer engine. Here is the info about the Enhancement Spots for the Optimizer engine.
The “pallet entries”(the output of the package building step) will be available in “mt_et_package” internal table of “io_opt_input” object instance in the Pre-processing BADi.
Now, let’s get into details of how they will be manipulated (in this case “mt_et_package” internal table of “io_opt_input” object instance) to get the desired output from the Load optimizer engine.
The inputs will be manipulated using ABAP within the BADi implementation for the pre-processing enhancement spot.
Modify the dimension attributes of each pallet entry as follows – Set “width” and “height” values as the width and height of the transportation resource and then derive the “length” value from the original gross volume of the pallet and new values of width and height using the formula: Length = Volume / ( width * height)
Example: The dimensions of the pallet entry are 48 inches in length, 40 inches in width, and 72 inches in height. The dimensions of the Transportation resource are 52.7 feet in length, 8.9 feet in height, and 8.1 feet in width which are translated into 632.4 inches in length, 106.8 inches in height, and 97.2 inches in width.
In the BADi implementation, the width of each pallet entry would be set as 96 inches (just a little smaller than the width of the resource, height would be set as 105 inches (just a little smaller than the height of the resource). Derive the length of each pallet as follows:
Length = ( Gross volume of pallet entry )/ ( new width * new height)
= ( 48 *40 * 72 ) / (96 * 105) ( using formula for volume = length * width * height)
Original pallet dimensions -> 48 x 40 x 72
Modified pallet dimensions in the Badi-> 13.7 x 96 x 105
This example is primarily used to provide the concepts/thoughts behind this ideation only.
With these changes, the load optimizer would yield the desired output as shown at the beginning.
To conclude this topic, the above-mentioned changes show how the different outputs from the Load optimizer can be accomplished by simply changing the inputs going into the optimizer call.
In the next blog, I will provide other business requirements and how they can be accomplished using similar tricks and tips.