Quantcast
Channel: SCN : Blog List - SAP Transportation Management (SAP TM)
Viewing all 88 articles
Browse latest View live

Activate the TM Quicksearch

$
0
0

This posting is about how to activate the TM quicksearch, a nice way to access TM transactional documents directly from the NWBC search bar.

Basically it looks like this, enter a search string in the NWBC search bar, get a result list instantaneously:

Quicksearch Example

 

 

 

If you are interested in the functionality, you may check TMP033 ( http://podcast.tm-podcast.com/tmp033-tm-quicksearch/ ), the podcast episode about the topic.

 

Now, how to activate the TM Quicksearch for you:

 

1. Install note 2260864 which is available from 9.1 onwards and comes with the required classes

2. Check and/or activate the SICF service:

    To make the search classes available they must be accessible as a service. This is done in transaction SICF. The path is sap->bc. In there add a service      named tm_quick_search. The only tab where you need to maintain something is the handler list, in there enter the      class /SCMTMS/CL_QUICK_SEARCHPROVIDE. It should look something like this:

    SICF_setting.JPG

3. Activate the service

4. Enter the Search provider URL: The easiest way to test the service is to enter the search provider explicitely in the NWBC search provider list. This can be      done from the NWBC menu:

    Search Provider Menu path

        The URL is composed as follows:

 

    First part:

    Your system url and port (you can get this from options->settings->connections in the NWBC menu)

      Second part:

    /sap/bc/tm_quick_search?type=OpenSearchDescription

    Third part:

    Optionally you can add some parameters like restriction to a certain search class, if you only want to search e.g. Forwarding orders, I will try to complete      the list later in here, we can start with the default

 

 

With this, you are done and can use the TM Quicksearch!


BusinessPartner and OrgUnit Search in SAP TM UIs

$
0
0

Motivation

BusinessPartner IDs and OrgUnit IDs are most often numeric and instead of memorizing hundreds or thousands of 10-digit customer numbers, end users tend to use the well known F4 value help search popups. When searching for a customer number the end user spends quite some time and mouse clicks: launch the F4 value help popup, enter customer name, country, city, click on search button, check if the customer was found, maybe: correct spelling of the name, click search botton again, locate the right customer number and finally select the right entry to be taken into the input field.

User efficiency is kind of harmed.

What if you could just type all the search criteria into the input field, in which you have to put in the numeric ID and the system auto-proposes the customerIDs, which are relevant?

 

For TM systems (release 9.0 and higher) there is a solution to improve user efficiency and it does not require a fuzzy search based on a HANA DB.


Solution - Result

Just an example, config and background is explained later.

You work for CustomerService and when creating a new order you need to enter BP IDs and on the e-mailed document there is no customer number - as usual there is only Name and Address: >>Phil & Co, 833 Broadway 3rd Floor, New York 10003<<

 

BPs-empty.jpg

 

Instead of using the F4 value help popup, just start typing: "Phil"

OrdP-Phil.jpg

The system auto-proposes relevant customers.

Type a <space> and "US" for the country

OrdP-Phil US.jpg

The dropdown list reduces to the customers from the US.

Type another <space> and "ne" for the city.

OrdP-Phil US NE.jpg

Now, in this example, there is only one left in the list, which is most often not the case in reality, but it demos the effect.

Anytime you use then the arrow down key to select the entry and hit ENTER and that's it. You found the BP number within seconds and no mouse click was required.

OrdP-filled.jpg

 

This is not a fuzzy search and it is also not hard coded. There is a configuration, which in this example controls the following:

The string "Phil us ne" is split by the separator <space> into 3 individual strings. The first one is the name, the second one is the country and the third one is the city.

 

 

Solution - Implementation

There is a customizing, in which you can activate the so called "Combined Search" for input fields for BPs or Org.Units.

Prerequisite: notes 2205284 and 2198536

Use transaction SM34 for the view cluster /SCMB/VC_TYASH in case the following customizing node is not yet available:

 

IMG-node.jpg

SH-level1.jpg

 

It is a 2-level customizing.

In the first view you can declare two different things:

  • Declare for collective search helps the relevant elementary search help (of this collective search help), which shall be used by the system to execute the combined search.
  • Declare the elementary search help, for which the combined search feature shall be activated and declare the separator, which shall be used to split the search string into the individual search input values.

In the second view you declare for the elementary search help the search parameters and its sequence.

 

BP search config (example/recommendation)

SH-BP-CSH-level1.jpg

SH-BP-level1.jpg

SH-BP-level2.jpg

 

OrgUnit search config (example/recommendation)

SH-SOrg-level1.jpg

SH-SOrg-level2.jpg

SH-POrg-level1.jpg

SH-POrg-level2.jpg

 

Prerequisites

The combined search help is only applied for input fields, for which the type ahead search / auto-value-proposal is activated.

The combined search help is not applied to the input field (despite it is activated) if the user enters a pure numeric value. The system assumes here that the user enters the actual ID and applies the regular search help and autocompletion / auto-proposed values come with all IDs, which start with the entered numeric value.

As of today the combined search works for the following search helps:

Collective search helps:

  • Business Partner: /SCMTMS/CSH_BUPA

Elementary search helps:

  • Business Partner:
    • /SCMTMS/BUPA
    • /SCMTMS/BUPAA
    • /SCMTMS/BUPAI
    • /SCMTMS/BUPAR
    • /SCMTMS/BUPARLTYP
    • /SCMTMS/BUPAV
    • /SCMTMS/SH_BUPA_4_FAG
    • /SCMTMS/SH_BUPA_FUZZY
    • /SCMTMS/SH_BUPA_SCAC
  • Organizational Unit:
    • /SCMB/SH_ORGUNIT_SLSORG
    • /SCMB/SH_ORGUNIT
    • /SCMB/SH_ORGUNIT_CMPORG
    • /SCMB/SH_ORGUNIT_PURGRP
    • /SCMB/SH_ORGUNIT_PURORG
    • /SCMB/SH_ORGUNIT_SLSBUR
    • /SCMB/SH_ORGUNIT_SLSGRP
    • /SCMB/SH_ORGUNIT_SLSORG
    • /SCMTMS/SH_ORGUNIT_EXEGRP
    • /SCMTMS/SH_ORGUNIT_EXEGRP_INT
    • /SCMTMS/SH_ORGUNIT_EXEORG
    • /SCMTMS/SH_ORGUNIT_EXEORG_INT
    • /SCMTMS/SH_ORGUNIT_SLSGRP_INT
    • /SCMTMS/SH_ORGUNIT_SLSOFF_INT
    • /SCMTMS/SH_ORGUNIT_SLSORG
    • /SCMTMS/SH_ORGUNIT_SLSORG_INT

 

Background

Feature 1: For the activated collective search help in the search help exit a particular elementary search help (to be used for the type ahead search) is set. The standard behaviour (without this feature) would be: the system uses the elementary search help, which was used by you the last time in the F4 value help popup.

Feature 2: For the activated elementary search help in the search help exit the declared standard input parameter is replaced by the declared list of search parameters and the entered string is split at the seperator character into the individual search value. The content of the internal selopt table is modified accordingly. As of today the options 'equal' and 'contains pattern' are supported.

This customizing and the underlying framework (class /SCMB/CL_SH_TYPE_AHEAD_HELPER) can also be used for own custom developed search helps. It only requires to implement the helper method calls into the search help exit. And it certainly requires a SCM system, which has got the SCM Basis layer.

 

Very special/exceptional case

In the rare case where both kind of IDs - numeric and alphanumeric - exist in the system and some users like to continue searching with the external alphanumeric ID and other users prefer to search for the numeric ID using the combined search parameters, then a compromise is needed: In the search parameters declare the ID to be the first search parameter, followed by the actually intended search parameters. Now the users, who type external alphanumeric IDs and expect the auto-proposed value list to come, can just work as before. All other users, who like to use the new way of search for numeric IDs, need to start typing the separator (here: <space>) in order to suppress the first selection criteria 'ID'.

 

Runtime performance aspect

This "combined search" feature is expected to be used the same way the end users used the F4 value help popup before in terms of which parameters are selected to enter a search value. Hence it is expected that anyway you already have secondary indexes for the search help parameters.Hence the auto-proposed values come up in the drop down as fast as the user would get the search result in the F4 value help popup. Make sure to execute performance tests for your configuration before deploying this feature to production.

 

Known weakness

As of today there is no way for a ABAP WebDynpro to declare an input field, which allows a longer input-string for type ahead search purposes than the actual defined length of the field (like possible in SAP GUI).

Hence, the 10-digit BP number field allows a maximum of 10 characters for searching via type-ahead. This is a real weakness, but it is preferred to wait for a central solution from ABAP WD - instead of spending the time to extend the field length of relevant fields in all the UI structures.

For customer implementation projects it is OK and recommended to increase the field length of relevant UI fields in order to use this search feature to a full extent. There is no issue expected as the final value from the UI field is parsed to the corresponding backend field and the backend field still remains with its original length and all further processing and input checks etc. is done as before.

SAP TM Optimizer performance – An ABAP developer’s point of view

$
0
0

In the last couple of month I got several questions regarding the TM optimizer and its performance. Therefore I decided to write this blog which should give some information how the optimizer works and some tips to improve performance in your scenario (for more information regarding the optimizer and optimizer performance you should check out SAP note 1520433 and the blog series Effective Optmization Series).

 

General
Let me start with some vague information about the optimizer in SAP TM.
When you run the optimizer from TM standard default there are 3 steps which are processed: The optimizer pre-processing, the optimization, and the optimizer post-processing (check process controller strategy VSR_DEF).
In the pre-processing all the relevant data are collected and converted to the optimizer format. This means that data about all selected freight units, freight orders, and resources needs to be collected. Furthermore information about all the possible routes through your transportation network are determined. Also optimization context data needs to be collected. This context includes e.g. orders on selected resources within the planning horizon, to let the optimizer know when the resources are already in use.
The optimizer itself is an algorithm which creates a valid transportation plan and try to optimize the solution regarding the planning costs which are set in the planning cost settings of your planning profile.
In the post processing the optimizer solution is stored back into the TM system which means all the changed data are saved in the system.

There are two main points which will cost performance: volume & complexity. Working with the optimizer you should try to keep one principal in mind "take the data needed, but not more".

opt1.png

 

Data Selection

One important point in reaching a good optimizer performance is selecting right data. Two very important settings here is the selection horizon and the planning horizon. For the right planning horizon you need to analyze your own business. If you are running a day to day business the planning horizon usually will only cover the next few days. It you need to make plans over the next month’s your planning horizon covers a longer time period. Maybe you are using some offset to get your plans ready one or two day before execution. In order to reach a good optimizer performance your selection of freight units and freight orders should depend to the planning horizon. For sure all of those horizons should be as small as possible to improve performance.

The optimizer will never plan any freight unit which have their pick-up and delivery window outside the planning horizon. Therefore avoid to process any of those freight units with time selection attributes in the selection profile.

In the selection profile you can furthermore exclude all freight units which are already planned. Those freight units would be fixed by the optimizer anyways if you don’t also select the freight order which they are assigned to. If you select freight orders the assigned freight units will be added to your selection anyways in order to process them. Please keep in mind that the optimizer will delete the currently planned freight orders and start from scratch for the assigned freight units if you process them in an optimizer run without using incremental planning.

 

Optimization Time

Inthe planning profile you can control how long the optimization should run. As more time the optimizer gets as better the results will be from a planning cost perspective.

Please also check out this setting if you are concerned about the overall optimization time. TM default is set to 20 seconds the engine can use.

Be aware that the right optimizer runtime setting is hardly depending to your scenario. It’s definitely not a good idea to just reduce the runtime in order to get faster response!

opt2.png

 

Notes

Over the last month we did several improvements for the optimizer performance. Those are contained in the following set of notes for optimizer pre- and post-processing.

Here are some of the recent SAP Notes you should implement when facing performance issues. I will try to update the list from time to time.

Optimization in general: 2225934

Optimization resulting in creating multiple freight orders with HBL: 2225719

Optimization using incremental planning: 2225741, 2257414

Optimization with carrier selection: 2188496

Optimization with charge calculation: 2184962

Transit warehousing scenario addressed in SAP TM

$
0
0

This article of mine will provide an overview of transit warehousing scenario which is implemented in SAP TM  9.3 along with SAP EWM 9.3.This scenario is not available for a shipper scenario but only for a freight forwarder/LSP scenario where warehouse operations and execution is implemented in SAP EWM and is integration with freight forwarding operations using SAP TM.

In transit warehousing scenario, the freight forwarder takes the responsibility of receiving cargo from shippers based on inbound transportation planning in SAP TM.Then the cargo is consolidated in such a way that multiple customers based on same destination locations are grouped together and transported to a transit warehouse and then its shipped to the next location of the transportation chain and finally delivered to consignee based on outbound transportation planning in SAP TM.

Hence major implication of this process is that both inbound and outbound transportation planning is possible using this process.Also the cargo received from multiple shippers is very variable hence cargo is managed as a handling unit and cargo information is directly mentioned in the documents in the warehouse.

In the warehouse for a transit scenario, the structuring of warehouse is done in such a way that HU with same destination location are grouped together in the same storage bin .However exception to this are the HU which are dangerous goods or high value cargo which are put in separate storage bin.

Then based on the outbound plan sent by the transportation planner in SAP TM, the HU are loaded directly from the staging areas which is then loaded on to the truck  for putaway operations.There are lot of data exchange that occurs between SAP TM and SAP EWM since SAP EWM informs SAP TM about various steps performed in transit warehouse like arrival in checkpoint, departure from checkpoint , loading and unloading completion etc.

To implement this scenario there has to be proper warehouse organisation structure and warehouse master data to be set up.The warehouse structure comprises of :

a) Warehouse area with storage bins for postal codes

b) Warehouse area with country and region speciifc storage bins

c) Warehouse area for handling HU containers

 

Below enclosed is the process flow to be used for implementing this scenario:

a) Create a forwarding order in SAP TM-Here the customer service creates a forwarding order so that cargo can be transported from shipper to consignee.Once the cargo is picked up from the shipper premises, its to be transported via transit warehouse which belongs to the transportation network of the freight forwarder and belongs to SAP EWM. The output of this step is creation of freight unit.

 

b) Create freight order as part of pick up stage-In SAP TM based on transportation planning, freight order is created during the pick up stage and the stage detaisl will show the pick up from shipper location to transit warehouse.At this time the carrier is assigned to this order.

 

c) Freight order status been upated in SAP TM-Here once the cargo is picked up from shipper location , then the freight order status is updated to Departed.When transportation planning is completed the transportation planner sends an unloading request to the SAP EWM containing details of the freight order number.SAP EWM automatically creates a TU ( transportation unit) , inbound delivery and HU whereby HU are assigned to TU.

 

d) Then truck arrives at the checkpoint and informs the warehouse clerk about the freight order No.The warehouse clerk assigns free door to the TU and updates the status-Docked at door and informs the trucker to drive to assigned door.During this time an unloading notification message is send by EWM for arrival at check point and TM freight order status is updated to Arrived.

 

e) Warehouse clerk then receives the packages once the unloading process starts.The HU are received using RF device and once packages are identified ,HU label is attached to those packages .System automatically performs Goods receipt in EWM for each HU.

 

f) Once all HU are unloaded the truck leaves the door and the warehouse clerk confirms the departure from checkpoint.During this time the unloading message for departure is triggered by SAP EWM which updates freight order status to departed.

 

Now we shall follow the standard process to ship the product from the transit warehouse to next location in transportation chain.After creation of pre carriage/pick up freight order, SAP TM send the outbound planning information to SAP EWM and the same process repeats again as explained above like creation of freight order,send loading request, truck arrival at checkpoint, staging handling unit, loading truck, truck leaves,

Integrate the TM Quicksearch into an PFCG role

$
0
0

The TM Quicksearch as described here can be integrated into the NWBC role, which makes it available to all users with this role and in all systems, no system specific URL is required and the call is always done to the system the NWBC is currently connected to.

 

The following steps are required:

 

1. Enter Transaction PFCG for role maintenance

2. Create a new folder with the ID @SEARCH@ ( yes, in capaital letters... )

3. In the role create an entry of Type "Web address or file" ( you find this entry at the end of the dropdown list). The web address you enter is mainly the local      path as defined in SICF and the URL parameters, e.g. to define the search scope, minimum numbers of letters etc.(details are described in the previous      posting)

     This entry should look like this:

role_tmsearch.jpg

4. Delete the NWBC cache using the report NWBC_DELETE_MENU_CACHE

 

Remark: the generic process on how to integrate a search provider into the PFCG role can be found here, our search is a search following the open search standard (the second described case)

New version available of the SAP TM collaboration portal enhancement guide

$
0
0

There is a new version of the SAP TM collaboration portal enhancement guide available here: SAP TM Collaboration Portal - Customer Extensions.

 

What's new?

  • Fiori like logon screen
  • Two additional lines of code in init() function of custom component to avoid initial screen when starting extended collaboration portal

 

I am looking forward to your suggestions & feedback!

Cheers,

Jan

SAP Transportation Management collaboration portal screenshots available for TM9.3

Mini Series – Introduction to SAP Transportation Management


SAP TM Gantt chart - Common issues

$
0
0

In the last weeks I had several tickets on my desk regarding issues like "Gantt chart does only show a grey area" or "Gantt chart is not responding anymore after drag&drop". This post should list some common sources for such errors and for sure how to fix them.

 

Checking the console

If you have any issues with the Gantt chart behavior it is a good idea to check the browser console for issues. For opening the browser console you need to open the transportation cockpit application in any browser (instead of using NWBC Client) and press F12 for opening the developer tools. On the console tab you will find a lot of information listed. In case of a java script error the error message will shown up here.

console.png

Common issues

 

Services activated

If the Gantt chart just shows a grey area please make sure that all of the services the Gantt chart needs are activated (please check out SAP TM Gantt chart - How to set up).

 

Unified rendering issues

If the Gantt chart does only show a grey area but the services are activated, this could be released to issues with unified rendering. Please open the transportation cockpit again with a page layout showing geo-map or 3D load-plan visualization. If these components are also just showing a grey area please follow the instruction of SAP Note 2154957 and install the mentioned SAP Notes at least up to 2282014.

 

Library mismatch
Please be aware that the TM Gantt chart consists of two components which needs to be on the same version. Both components are delivered with separate SAP Notes. For this reason you ever find two SAP Notes like "Gantt Chart: Collective Note for the Gantt Chart Library (10)" and "Gantt Chart: Collective Note for TM Gantt Chart (10)" showing the same number.
Please make sure that both libraries are on the same version as different versions can lead to several effects from button does not work to Gantt chart does not show up at all.

 

9.3 related cache buster issue
You are running TM 9.3 on an SP below SP03. In the java script console some issue regarding /sap/public/bc/ui5_ui5/1/resources/~<timestamp>~/sap-ui-core.js occur (<timestamp> is showing some timestamp like ‘20160317120000’>. Please implement SAP Note 2235879for this issue.

 

9.3 ‘sap.ui.ux3.library-preload': NOT FOUND
You are running TM 9.3. In the Java script console you get an issue telling “’sap.ui.ux3.library-preload’: NOT FOUND”. Please implement SAP Notes 2258909and2258910.

 

9.3 Handling resources

You are running TM 9.3 on an SP below SP04 and use the default SAP Gantt chart layout SAP_HRES. The Gantt chart does not show up at all. Please implement SAP Note 2288503.

Monday Knowledge Snippet (MKS) - 61 Adding a custom object to the geo-map

$
0
0

The SAP TM geo-map component can be used to display master data and business documents. Sometime the requirement exists in custom development projects to add custom objects to the map. This MKS describes how this can be done with minimal effort.

 

First of all an enhancement spot implementation class (for example ZCL_MAP_ENHANCE) is needed. This class must implement interface /SCMTMS/IF_EX_MAP_ENHANCE_VB21. Then the enhancement spot implementation can be setup under path IMG -> SAP Transportation Management -> Business Add-Ins (BAdIs) for Transportation Management -> Geographical Map -> Enhancement for Geographical Map -> BAdI: Enhancement for Geographical Map.

 

MKS61_01_IMG.jpg

 

To add the custom object, an implementation in enhancement interface method ADJUST_NEW_OBJECTS can be done. This method is called whenever an object is added to the map. It is possible to adjust those spot and link like objects, but also to remove them or add totally new objects.

 

Example: You want to add an additional spot for each Freight Order representing the resource. The FO is added to the map and supplied to the enhancement method in table CT_LINK_OBJECTS. The FO stage key is the GUID. Adding the new spot needs structure if_vbi_service_provider=>spot_entry containing the following important fields:

 

GUID                   - Key (usually object key or stage key)

ID                        - Name

TYPE                   - Spot or Link

ROLES                - a table of roles indicating what kind of object it is -> determines for example the icon

DESCRIPTION    - a table of descriptions for tooltip, label, details

FLY_TO               - shall the map zoom to this object

SHOW_LABEL     - shall the label be displayed by default

POSITION           - Longitude and Latitude of spot

 

With the following code already a spot should be displayed:

 

METHOD /scmtms/if_map_enhance_vb21~adjust_new_objects.

     DATA: ls_spot        LIKE LINE OF ct_spot_objects,

               lv_role        TYPE vbi_object_role,

               ls_description TYPE vbi_s_object_descr_entry.

 

     ls_spot-guid = /sctm/cl_guid_convert=>get_guid_x16( ).

     ls_spot-id   = 'MY_TRUCK'.

     ls_spot-position-xpos = '2'.

     ls_spot-position-ypos = '3'.

     lv_role = if_vbi_geomap_const=>gc_object_role-truck.

     INSERT lv_role INTO TABLE ls_spot-roles.

 

*Add a description

     CLEAR ls_description.

     ls_description-category   = if_vbi_const=>gc_descr_category-tooltip.

     ls_description-field_name = 'Vehicle'.

     ls_description-value      = ls_spot-id.

     APPEND ls_description TO ls_spot-description.

 

     INSERT ls_spot INTO TABLE ct_spot_objects.

ENDMETHOD.

 

TruckCustom.jpg

Map with custom truck spot (of course this can have a more realistic position)

 

 

Challenges:

  • Depending on the map component the enhancement shall be active, it can be a challenge to keep the object consistently on the map or remove it at the right point in time. This might require some internal object handling in the custom class.
  • Different icons: When not using the standard roles determining standard icons, it might be required to set the icon in /SCMTMS/IF_MAP_ENHANCE_VB21~ADJUST_SPOT_ICONS.
  • Adding object to the map without others: method ADJUST_NEW_OBJECTS is only called when new objects are added. If you want to show objects without this pre-requisite, either a roundtrip with a new object must be triggered that will be removed immediately and replaced by the custom objects, or a modification is required. (As soon as this comes up I might enhance the enhancement spot...)

 

A lot more to tell about the options to enhance the map...

Monday Knowledge Snippet (MKS) - 62 TM 9.3 Package Building: Weight based items

$
0
0

Today's MKS goes a bit more into detail regarding package building for weight based items. When the whole topic was kicked off, it focused on piece based items. But from our first front-runner customers we learned that there is a lot potential for weight based scenarios. So goal is clear: Enable packaging for items that are ordered based on weight.

 

MKS62_01_Order.jpg

Order with weight based item

 

Basically the TM Freight Unit builder decides what quantity is relevant for package building (/SCMTMS/CL_PB_FUB->MAP_FUB_ITEMS_TO_PB). It prefers the pieces quantity, but in case this is not available now also the item gross weight can be mapped into the relevant PB item field. Note that there is in the PB item structure also a dedicated field for item gross weight, but this is only used for the required weight determination.

 

Note that the package builder only processes items based on gross weight (definitions). There is currently no logic based on net weight.

 

In case the PB receives an item with weight based quantity, it will of course first determine the to-be-used package. After this it will check the product specific alternative unit of measure definitions. Those must no contain a conversion between the package unit of measure and the weight unit of measure.

 

MKS62_03_PackageMaterial.jpg

Product with weight conversion

 

One challenge using this conversion is that the field Numerator is quite limited (I can do nothing about it as it is an ERP field existing quite a long time). It does not allow decimals and has i think only a length of 6. One feasible approach to get this running is the enhancement spot method DETERMINE_SPLIT_FACTOR. Maintain the exact weight conversion in the gross weight fields and overwrite the rounded value from the numerator field.

 

Again, the PB uses this as hard split criteria based on the gross weight. If I order let's say 600 kg of my product and a special additional packaging is required (like a bag around) per package with a weight of let's say 10 kg. If I keep the above conversion, 490 kg of the product and 10 kg bag will end up on the first pallet and 110 kg of the product and 10 kg bag will be on the second pallet.

 

After going through the PB, the final result for weight based items will be on the Freight Unit the following:

 

MKS62_02_FreightUnit.jpg

Freight Unit with weight based items

 

Don't get confused: The split factor coming from the product (in my example 500 kg) always excludes the package itself. So the 510 kg for the first pallet is not an additional bag, but the pallet itself. If you want to limit the pallet to 500 kg, you can use the maximum weight allowed.

 

Of course the pieces fields for the split item is empty.

 

Required SCMB Note: 2284420

 

Hope this gives you at least an idea what is already possible and where to start thinking. A lot to learn in this area. Looking forward to what's coming next.

Webinar: Yanbal International on SAP Transportation Management May 10th

$
0
0

Yanbal International Simplifies the Supply Chain

Learn how the organization optimizes logistics by consolidating and harmonizing global transportation management

Yanbal_Picture.jpg

At the session, experts from SAP and Yanbal – a family owned business with extensive experience in manufacturing and shipping cosmetics, jewelry, and fragrances internationally – will share how the company uses the SAP Transportation Management application to:

  • Consolidate and harmonize its diverse transportation and logistics processes
  • Reduce its total cost of ownership with seamless integration into SAP ERP
  • Achieve cost savings and reduce invoice errors while meeting service levels


Register now to join us.


We look forward to seeing you online!

Best regards,

SAP




 

Webinar: How Yanbal International Optimizes Logistics and Transport

Date:
Tuesday, May 10, 2016

Time:
11:00 a.m. ET/5:00 p.m. CEST

Register now

 

TM Portal - creating default personalization

$
0
0

Dear Readers,

 

In this blog, I would like to provide information about the how An Administrator can personalise TM Portal so that the first time Portal users can see the default personalization set by him.With this Admin can hide the unwanted columns on different screens and also make default setting for the portal users. Please note that the portal users can always change the personalization as per their needs.

 

As a pre-requisite, you should implement the note 2186138 or implement the relevant Support Pack Level and refer to the attachments of the note for more detailed pre-requisites.

 

There are 2 options to achieve the default personalization:


Option 1: Change directly in production:


If you want to change the default settings directly in production then you need to have the required Admin Roles and also open the client (SCC4) to save the personalization. This option might not be feasible every time.

 

Option 2: Change the default settings in Development system & transport:

 

With this option you can change the setting and personalization in the development system and transport the personalization to further systems. You should have the Portal Admin authorization to do this change (Refer to the note 2186138 for more detailed pre-requisite). Please follow the below steps for option 2:

 

1. Create a Transport (Customizing) Request and assign to the admin user. Lets say the TR # TMS9999.

 

2. After this you need to go to SU01 or SU3 to change the user parameter. Then add the user parameter /UI2/WD_TRKORR_CUST and specify the TR number (TMS9999) in the parameter value.


User_Parameter.jpg

3. After this, with admin user can login to the portal and change the settings and hide/unhide the columns. After you completed the personalization, then you will find the tasks created in the TR (TMS9999).

 

TR_details.JPG

 

4. You can transport this TR to further systems

 

Please note that if you have separate systems for Portal and TM Back end then the above steps needs to be done on the Portal system.

How to setup business partners for the TM collaboration portal

$
0
0

Hi,

 

ever wondered how to properly setup business partners to be used for the SAP TM collaboration portal? Here we go...

 

If you as a shipper or LSP want to collaborate with a carrier A through the SAP TM collaboration portal, you need to have two business partners created in your TM back-end system:

 

  1. BP with role "Carrier", say "Carrier A"
  2. BP with roles
    • "Contact Person", say "Contact Person X"
    • "Internet User"

 

Between "Carrier A" and "Contact Person X", you need to also specify BP relationship "Has Contact Person/Is Contact Person For".

 

Then you need to create a Dialog User in SU01 for "Contact Person X" - this is the user with which the contact person at carrier side will finally log on the SAP TM collaboration portal. This needs to have the appropriate roles and authorizations (see https://scn.sap.com/people/jan.rumig/blog/2015/08/14/how-to-define-authorizations). Once this is setup, this SU01 user has to be maintained on the "Internet User" tab in business partner maintenance for "Contact Person X".

 

If there are multiple contact persons working for carrier A, additional SU01 have to be created and additional contact persons created in BP maintenance accordingly.

 

So finally, whenever this carrier A is assigned to a business document in TM, e.g. to a freight order, and this document fulfills the respective requirements to be displayed in the SAP TM collaboration portal (e.g. showing proper status values, etc.) then all contact persons maintained for this carrier as described above can access this document once they have logged on to the SAP TM collaboration portal.

 

This also means that if "Contact Person X" is not only contact person for "Carrier A", but also for "Carrier B", this contact person would see all documents of "Carrier A" and "Carrier B" in the SAP TM collaboration portal.

 

Hope this helps

Cheers,
Sabine

Troubleshooting: Carrier does not see the expected documents in the SAP TM collaboration portal

$
0
0

Hi,

 

if a carrier logs on to the SAP TM collaboration portal and either does not see any content at all, or not the expected content, this may have one of the following root causes:

 

  1. If no content is displayed at all, or even an error message, the required Gateway services may not have been setup properly. Read this post for more information: https://scn.sap.com/people/jan.rumig/blog/2015/08/14/how-to-setup-of-the-gateway-services
  2. If the work centers are displayed, but not the expected documents, the following should be checked:

 

If all of the above criteria is met, carriers should be able to find their respective documents in the SAP TM collaboration portal.

Cheers,
Sabine


Blog on Strategic Freight Management from a Shippers LSPs Perspective

$
0
0

Transportation cost control has been under intense pressure in recent years. Upward pricing drivers have included lengthening supply chains due to globalization, customers demanding faster and more frequent deliveries, carrier capacity challenges, stricter accessorial enforcement by carriers, and fuel surcharge gyrations.

 

Why Strategic Freight Procurement is a New Focus?

 

Rising freight costs are clearly the top pressure driving companies’ renewed focus on transportation procurement and payment. Companies realize they need to institute better spending control to ensure their purchasing volume leverage is being maximized and that shipments consistently follow corporate rules on using low-cost/best value carriers or service options.

 

However, cost is not the only factor on procurement and logistics professionals’ minds. Growing recognition of the critical role transportation flexibility and reliability play in overall supply chain performance is causing companies to re-examine their spend management processes. Increasing supply chain complexity caused by more manufacturing outsourcing and globalization is also making many companies’ traditional transportation procurement practices outdated.

 

The Challenges faced by the Shipper/LSP traditional process:

The Traditional process is manual and mainly done using Excel. SAP Strategic Freight helps to reduce high volume data and optimizing the procurement process.

 

 

What is SAP TM Strategic Freight Procurement?

 

SAP software for freight procurement helps you set expectations for upcoming transportation expenditures according to individual business units which varies depending on the shipping locations and trade lanes.

 

Also because your relationships with partners such as carriers change as your supply chain evolves, you may want to renegotiate existing contracts to include new business while changing the way you allocate shipment volumes among your LSPs/ carriers.

 

 

SAP software (from SAP TM 9.1) supports your entire strategic freight procurement operations by:

* Simplify contract negotiation processes.
* Preparing bids, proposals, and responses, and award and manage contracts/ long term Agreements.
* Efficiently managing contract negotiations by evaluating freight procurement expenditures – for example, annually or semi-annually.
* Can be employed with the strategic freight management function by itself or in conjunction with integrated logistics processes.
* SFP is a cycle of mutually work between shipper/ LSP and carrier.

 

 

[removed from moderation]

 

Hoe to use this is well explained here

 

Strategic Freight Procurement

An IoT PoC – Using HCP IoT Services and on premise SAP TM/EM for Cold chain monitoring

$
0
0

An IoT Proof of Concept – Using HCP IoT Services and on premise SAP Transportation Management/Event management for Cold chain monitoring

 

Here is a PoC which uses an IoT device (Ti Sensor Tag CC2650), HANA Cloud Platform IoT Services, HANA Cloud Connector (HCC) and on premise SAP application systems(TM and EM). The PoC is built to monitor the temperature of a Freight Order (FO) which transports temperature sensitive products like medicines or meat or vegetables. For those who are not familiar with SAP TM or SAP EM: - please refer relevant SCN pages, TM and EM.

Scenario Scope:

  • Freight order is created in SAP TM which  holds products with restricted temperature requirements
  • Event Handler created in SAP EM with control parameters for temperature requirements
  • A sensor (attached to the truck which carries the FO) is used to capture surrounding temperature and send this (via smart phone over cellular network) info to HCP IoT services.
  • JAVA persistence API and Hana Cloud Connector used to send this info to on premise SAP EM system as event message
  • EM ruleset determine the temperature limits and inform the concerned persons via e-mail

Scenario screenshot.jpgRequired Software Components

  • An account in HCP trial via registering athttps://hanatrial.ondemand.com
  • A sensor device to capture temperature, I used tiSensorTag
  • An iPhone with an app called IoTSensor
  • HANA Cloud connector installed on your local machine (or on premise box). Follow this blogfor installation procedure (up to step 4 would be sufficient). This helps to connect applications deployed on HCP to existing on premise system. HCC need not necessarily installed within on premise firewall.

Now we start with configuring HCP for our requirements. You must create a trial user in HANA cloud trial version before proceeding with next steps described here.

1. We will start with configuring IoT Services Cockpit.

1.1  After logging into your trial version, navigate to Services menu on the left side panel. Search for service called ‘Internet of Things Services’ and enable the service. As a result, the subscriptions for the Internet of Things Services cockpit and RDMS will be automatically created for the account as described in this SAP Help portal:Internet of Things Services Cockpit.

1.2  Now you have to deploy Message Management Service(MMS) by following this sap help doc

1.3  To access the Message Management Service (MMS) cockpit and to use the sample clients that are available for the Data Services as well as for the Push Service, a user must have been assigned the role IoT-MMS-User. You can refer here to assign this role.

1.4  Next step is to create Device type and Message Type in IoT Service Cockpit. Navigate to ‘Internet of Things Services’ under Services section on the left side panel of the HCP Cockpit. Click on ‘Go to Service’ which open IoT Service Cockpit in another window.

1.5  Click on device Types tile

1.6  Create a new Device Type by clicking ( + ).

1.7  Enter a name like ‘hpiPhone’ or something like that.

device type.jpg

1.8  Go back to the Internet of Things services Cockpit.

1.9  Choose the Message Types tile.

1.10 Create a new Message Type by clicking ( + ).

1.11

Enter a name, e.g. "tiSensorTag". Select the device Type as previously created and direction as ‘From Device’. You may choose the following as Fields.

fields.jpg

After hit ‘Save’ it will generate an ID for this message Type.

message type.jpg

1.12 Note the Message Type ID, Device ID and Device Registration Token.

1.13 Install IoTSensor app on your iPhone.

1.14 For registering the device on HCP, easiest way is to prepare the below url in an outlook e-mail

iot-create://&/accountName&/[Account ID]&/name&/[Connection Name]&/dataCenter&/[Data Center]&/deviceName&/[Device Name]&/deviceTypeID&/[Device Type ID]&/deviceReg&/[Device Registration Token]&/messageTypeID&/[Message Type ID]

 

Parameters:

[Account ID] => your account ID, e.g., "p1234567trail"

[Data Center] => your account data center, e.g., "hanatrial”

[Connection Name] => any name for a connection, e.g., "myConnection"

[Device Name] => any name for the device, e.g., "iPhone HP" / "Sensor Tag 1"

[Device Type ID] => the Device Type ID you noted at step 1.12

[Device Registration Token] => the Device Registration Token you noted at step 1.12.

[Message Type ID] => the Message Type ID you noted at step 1.12.

 

Send this URL to your e-mail which you can open from your iPhone. A sample url would look like this:

iot-create://&/accountName&/p1234567trial&/name&/mytiTagiPhone&/dataCenter&/hanatrial&/deviceName&/iPhoneHari&/deviceTypeID&/9e21d36c88408c52ccf1&/deviceReg&/9053658c88ef2b2cff84b2aff5f7719&/messageTypeID&/eb5f056d0a86232bb493

1.15 Open your e-mail and click on this URL. This will automatically launch the IoTSensor app you installed at step 1.13.

1.16 Press on Registration. The device gets registered successfully.

1.17 You can see the registered device in the IoT Service Cockpit as shown below. Click on ‘Devices’ tile

registered device.png

Now you are done with IoT Cockpit settings and you can start testing its configurations by sending some sample sensor signals. For this

1.18 Open the IoTSensor App on your iPhone

1.19 You can see the "Connection" is now colored red. Press on ‘Sensor’.

1.20 Make sure Bluetooth is ON in your iPhone and TI SensorTag is ON (just press the ON button on the SensorTag device).

1.21 Select a device by selecting the connected SensorTag. Press ‘Refresh’ icon if SensorTag is not yet listed.

1.22 Go back to the previous screen and then again click Go Back. Now you will see both Sensor and Connection colored red.

1.23 Now press the record button. Data will send according to the sending interval.

1.24 You can see the sensor data in MMS cockpit. Choose the Send and view messages, or perform other actions tile (The MMS Cockpit opens.) from the Internet of Things Services Cockpit. Choose the Display stored messages tile. (All tables of incoming data are listed.). Select the table that is named after the Message Type ID that you created previously ("T_IOT_<MESSAGE TYPE ID>").

app adata.jpg

2. Our next logical step is to configure HCP connection with on premise system using HANA Cloud Connector.

2.1  You might have completed the HCC installation as described in this blog during Required Software Component section above. You will see the connection state as shown below if you completed the steps successfully.

HCC 1.png

2.2  Next step is to create an access control to on premise SAP Event Management system by ‘Add’ System Mapping and providing the below details. Maintain your own system host name. You could test the connection by click on ‘Check’ button.

hcc 2.png

2.3  Now we have to give access to a resource (here in this case an RFC FM in SAP Event Management System) in the above system. You may create a wrapper function module for standard SAP BAPI FM ‘/SAPTRX/BAPI_EH_ADDEVENTMSG_02’. This RFC FM is used to post events in EM. Here in this case we have to pass the sensor temperature as event data. So create a remote function module in Z namespace which accept the temperature and sensor ID and timestamp, latitude and longitude. Code snippet below.

code em.jpg

Once you activate the FM, switch back to HCC Administration page. Select the System mapping you created in step 2.2, and under the ‘Resource Accessible On …’ table below, click ‘Add’ and provide the below details. With this we are done with HCC set up.

em bapi add.png

2.4  You can see in HCP cockpit, under Connectivity section, you have an HCC connection up and running by now.

hcc connection in HCP.jpg

2.5  Now navigate to ‘Destinations’ in HCP cockpit and add a New Destination to your SAP on premise EM system.

destination in HCP.png

Add the system with your own details as seen in the above screenshot. Jco.client.mshost is the message server of your backend SAP system if you are using load balancing, else use jco.client.ashost property to set application server.

3. JPA for message Reading from MMS and send to on premise system via HCC

So far, we have configured IoT Services Cockpit to receive messages from sensor device and HCC setup for passing the message to on premise SAP Event Management system. But this is not enough- we need to read the sensor message from IoT MMS data source table and call the resource (the EM BAPI) we configured via HCC. There are multiple ways to do this as described in this SAP Help portal. I use Java Persistence API(JPA)  for this purpose. We have to deploy a small Java Servlet application on HCP which does this trick. Attached the sample code for this servlet.

3.1 Import the project into eclipse as dynamic web project and then make necessary changes to the SensorServlet.java file with your own destination name(as per section 2.5), function module name(as per section 2.3) and MMS table name(as per section 1.24). Deploy the project into HCP, you may refer this blog step 4.6 if you don’t know how to deploy into HCP.

After deployment, you will see the application under Java Applications section in HCP Cockpit.

HCP deployed apps.png

3.2       Since in the servlet we want to read the data in the MMS, we have to change the default data source binding to MMS data source. For this click on the deployed project name (localproject here)  and then click ‘Data Source Binding’ on the left side panel. Delete the default binding which already there by clicking ‘Delete’. Then select ‘New Binding and change the Schema ID to xxxxtrial.iotmms.web.

data source mapping.jpg

Make sure you have the below settings under ‘Destinations’.

destination.jpg

3.3 The servlet we have deployed can read and send the sensor data stored under MMS. But when we should send this data to on premise will be a question. We can think of the something which trigger this ‘read and send’ – that is pushing the message to on premise system OR pulling the message from on premise system. I followed pushing the message to on premise system approach for this PoC. There is a concept of Message Processing for MMS in HCP IoT Services. By default MMS uses processing service as ‘SQL’ which means all messages are stored in a database. We can use another processing service called Message Forwarding (HTTP)– this can be used to forward an incoming message or notification of the message to web services. I have configured this to notify my servlet whenever a message comes for a specified device type and message type. This way whenever a message comes from my sensor device, my servlet is executed which read the message from MMS data source and send to on premise EM system. This can be done little more easily by just forward the message to an EM web service, but I have not tried this way. The reason is you may lose the message in case some web service failure or something as message forwarding won’t store the message in MMS, but notification will do.

The HTTP Processing Service can be configured by submitting an HTTP PUT request to:

https://<host>/com.sap.iotservices.mms/v1/api/http/processing.

I used a chrome browser tool called postman REST client for this purpose. Just select PUT as a service and send the below text.

{

"deviceType": "9e21d36c88209c52cf53",

"messageType": "eb5f056d0a86232kk481",

"processingServices": [

    {

      "name": "sql",

      "add_default_columns": true,

       "mms.processing.sql.schema_name": "p1234567trial.iotmms.web",

"mms.processing.sql.hana.table_type": "column"

      },

      {

    

      "name": "http",

      "properties": {

        "mms.processing.http.url": "https://iotservletp1234567trial.hanatrial.ondemand.com/localproject/?action=connect",

"mms.processing.http.send_mode": "notification",

"mms.processing.http.auth_mode": "basicauth",

        "mms.processing.http.basicauth.username": "yourHCPusername",

        "mms.processing.http.basicauth.password": "YourHCPPassword"

      }

    }

]

 

}

postman.jpg

 

Change the device type, message type, schema name, http.url, username and password which matches with your settings. In the http.url, ‘?action=’ can be any action name, we are just checking in the servlet code whether the action is null or not. You will get the URL of the servlet project from HCP cockpitàJava Applications. Click on the servlet project link and there you can see the URL under Application URLs.

*************************************************

By now, we have all configurations in HCP Cockpit, HCP IoT Service Cockpit, HCP IoT MMS Service and HCC. I have not gone in details with other application settings in EM or TM. I will publish another blog with this settings later. But if you have some idea on EM and TM, this would be easy as we have the message ready to be pushed to EM. We should have a ruleset in EM which check the temperature and compare the threshold control parameters and trigger and alert e-mail if it is out of range. The sensor device ID registered in HCP shall be the tracking ID of the freight order. Standard configuration in EM will push this event message to TM where we can further process this and model some business scenario like re planning FO/event based charging etc.

Effective Optmization Series: Cost for trucks and trailers

$
0
0

For Optimizer costs information is the basic driver for all planning steps. Internally it evaluates each transport plans by summing all the cost terms and selects the best with the lowest cost. Without proper costs it can produce you many surprises.

What are proper costs? The most important guidance is to orient the cost settings by the real cost rate. Then the optimizer can output solutions close to your expectation. Moreover, only if you start with cost rates near to the real cost, you will have the possibility to add new resources, tariffs or whatever without large challenges. If you don’t have them in detail or you have only some average achieved cost, then use this cost rates as starting point.

And you need to decide for a currency. Internally the optimizer is doing NO conversion of the currencies. All cost terms sent to the optimizer, must be in the same currency to avoid nonsensically computations. My personal favorite is to use one of the real existing currencies like Dollar or Euro, instead of a virtual currency like “APO-Dollar”. It might have the draw-back, that you somehow have to adapt the conversions, but it is much simpler to work with since you easily can compare you planning cost with the cost which you see in the real world.

The next question is which cost of the real world should be passed to the optimizer. It is not a good decision to automatically model all costs.  It is better to start with some simple costs. After you get all in running as expected, you can step by step enhance the complexity to model details in the cost structure.  One more importance point, which is obvious but often negligent, is that the optimizer needs some cost which can influence its decision.  If one item is constant in any planning, you do not need to modify it for the optimizer.

Now let us start with costs for trucks and trailers.

Carriers V.S. Own Fleet

If the resources belong to carriers, you can maintain the average achieved rates for the optimizer to keep it real and simple.

For your own fleet, some of the cost of a truck is independent of its usage, e.g. parts of fix cost for the maintenance and the inspections or the tax. Whatever a transport plan is, you have to pay these costs anyway. So you should compute something like a planning-relevant rate for your internal trucks, e.g. it should contain the cost for driver, distance dependent maintenance or other distance dependent cost. Doing so, you will usually have lower cost rates for your own fleets than for carriers. But this is exactly what we want. We want to prefer our own trucks, as long as there is capacity.

The first cost you maintain for the optimizer should be a rate for the distance.

Distance Cost: from planning cost profile V.S. from distance lane

If the rate is fixed, you can maintain the cost in the cost profile of the planning profile. This is a usual approach for your own fleet, especially if you act regionally. If you use carriers, you have usually different rates in different regions or in different directions. In this case you have to maintain the distance cost on the transportation lane. An average rate in the cost profile would be too rough.

If you maintain a transportation lane between two specified locations you can define the cost on the lane directly. If you have lanes from or to zones, which contain several locations, you can specify only a cost rate per distance. The Geo-Information-System will compute the distances and the optimizer will use the cost rate multiplied by the distance to compute the overall cost. Whenever you define such new lanes and start the optimizer again, you should have a look into the explanation tool to see if the distance computation is working well.

distancecost_planningcostssetting_vs_transportationlane.jpg

Calculation of Distance Cost

To compute the overall cost of a freight order the optimizer sums up the cost of all stages of the freight order. Dependent on information of the lane or the cost profile, the distance cost per stage is computed and summed up.

There is one exception: especially in the US instead the distances of the stages, the lane from the first to the last stop of the freight order decides the rate, even if the truck drives completely different stages because of additional stop-offs. You can define this behavior in the cost profile by enabling “Destination-Based Distance Costs” for such means of transports.

dist_cost.jpg

distance cost of freight order $1:  1459,564 = (581,7900+147,9920)*2

Multi Resource

To finalize our cost settings to cover the distance we have to think about a last important issue: If you use carriers you usually pay only for the freight order itself, you don’t care about the following freight order or about the distance to drive home. To model this you create such resources as multi resources. They have the “beam”-feature. The optimizer doesn’t care about stages between freight orders.

For your own fleet you want to minimize such stages between freight orders. They are automatically created and considered by the optimizer, if you create “real” resources (not multi).

Tuning

With such a setup you usually cover optimization of the distance. It should already produce good plans. Now we can use additional cost to model the reality a little bit better or to define some penalties to force the optimizer to compute specific plans. But keep in mind, that the cost should be oriented on the reality. So keep the additional cost small.

fine_tuning_mrt_cost.jpg

Fix Cost per Freight Order
Within the cost profile you can define a fixed cost for every freight order. This can help as additional penalty to reduce the number of freight orders and to use larger trucks or larger FOR’s instead. This can be part of our realistic cost modeling, too.

Fix Cost per Truck

We emphasized before that for your own fleet you do not need to maintain the real fix cost. But if in your scenario you have only own fleet and you want that optimizer use as few trucks as possible transport, you can set this cost to manipulate the optimizer results.

Intermediate Stop Cost and Maximum Number of Stop

Through this cost and/or max number of stops in planning costs profile you can regulate the size of a freight orders in term of number of stops. E.g. if optimizer creates Freight orders with too many stops than expected, you can enhance this value. Or e.g., if you want to have freight orders only with one customer, you can either set very high value to intermediate stop or use 1 for max number of stops.

Quantity Cost

This cost is part of realistic costs and can be defined in a distance-independent way or to multiply them by the distance. The distance independent way can be used, e.g. If your carriers charge you per quantity. The distance dependent way can be used as oil expense by optimizer; through this cost the heavier freight units have higher priorities and the optimizer will avoid to travel them around, but the routing may be not optimal.

Maximum Distance/Duration

If the optimizer creates longer tours than your expectation. You can use these two values to limit tours.

The last but not least: keep it simple. Scenarios can easily become sophisticated by over fine tuning of costs. It will be a barrier to figure out a sinful model for your scenarios. Important tips: you can design consecutive optimizer runs beginning with simple cost setting, or even use hard constrains instead costs if possible!

Effective optimization: Utilization and why you should avoid cost-functions

$
0
0

In this blog I want to cover two frequent questions:

 

  1. I want to have only FORs with more than x% utilization
  2. I want to distribute the freight between two FORs in a specific way

 

I want to discuss this scope from different views. We will start with some thoughts what the optimizer can do to influence the utilization. After that we will look at the non-delivery cost to model filler products to increase the utilization. After an introduction of the feature minimal utilization we will end with a very deep look into the load cost functions.

                                    

What can the optimizer do for utilization?


Let’s look from the engine side on the utilization. If you call the optimizer you define a selection of the fright you want to plan. That means the backlog for planning is defined completely. The optimizer cannot decide to add some other Freight Units just to fill the truck. It might only decide to not plan some freight.

The optimizer engine has two remaining possibilities to achieve a high utilization.

 

a) It can select the best fitting resource for a freight order

 

b) It can decide about the distribution of the freight units to the freight orders, to get combination filling a truck nearly completely.

 

Method a) seems clear. It is, what we usually expect. Don’t use a large track, if you can do it with a smaller one. By setting the right costs for the truck this should work. You just need a little bit more cost for the larger trucks.

 

Method b) is more sophisticated. Let’s assume we have some Freight Units from location A to location B. Now we have an additional Freight Unit from C to B. should we add it to the Freight Order from A to B to get a higher utilization in a FOR A->C->B?

 

  • If we speak about the utilization, we improved it only for the stage A->C. The stage C->B is new but with the former utilization of A->B. that means we improved the stage with the highest utilization only. It is important to mention, that the optimizer always considers the most utilized stage as the utilization of a freight order.

 

  • It might be, we drive some extra distance to include C into this freight order. Do we want that? Where is the threshold, which decides if it is better to consolidate with a high utilization or to split and find a plan with less distance?

 

The second point shows us, that the min utilization is directly influencing the consolidation of the freight units into freight orders. That means we have to define the rules for the utilization very carefully. As the optimizer cannot create additional freight units, it is forced to check such consolidations, if we add utilization as constraint or penalty.
Therefore the penalties for not reaching the target utilization must be very small. Otherwise the optimization will end up in freight order with a high utilization on one leg but a terrible routing.

 

Filling products

 

It is a usual practice, that you have some filling materials. If your truck is not full, but you need to start the transport, you load some additional products, which are usually cheap and recently transported. For example if you supply a store you might put some toilet-paper on top of the other products just to fill the truck. This allows you to save some capacity for the next days.

 

It might be one possibility to ignore this additional filling freight in planning completely. Execution decides about the additional products and you just reduce the transportation demand of the following days.

 

But if you want to plan the filling-products, we must select them for the optimization run, so that the engine can decide, if they are additionally planned or not. In this case we have to express, which Freight Units are important and must be transported today. And which fright units are filler and optional. You do that via a determination to define very low non-delivery cost for the filler freight units, but high non-deliver cost for the important freight.  If your transportation cost for resources and distances is somewhere between, the optimizer will create freight orders for the important freight units. It will use up the remaining capacity for the filler products. But it will not be able to create new freight orders if the cost for an additional freight order is higher than the non-delivery-cost of the fillers.

This cost setting might be a little tricky. Because of that I want to mention to alternatives. The second one is my favorite, as it doesn’t touch attributes of the freight unit and therefore has no side-effects.

 

  • Instead of non-delivery cost you can use the time windows. The important freight units have concrete hard time windows. The windows of the fillers are much larger. Perhaps a week instead of a day in daily planning. This allows the optimizer to add filler to the other products. At the end the remaining fillers are planned in their own FOR which can be deleted afterwards.

 

  • You work with two Freight unit selections. First plan the important Freight units only. In a second run you use the incremental planning to add as much fillers to the existing freight orders of the important products. You must forbid to create any new freight order. Since TM 9.4 you can do that in the planning cost profile. In older releases you have to define very high fix cost to avoid new freight orders. The second run can be very fast. Usually I use the time automatic and select the option” fastest”. As no new freight orders are needed only the adding to the existing ones is needed, which is done very fast.

 

 

Minimal utilization

 

The thought above showed, that considering the utilization as goal during the optimization needs a very sophisticated penalty setting for under-utilization. To circumvent this issue TM supports a feature under-utilization beginning with version 9.3.

 

The idea is not to handle the utilization during the optimization, but to do only a simple post-processing to clean up the freight orders. The optimizer is planning as usual. Only at the end it is checking if there are freight orders below the specified minimal utilization. Then it tries to re-plan this freight unit and to put it on other freight orders. Doing so only very view freight units should remain on the under-utilized freight orders. After the optimization the manual planner has to decide, what to do with these remaining freight orders.

 

So far I don’t have much feedback on this feature. Your feedback would be very welcome.

 

 

Load-Cost-Function

 

Another feature in this area are the load-coast-functions. Here we have a lot of feedback, mostly because they are so difficult to use. Because of that the first rule for load-cost-functions: Please check first if the two–step approach or the minimal utilization is a good approach for you. Only after that start to think of the load-cost functions.

 

Very often we receive models with a load-cost function like that:

 

utililization3.jpg

 

The idea behind was to express, that a load above a threshold is ok. Below this threshold it is bad. First of all we need to see, that we have additional cost and we run in all the issues about the consolidation like described above. We risk crazy routings and consolidations. Because of that the second rule for load cost functions: Use only very small penalties.

 

The load-cost function should influence the optimizer in such a way, that it prefers full loads instead of several small loads. Let’s think about the effect on the optimization algorithm. As you might know the most important step is the insertion of a freight unit into a partial plan:

 

The described load cost function is penalizing the creation of a new freight order for the next freight unit. But it doesn’t really help the engine to decide between several freight orders, which are not utilized enough. This means after planning the first freight units and crating some freight orders into different directions the optimizer has already some load-cost, but doesn’t see how to resolve that, as it adds freight unit by freight unit without look-ahead. So the optimizer has to pay several load-cost in the hope to reduce it later. For the optimizer this look like a fitness- function for the overall plan like that:

 

utilization5.jpg

 

If you play golf you might see the problem to get the ball into the small whole. For the optimizer it is the same. It is much easier if we have a fitness landscape like in the following diagram. We speak about convex problems, which are usually much easier to solve, as you can improve in small steps and the landscape is guiding you to the optimal solution. Of course this would be boring for golf. But it is a big help for optimization

 

utilization1.jpg

 

 

We can help the optimizer and add some guidance into the cost function by making it convex. We can express, that the cost function for a newly added freight order should be high if there is no load. And it should be low, if we nearly reach or fulfill the threshold for utilization. This leads us to a cost function like that:

 

utililization4.jpg

 

 

 

 

Beside of all this hints, the cost functions still have the tricky influence into the routing a consolidation. Because of that leads repeat and complete the golden rules for load-cost functions.

 

  1. Check if you can reach you goal without load-cost functions (for example several runs or min. utilization)
  2. Use very small penalties.
  3. Guide the engine with an convex load cost function
  4. Check your results very carefully.

Performance improvement for navigation from home tiles

$
0
0

There are a couple of new SAP Notes which will help to get rid off redundant and unnecessary HTTP calls, which may get executed when a user clicks on a home tile in the SAP TM collaboration portal, to navigate to the respective work lists.

 

Check out the following notes:

 

2334022 - Collaboration Portal: Duplicate HTTP calls when navigating from home tile


2334032 - Collaboration Portal: Duplicate HTTP calls when navigating from home tile for Freight Order Management


2334024 - Collaboration Portal: Duplicate HTTP calls when navigating from home tile for Freight Settlement


2334053 - Collaboration Portal: Duplicate HTTP calls when navigating from home tile for Freight Agreement Management



Cheers,

Sabine

Viewing all 88 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>