{"id":2082,"date":"2026-07-18T05:47:22","date_gmt":"2026-07-18T05:47:22","guid":{"rendered":"https:\/\/www.scmchamps.com\/blog\/?p=2082"},"modified":"2026-07-18T05:47:22","modified_gmt":"2026-07-18T05:47:22","slug":"freight-unit-building-sap-tm-automation","status":"publish","type":"post","link":"https:\/\/www.scmchamps.com\/blog\/freight-unit-building-sap-tm-automation\/","title":{"rendered":"Freight Unit Building in SAP TM: How Automation Saves Planners Hours Every Day"},"content":{"rendered":"<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"3:1-3:519;82-600\">Freight unit building in SAP TM (Transportation Management) is the process that turns incoming orders and deliveries into freight units \u2014 the smallest pieces of cargo that SAP TM can plan, tender, and execute. With automation switched on, SAP TM builds these freight units the moment an order arrives, using a Freight Unit Building Rule (FUBR) that splits or combines cargo based on limits you set \u2014 weight, volume, and quantity. No planner touches anything. The order lands, the freight units appear, planning begins.<\/p>\n<blockquote class=\"ml-2 border-l-4 border-[hsl(var(--border-300)\/0.1)] pl-4 text-text-300\" dir=\"auto\" data-sourcepos=\"5:1-10:90;602-1095\">\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"5:3-5:12;604-613\"><strong>TL;DR<\/strong><\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\" dir=\"auto\" data-sourcepos=\"6:3-10:90;616-1095\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"6:3-6:79;616-692\">A <strong>freight unit (FU)<\/strong> = the smallest plannable piece of cargo in SAP TM.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"7:3-7:94;695-786\">The <strong>FUB Rule (FUBR)<\/strong> is the &#8220;recipe&#8221; that tells SAP TM how to build FUs automatically.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"8:3-8:111;789-897\">Automation fires as soon as an order or delivery reaches TM \u2014 once switched on in the integration profile.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"9:3-9:108;900-1005\"><strong>Split criteria<\/strong> (weight, volume, pieces) and <strong>consolidation settings<\/strong> decide how many FUs you get.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"10:3-10:90;1008-1095\">Get the rule wrong and you get chaos: tiny FUs, failed planning, frustrated planners.<\/li>\n<\/ul>\n<\/blockquote>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"12:1-12:29;1097-1125\"><strong>The numbers that matter:<\/strong><\/p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\" dir=\"auto\" data-sourcepos=\"13:1-15:94;1126-1570\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"13:1-13:93;1126-1218\"><strong>45% less manual planning effort<\/strong> after FUB automation \u2014 SCM Champs client project, 2025<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"14:1-14:258;1219-1476\"><strong>0.5\u20133.6% of manually entered data contains errors<\/strong>, per peer-reviewed research on general data entry \u2014 every wrong weight or quantity becomes a wrong freight unit (source: Behavior Research Methods, link.springer.com\/article\/10.3758\/s13428-019-01207-3)<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"15:1-15:94;1477-1570\"><strong>10 hours per week<\/strong> \u2014 what one client&#8217;s planners spent creating transport demands by hand<\/li>\n<\/ul>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\" data-sourcepos=\"17:1-23:62;1572-1961\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\"><\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Manual FU creation<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Automated FUB<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Trigger<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Planner creates demand by hand<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Order arrives \u2192 FU appears instantly<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Speed<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Minutes per order<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Seconds, zero touch<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Errors<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Typos, missed orders, wrong splits<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Consistent, rule-based<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Scale<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Breaks at high volume<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Handles thousands of orders<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Planner&#8217;s day<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Data entry<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Actual planning &amp; exceptions<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"25:1-25:37;1963-1999\">What Is a Freight Unit in SAP TM?<\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"27:1-27:203;2001-2203\">A freight unit is like a packed suitcase. The airline doesn&#8217;t plan around your socks and shirts \u2014 it plans around the suitcase. SAP TM works the same way: it plans around freight units, not order lines.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"29:1-29:151;2205-2355\">A customer orders 12 pallets. TM checks the rule, sees they fit one truck, and creates one freight unit. A 30-pallet order? The same rule creates two.<\/p>\n<h3 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\" data-sourcepos=\"31:1-31:53;2357-2409\">Freight Unit vs Freight Order vs Freight Booking<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"33:1-33:29;2411-2439\">Three documents, three jobs:<\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\" data-sourcepos=\"35:1-39:136;2441-2911\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Document<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it is<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Who creates it<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">When it appears<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\"><strong>Freight Unit (FU)<\/strong><\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The cargo \u2014 demand that needs moving<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Created automatically from orders<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The moment an order arrives<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\"><strong>Freight Order (FO)<\/strong><\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The trip \u2014 a truck moving one or more FUs<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Planner or automated planning run<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">During planning<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\"><strong>Freight Booking (FB)<\/strong><\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Reserved carrier capacity (ocean\/air)<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Planner or booking process<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">When space is booked with a carrier<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"41:1-41:45;2913-2957\">How Automatic Freight Unit Building Works<\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"43:1-43:191;2959-3149\">Every incoming order makes the FUB Rule answer three questions: <em>What freight unit type do I create? When do I split? When do I combine?<\/em> Define those answers once, and the rest runs itself:<\/p>\n<ol class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3\" dir=\"auto\" data-sourcepos=\"45:1-50:89;3151-3630\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"45:1-45:72;3151-3222\">An order or delivery is created in SAP S\/4HANA (or a connected ERP).<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"46:1-46:49;3223-3271\">It reaches <a href=\"https:\/\/www.scmchamps.com\/sap-modules\/sap-transportation-management\"><strong>SAP TM<\/strong><\/a> as a transportation demand.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"47:1-47:116;3272-3387\">TM picks the right FUB Rule \u2014 a default, or a condition choosing different rules per customer, product, or lane.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"48:1-48:89;3388-3476\">The rule checks split limits (max weight, volume, pieces) and consolidation settings.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"49:1-49:65;3477-3541\">Freight units are created automatically \u2014 ready for planning.<\/li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"50:1-50:89;3542-3630\">The order changes later? Change processing updates the freight units \u2014 if configured.<\/li>\n<\/ol>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"52:1-52:301;3632-3932\">The logic is identical in embedded TM (inside S\/4HANA) and standalone TM. The difference is where demand comes from: embedded TM reads sales orders and deliveries directly, while standalone TM receives them through integration as OTRs and DTRs (order- and delivery-based transportation requirements).<\/p>\n<h3 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\" data-sourcepos=\"54:1-54:47;3934-3980\">The Settings That Make or Break Automation<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"56:1-56:38;3982-4019\">Five settings do almost all the work:<\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\" data-sourcepos=\"58:1-64:84;4021-4572\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">FUBR setting<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it does<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Simple example<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">FU document type<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Which kind of FU gets created<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Standard FU for road freight<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Split criteria (weight\/volume\/pieces)<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Caps the size of one FU<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Max 24 t \u2192 a 30 t order becomes 2 FUs<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Consolidation<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Combines items\/orders into one FU<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">3 small items \u2192 1 FU<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Rule determination (condition)<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Picks different rules for different scenarios<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Customer A splits by pallets; Customer B by weight<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Incompatibilities<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Keeps wrong things apart<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Food never builds with chemicals<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"66:1-66:48;4574-4621\">The SCM Champs FUB Automation Maturity Model<\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"68:1-68:66;4623-4688\">Across our FUB projects, every client sits at one of four levels:<\/p>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\" data-sourcepos=\"70:1-75:122;4690-5176\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Level<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it looks like<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">The pain<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">0<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">All Manual<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Planners create demands by hand<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Slow, error-prone, doesn&#8217;t scale<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">1<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">One-Rule Automation<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">A single default FUBR for everything<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Works until volume or variety grows<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">2<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Smart Rules<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Condition-based rules per customer\/product\/lane<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Needs expertise to design &amp; test<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">3<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Exception-Only<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Rules + incompatibilities + monitoring tuned so planners only handle exceptions<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The goal state<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"77:1-77:139;5178-5316\">The self-check: <strong>if your busiest planner quit tomorrow, would freight units still get created correctly?<\/strong> If no, you&#8217;re at Level 0 or 1.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"79:1-79:41;5318-5358\">Common FUB Problems &amp; How We Fix Them<\/h2>\n<div class=\"overflow-x-auto w-full px-2 mb-6\" dir=\"auto\" data-sourcepos=\"81:1-87:109;5360-5971\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Symptom<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Likely cause<\/th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">The fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">No FU created for a new order<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">FUB rule not found (missing condition\/default)<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Check rule determination + application log<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Hundreds of tiny FUs<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Split limits too low \/ consolidation off<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Raise split quantities, enable consolidation<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">One giant unplannable FU<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">No split criteria vs truck capacity<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Set split limits to match vehicle capacity<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Wrong products mixed in one FU<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Missing incompatibility settings<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Define incompatibilities<\/td>\n<\/tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">ERP order changed, FU didn&#8217;t<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Integration\/change handling issue<\/td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Check integration settings, reprocess<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"89:1-89:292;5973-6264\">When we walk into a broken FUB setup, we don&#8217;t start with settings. We assess: pull the application log, trace ten live orders end-to-end, map which rule fired \u2014 or didn&#8217;t. Then we redesign, test against a week of real order data, and stay through hypercare until the exception rate settles.<\/p>\n<h3 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\" data-sourcepos=\"91:1-91:36;6266-6301\">Real Results From Real Projects<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"93:1-93:425;6303-6727\">A building materials distributor (details anonymized) running 300+ orders a day had planners spending ~10 hours a week creating and fixing transport demands by hand \u2014 wrong splits forced ~7% of shipments into re-planning. We rebuilt their FUB rules with condition-based determination per product line. After go-live: demand creation fully automatic, re-planning under 1.5%, and those 10 hours went into carrier negotiations.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"95:1-95:27;6729-6755\">Experts &amp; the Community<\/h2>\n<h3 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\" data-sourcepos=\"97:1-97:18;6757-6774\">Expert Corner<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"99:1-99:193;6776-6968\">David Chen, SAP TM Lead at SCM Champs, 12 years in SAP logistics: <em>&#8220;Nine times out of ten the problem isn&#8217;t SAP \u2014 it&#8217;s a split limit somebody set in year one and nobody has questioned since.&#8221;<\/em><\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"101:1-101:207;6970-7176\">Sarah Lin, Senior SAP TM Consultant at SCM Champs, 8 years in SAP logistics: <em>&#8220;The day automation went live, the planners stopped doing data entry and started doing planning. That&#8217;s the whole point of TM.&#8221;<\/em><\/p>\n<h3 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\" dir=\"auto\" data-sourcepos=\"103:1-103:27;7178-7204\">You Asked, We Answered<\/h3>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"105:1-105:39;7206-7244\">Real questions from the SAP community:<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"107:1-108:336;7246-7771\"><strong>&#8220;I&#8217;m on embedded TM (S\/4HANA). The sales order shows the TM Status tab, but no freight unit gets created \u2014 and my FUBR is maintained in the logistics integration profile. What&#8217;s wrong?&#8221;<\/strong> A visible TM Status tab means integration found your control key, so the blocker sits further down: a delivery block removing schedule-line confirmation, zero weight or volume, or automatic FUB not flagged in the logistics integration profile. Run \/SCMTMS\/CHK_DOC_INT_TM_INTEGR and read the application log; it names the missing piece.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"110:1-111:261;7773-8189\"><strong>&#8220;We&#8217;re on S\/4HANA Public Cloud TM and freight units aren&#8217;t created from sales orders \u2014 and I can&#8217;t run check reports there. How do I even diagnose it?&#8221;<\/strong> In Public Cloud, skip the reports: open the Manage Order-Based Transportation Requirements app, find your OTR, and trigger freight unit building manually. The error it throws \u2014 no FUBR, missing location, missing weight \u2014 is your root cause. Fix it and rebuild.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"113:1-113:226;8191-8416\"><strong>Your turn:<\/strong> what&#8217;s your biggest freight unit headache? Tell us in the comments \u2014 the best become future articles. Quick poll: <em>What % of your freight units are created automatically today?<\/em> \u2192 0% \/ Under 50% \/ 50\u201390% \/ 90%+<\/p>\n<h2 class=\"PDq2pG_selectionAnchorContainer\" data-start=\"3384\" data-end=\"3404\"><strong data-start=\"3384\" data-end=\"3404\">About SCM Champs<\/strong><\/h2>\n<p data-start=\"3409\" data-end=\"3691\"><a href=\"https:\/\/finance.yahoo.com\/small-business\/articles\/scm-champs-inc-earns-sap-131500041.html\" target=\"_blank\" rel=\"noopener\"><strong>SCM Champs<\/strong><\/a> is a US-based SAP supply chain consulting company headquartered in Wilmington, Delaware. Founded in 2018, the company is an official SAP Partner specializing in SAP Transportation Management (SAP TM), SAP Extended Warehouse Management (SAP EWM), SAP Logistics Management (SAP LGM),and warehouse automation.<\/p>\n<p data-start=\"3696\" data-end=\"3850\">SCM Champs has delivered more than 10 SAP supply chain implementations across the pharmaceutical, e-commerce, semiconductor, and manufacturing industries.<\/p>\n<p data-start=\"3855\" data-end=\"4139\">Every engagement follows a structured delivery approach that includes assessment, solution design, testing with real business data, go-live support, and hypercare. This same implementation methodology is reflected in the Freight Unit Building Maturity Model described in this article.<\/p>\n<p data-start=\"3855\" data-end=\"4139\"><strong data-start=\"824\" data-end=\"840\">How we work:<\/strong> Every SAP implementation follows a structured delivery approach: <strong data-start=\"906\" data-end=\"1000\">assessment, solution design, testing with real order data, go-live support, and hypercare.<\/strong> This same methodology is used in the Freight Unit Building Maturity Model presented in this article.<\/p>\n<h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" dir=\"auto\" data-sourcepos=\"123:1-123:7;8917-8923\">FAQ<\/h2>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"125:1-126:168;8925-9133\"><strong>1. What is a freight unit in SAP TM?<\/strong> It&#8217;s the smallest bundle of goods that travels together through your transport network \u2014 the &#8220;unit of demand&#8221; between an order and a truck. All TM planning runs on it.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"128:1-129:165;9135-9372\"><strong>2. What&#8217;s the difference between a freight unit and a freight order?<\/strong> The freight unit is the cargo that needs moving; the freight order is the vehicle trip that moves it. One truck (freight order) often carries several freight units.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"131:1-132:162;9374-9587\"><strong>3. What is a Freight Unit Building Rule (FUBR)?<\/strong> The stored decision logic behind FU creation: which document type to use, at what weight, volume, or piece count to split, and when to merge items into one unit.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"134:1-135:247;9589-9887\"><strong>4. Where do I configure the FUB rule in SAP TM?<\/strong> In the Profiles and Settings area (on older releases: NWBC \u2192 Application Administration \u2192 Planning \u2192 General Settings \u2192 Freight Unit Building Rule). Freight unit types live in customizing under Transportation Management \u2192 Planning \u2192 Freight Unit.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"137:1-138:218;9889-10157\"><strong>5. Why are my freight units not being created?<\/strong> Most often the system can&#8217;t find a FUB rule (missing condition or default), the item has no weight or volume, or automatic FUB isn&#8217;t activated in the logistics integration profile. The application log tells you which.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"140:1-141:217;10159-10447\"><strong>6. Is freight unit building the same in embedded and standalone TM?<\/strong> The rule logic is identical \u2014 only the demand source differs. Embedded TM builds FUs straight from S\/4HANA orders and deliveries; standalone TM builds them from integrated transportation requirements (OTRs and DTRs).<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"auto\" data-sourcepos=\"143:1-144:133;10449-10636\"><strong>7. How long does it take to set up FUB automation?<\/strong> Expect roughly 3\u20135 weeks of rule design and testing inside a wider TM project, depending on how many scenarios need their own rules.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Freight unit building in SAP TM (Transportation Management) is the process that turns incoming orders&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2083,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[344,343,7],"class_list":["post-2082","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-freight-unit-building","tag-freight-unit-building-in-sap-tm","tag-sap-tm"],"_links":{"self":[{"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/posts\/2082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/comments?post=2082"}],"version-history":[{"count":1,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/posts\/2082\/revisions"}],"predecessor-version":[{"id":2084,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/posts\/2082\/revisions\/2084"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/media\/2083"}],"wp:attachment":[{"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/media?parent=2082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/categories?post=2082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scmchamps.com\/blog\/wp-json\/wp\/v2\/tags?post=2082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}