LOADING METER: Loading Meters Calculation for Document Lines
Overview
The LOADING METER function calculates the loading meters required for a single document line. Loading meters represent the linear space occupied in a transport vehicle, standardized to a common measurement unit.
Purpose
To provide a standardized measurement of space utilization for individual line items, enabling:
- Accurate cost calculation per line
- Load planning optimization
- Integration with Transportation Management Systems
- Consistent measurement across different handling unit types
Parameters
| Parameter Name | Type | Description | Default Value |
|---|---|---|---|
STACKING FACTOR COND |
Code[10] | Condition code containing a stacking factor. This factor adjusts the calculation when items can be stacked more efficiently. If not specified or zero, defaults to 1. | '' (empty) |
WEIGHT CARR.TYPE |
Code[20] | Handling Unit type filter. When the document line's handling unit type matches this filter, the calculation switches to weight/volume-based method instead of quantity-based. | '' (empty) |
INTERLEAVE COND |
Code[10] | Override condition filter for interleave handling units. If specified, this condition determines whether interleave handling units are used, overriding the default interleave logic. | '' (empty) |
Algorithm
The GetLoadingMeterQty procedure calculates loading meters using one of two methods based on the handling unit type.
Method Selection
The calculation method is determined by comparing the document line's handling unit type with the WEIGHT CARR.TYPE parameter:
- If handling unit type matches
WEIGHT CARR.TYPE: Use weight/volume-based calculation - Otherwise: Use quantity/stacking factor-based calculation
Calculation Methods
Method 1: Weight/Volume-Based Calculation
Used when DocumentLine."Handling Unit Type Code" matches the WEIGHT CARR.TYPE filter.
Step 1: Calculate Weight Factor
WeightFactor = DocumentLine."Gross Weight" / CarrierType."Pick Max. Load Weight"
Where:
DocumentLine."Gross Weight"= Total gross weight of the lineCarrierType."Pick Max. Load Weight"= Maximum weight capacity of the handling unit type
Step 2: Calculate Volume Factor
VolumeFactor = (DocumentLine.Quantity × ItemUnitOfMeasure.Cubage) / CarrierType."Pick Max. Load Cubage"
Where:
DocumentLine.Quantity= Item quantityItemUnitOfMeasure.Cubage= Volume per unitCarrierType."Pick Max. Load Cubage"= Maximum volume capacity of the handling unit type
Step 3: Determine Result
Result = MAX(WeightFactor, VolumeFactor) × CarrierTypeGroup."Loading Meter Factor"
The maximum of weight and volume factors is used, ensuring both constraints are respected.
Method 2: Quantity/Stacking Factor-Based Calculation
Standard method used when handling unit type does not match WEIGHT CARR.TYPE.
Step 1: Determine Stacking Factor
IF STACKING FACTOR COND is specified THEN
StackingFactor = GetDecimalCondition(ConditionSetID, StackingFactorConditionCode)
ELSE
StackingFactor = 1
END IF
IF StackingFactor = 0 THEN
StackingFactor = 1
END IF
Step 2: Retrieve Handling Unit Type UOM
Get the CarrierTypeUOM record for:
- Customer Item (
DocumentLine."No.") - Unit of Measure (
DocumentLine."Unit of Measure Code") - Handling Unit Type (from handling unit type group filter)
Ensure CarrierTypeUOM."Qty. per UOM Code" is defined.
Step 3: Calculate Full Handling Units
FullCarriers = DocumentLine.Quantity div CarrierTypeUOM."Qty. per UOM Code"
Where div = integer division (whole number only).
Step 4: Calculate Orderpick Handling Units
OrderpickQty = DocumentLine.Quantity mod CarrierTypeUOM."Qty. per UOM Code"
OrderpickCarriers = OrderpickQty / CarrierTypeUOM."Qty. per UOM Code"
Step 5: Check for Interleave Adjustment
IF all of the following conditions are met:
CarrierTypeUOM."Qty. per Layer"> 0DocumentLine.Quantity>=CarrierTypeUOM."Qty. per Layer"OrderpickQty<> 0 (not a full handling unit)
THEN check for interleave:
IF INTERLEAVE COND is specified THEN
Interleave = HasBooleanCondition(ConditionSetID, InterleaveConditionFilter)
ELSE
Interleave = GetInterleaveCarriers(ConditionSetID)
END IF
IF Interleave THEN
Height = CarrierTypeUOM.Height (or ItemUnitOfMeasure.Height if CarrierTypeUOM.Height = 0)
NoOfLayers = CarrierTypeUOM."Qty. per UOM Code" div CarrierTypeUOM."Qty. per Layer"
IF OtherLinesExists AND NoOfLayers > 0 THEN
InterleavePalletHeightFactor = CarrierType.Height / (NoOfLayers × Height + CarrierType.Height) / StackingFactor
OrderpickCarriers += InterleavePalletHeightFactor
IF OrderpickCarriers >= 1 THEN
OrderpickCarriers = 0
FullCarriers += 1
END IF
END IF
END IF
Where OtherLinesExists = true if there are other document lines in the same document.
Step 6: Apply Stacking Factor and Calculate Result
FullCarriers = FullCarriers / StackingFactor
Result = (FullCarriers + OrderpickCarriers) × CarrierTypeGroup."Loading Meter Factor"
Mermaid Flowchart
flowchart TD
Start([Start: GetLoadingMeterQty]) --> Validate{DocumentLine Type = Cust. Item<br/>AND No. <> ''<br/>AND Quantity <> 0?}
Validate -->|No| Exit[Exit]
Validate -->|Yes| GetCarrierType[Get Shipment Handling Unit Type]
GetCarrierType --> CheckCarrierTypeGroup[Ensure Handling Unit Type Group<br/>and Loading Meter Factor]
CheckCarrierTypeGroup --> CheckWeightMethod{Handling Unit Type matches<br/>WEIGHT CARR.TYPE filter?}
CheckWeightMethod -->|Yes| WeightMethod[Weight/Volume Method]
CheckWeightMethod -->|No| QuantityMethod[Quantity/Stacking Factor Method]
WeightMethod --> CalcWeightFactor[WeightFactor = Gross Weight / Max Load Weight]
CalcWeightFactor --> CalcVolumeFactor[VolumeFactor = Quantity × Cubage / Max Load Cubage]
CalcVolumeFactor --> WeightResult[Result = MAX WeightFactor, VolumeFactor × Loading Meter Factor]
WeightResult --> End
QuantityMethod --> GetStackingFactor{STACKING FACTOR COND<br/>specified?}
GetStackingFactor -->|Yes| StackFactorCond[Get Stacking Factor from Condition]
GetStackingFactor -->|No| StackFactor1[Stacking Factor = 1]
StackFactorCond --> CheckStackZero{Stacking Factor = 0?}
CheckStackZero -->|Yes| StackFactor1
CheckStackZero -->|No| GetCarrierTypeUOM
StackFactor1 --> GetCarrierTypeUOM[Get Handling Unit Type UOM]
GetCarrierTypeUOM --> CalcFullCarriers[FullCarriers = Quantity div Qty. per UOM Code]
CalcFullCarriers --> CalcOrderpickQty[OrderpickQty = Quantity mod Qty. per UOM Code]
CalcOrderpickQty --> CalcOrderpickCarriers[OrderpickCarriers = OrderpickQty / Qty. per UOM Code]
CalcOrderpickCarriers --> CheckInterleave{Qty. per Layer > 0<br/>AND Quantity >= Qty. per Layer<br/>AND OrderpickQty <> 0?}
CheckInterleave -->|Yes| CheckInterleaveCond{INTERLEAVE COND<br/>or default interleave?}
CheckInterleaveCond -->|Yes| CalcInterleave[Calculate Interleave Adjustment]
CalcInterleave --> ApplyStacking
CheckInterleaveCond -->|No| ApplyStacking
CheckInterleave -->|No| ApplyStacking[FullCarriers = FullCarriers / StackingFactor]
ApplyStacking --> QuantityResult[Result = FullCarriers + OrderpickCarriers × Loading Meter Factor]
QuantityResult --> End([End])
Calculation Steps
Weight/Volume-Based Method
Get Weight Factor:
WeightFactor = Gross Weight / Pick Max. Load WeightGet Volume Factor:
VolumeFactor = (Quantity × Cubage) / Pick Max. Load CubageCalculate Result:
Result = MAX(WeightFactor, VolumeFactor) × Loading Meter Factor
Quantity/Stacking Factor-Based Method
Determine Stacking Factor:
- Retrieve from condition if
STACKING FACTOR CONDis specified - Default to 1 if not specified or zero
- Retrieve from condition if
Calculate Full Handling Units:
FullCarriers = Quantity div Qty. per UOM CodeCalculate Orderpick Handling Units:
OrderpickQty = Quantity mod Qty. per UOM Code OrderpickCarriers = OrderpickQty / Qty. per UOM CodeApply Interleave Adjustment (if applicable):
- Check if interleave is required
- Calculate interleave pallet height factor
- Adjust orderpick handling units accordingly
Apply Stacking Factor:
FullCarriers = FullCarriers / StackingFactorCalculate Final Result:
Result = (FullCarriers + OrderpickCarriers) × Loading Meter Factor
Examples
Example 1: Weight/Volume-Based Calculation
Scenario:
DocumentLine."Handling Unit Type Code"= 'HEAVY' (matchesWEIGHT CARR.TYPEfilter)DocumentLine."Gross Weight"= 500 kgCarrierType."Pick Max. Load Weight"= 1000 kgDocumentLine.Quantity= 100 piecesItemUnitOfMeasure.Cubage= 0.01 m³ per pieceCarrierType."Pick Max. Load Cubage"= 2 m³CarrierTypeGroup."Loading Meter Factor"= 0.4
Calculation:
WeightFactor= 500 / 1000 = 0.5VolumeFactor= (100 × 0.01) / 2 = 1 / 2 = 0.5MAX(0.5, 0.5)= 0.5Result= 0.5 × 0.4 = 0.2 Loading Meters
Result: 0.2 Loading Meters
Example 2: Quantity-Based Calculation (Simple)
Scenario:
DocumentLine."Handling Unit Type Code"= 'EUR' (does not matchWEIGHT CARR.TYPE)DocumentLine.Quantity= 150 piecesCarrierTypeUOM."Qty. per UOM Code"= 50 pieces per handling unitCarrierTypeGroup."Loading Meter Factor"= 0.4STACKING FACTOR COND: Not set (defaults to 1)- No interleave required
Calculation:
StackingFactor= 1FullCarriers= 150 div 50 = 3OrderpickQty= 150 mod 50 = 0OrderpickCarriers= 0 / 50 = 0FullCarriers= 3 / 1 = 3Result= (3 + 0) × 0.4 = 1.2 Loading Meters
Result: 1.2 Loading Meters
Example 3: Quantity-Based with Orderpick Handling Units
Scenario:
DocumentLine."Handling Unit Type Code"= 'EUR'DocumentLine.Quantity= 175 piecesCarrierTypeUOM."Qty. per UOM Code"= 50 pieces per handling unitCarrierTypeGroup."Loading Meter Factor"= 0.4STACKING FACTOR COND: Not set- No interleave required
Calculation:
StackingFactor= 1FullCarriers= 175 div 50 = 3OrderpickQty= 175 mod 50 = 25OrderpickCarriers= 25 / 50 = 0.5FullCarriers= 3 / 1 = 3Result= (3 + 0.5) × 0.4 = 1.4 Loading Meters
Result: 1.4 Loading Meters
Example 4: Quantity-Based with Stacking Factor
Scenario:
DocumentLine."Handling Unit Type Code"= 'EUR'DocumentLine.Quantity= 200 piecesCarrierTypeUOM."Qty. per UOM Code"= 50 pieces per handling unitCarrierTypeGroup."Loading Meter Factor"= 0.4STACKING FACTOR COND= 'STACK2' (value = 1.5)- No interleave required
Calculation:
StackingFactor= 1.5FullCarriers= 200 div 50 = 4OrderpickQty= 200 mod 50 = 0OrderpickCarriers= 0FullCarriers= 4 / 1.5 = 2.666...Result= (2.666... + 0) × 0.4 = 1.066... Loading Meters
Result: 1.066... Loading Meters
Example 5: Quantity-Based with Interleave Adjustment
Scenario:
DocumentLine."Handling Unit Type Code"= 'EUR'DocumentLine.Quantity= 150 piecesCarrierTypeUOM."Qty. per UOM Code"= 90 pieces per handling unitCarrierTypeUOM."Qty. per Layer"= 50 piecesCarrierTypeUOM.Height= 0.20 metersCarrierType.Height= 0.15 meters (interleave pallet)CarrierTypeGroup."Loading Meter Factor"= 0.4STACKING FACTOR COND: Not set- Interleave required (
GetInterleaveCarriers= TRUE) - Other lines exist in document
Calculation:
StackingFactor= 1FullCarriers= 150 div 90 = 1OrderpickQty= 150 mod 90 = 60OrderpickCarriers= 60 / 90 = 0.666...- Check interleave:
Qty. per Layer(50) > 0,Quantity(150) >= 50,OrderpickQty(60) <> 0 → TRUE Height= 0.20 metersNoOfLayers= 90 div 50 = 1InterleavePalletHeightFactor= 0.15 / (1 × 0.20 + 0.15) / 1 = 0.15 / 0.35 = 0.428...OrderpickCarriers= 0.666... + 0.428... = 1.095...- Since
OrderpickCarriers>= 1:OrderpickCarriers= 0,FullCarriers= 1 + 1 = 2 FullCarriers= 2 / 1 = 2Result= (2 + 0) × 0.4 = 0.8 Loading Meters
Result: 0.8 Loading Meters
Important Notes
- The weight/volume method uses the maximum of weight and volume factors to ensure both constraints are respected
- The stacking factor reduces the number of handling units needed when items can be stacked more efficiently
- Interleave adjustments only apply when there are other lines in the document and orderpick handling units exist
- When interleave adjustment causes orderpick handling units to exceed 1, it converts to a full handling unit
- Loading meter factor is handling unit type group-specific and must be configured in master data