Supply Chain Management Blogs by SAP
Expand your SAP SCM knowledge and stay informed about supply chain management technology and solutions with blog posts by SAP. Follow and stay connected.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sudhakar626
Advisor
Advisor

There are many use cases of S/4 TM Load Optimizer and one such use case is used in conjunction with IBP-OBP (Order Based Planning) Deployment Optimizer for TLB (Truck Load Building) functionality. In this use case, the IBP Deployment Optimizer generates the Deployment Stock Transport Requisitions (DSTRs) which will be published onto the On-premise S/4 system first and then, they will be fed into the S/4 TM Load Optimizer to generate the optimized full truckloads which then will 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 IBP-Order-based Planning but still is very relevant if there are unique and complex requirements exist for the Truckload building.



In this blog and set of next blogs, I will provide some tricks and tips for meeting a few unique requirements of Truckload building during the Load Optimizer calls. Though each use case is unique and different for each customer, these tricks and tips can be combined to achieve their own business requirements.


Requirement:  Minimize product spread across multiple truckloads as much as possible when all the products are of similar size (Dimensions – Length, Width, Height), and Weight and similar Pallet platform material is used for all products.


Example: Load of Product A = 40 Pallets, Load of Product B = 60 Pallets, Load of Product C = 24 Pallets. Consider that a Truck can take up to 22 Pallets and there are enough trucks available to build truckloads. Since all products are of similar size and weight and use the same pallet material (Basically, each pallet created would be of the same dimensions and weight across all products), the Load optimizer by default, would yield the optimized full truckloads with any combination of products with 22 Pallets of each truckload. One possible output would be that the first truckload consists of Product A with 10 Pallets, Product B with 10 Pallets, and Product C with 2 Pallets. The second truckload consists of Product A with 12 Pallets, Product B with 10 Pallets, and so on as shown below. In this example, Product A and Product B exist across all trucks, and Product C exists in all but two truckloads.



But the desired output would be as shown below – Two full truckloads with Product B, One full truckload with Product A, and the remaining two truckloads with mixed products.



Solution: Enhancement spots exist to enable the manipulation of direct input and outputs of the Optimizer engine, as shown below.



Through the pre-processing Enhancement BADI, the inputs will be manipulated to get the desired output.


Primarily, the Load optimization process consists of two steps – Package Building as the first step, and the output of the Package Building will be fed into the Load Optimizer engine as the second step. 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 pallet entries which will go into pre-processing BADI of load optimizer in   “mt_et_package” internal table of “io_opt_input” object instance. In the example, the mt_et_package internal table will consist of 132 entries (44 for Prod-A, 66 for Prod-B, 22 for Prod-C) as each entry corresponds to one pallet record.


Now, let’s get into details of how the manipulation of inputs (in this case “mt_et_package” internal table of “io_opt_input” object instance) leads us to get the desired output.


The manipulation of inputs will be done using ABAP within the BADi implementation for the pre-processing enhancement spot.




  • Set the “unloading stop” and “unloading loc” attributes with the same value for each pallet entry of the same material in the “mt_et_package” internal table. Set the unloading stop values in descending order, starting with materials with the highest number of pallets first. In the example, Prod-B will set the unloading stop as 12 as it has the highest number of pallets followed by Prod-A with unloading stop as 10 and then Prod-C with unloading stop as 6. Unloading Loc can be a unique dummy value corresponding to each unloading location. In the example, D1400000000000, D1000000000, D80000000 have been used as unloading locations correspond to 12, 10 and 6 Unloading stop values.

  • Additionally, set “gross_weight,” “width,” “length,” and “height” attributes the same values across all entries(pallets) in the “mt_et_package” internal table. Since the Optimizer prioritizes “weight” and “volume” constraints (hard constraints) over “unloading stop” and “unloading loc” rules, to respect “unloading stop/unloading loc” values that are being set, the dimensions and weight should be set equal across all entries(pallets) as shown below.



 In summary, “Unloading Stop” and “Unloading loc” have the same value (albeit dummy values) for each entry(pallet) of the same material, but Gross Weight, Width, Length, and Height have the same values across all pallets and all these changes have been performed within the BADI implementation of Pre-processing enhancement spot using ABAP.


With these changes, the load optimizer would yield the desired output as shown above.


To conclude this topic, the above-mentioned changes show how the different outputs from the Load optimizer can be accomplished by changing the inputs going into the optimizer call.


In the next set of blogs, I will provide other business requirements and how they can be accomplished using similar tricks and tips.


Hope you find the blog useful.