Functional documentation for the Aiden WMS stock transfer external outbound mapper.
This document describes what happens after the mapper is installed: how a SAP Business One (B1) Stock Transfer Request becomes a WMS OutgoingDocument for picking toward another (often external / non-picking) warehouse, which fields are mapped, and which business rules apply. It is intended for end-users and functional consultants.
1. Overview
|
|
|
|---|---|
|
Source |
SAP B1 stock transfer request / stock transfer document on Kafka |
|
Target |
Aiden WMS Outgoing document ( |
|
Purpose |
Create a WMS outbound pick document so stock can be picked in the from warehouse and sent to the to warehouse |
After installation, when a B1 stock transfer request is published, the mapper produces a WMS document with:
-
Document identity and base type (typically
TransferRequest) -
A synthetic business partner representing the destination (to) warehouse
-
Pick date, handling mode, status
-
Lines to pick from the from warehouse, with destination stored on the line
-
Flag
targetIsExternalbased on whether the destination warehouse is picking-enabled in B1 -
Correlation id for tracking
Fixed / default values
|
WMS field |
Value |
Meaning |
|---|---|---|
|
|
|
Manual handling in WMS |
|
|
|
Partial delivery not enabled by this map |
|
|
|
Fixed address id label |
|
|
|
Always this object type label |
2. What the mapper uses as input
2.1 Main payload — B1 stock transfer document
Typical fields used:
-
Header:
DocNum,DocEntry,DueDate,DocumentStatus,DocObjectCode,FromWarehouse,ToWarehouse, … -
Lines
StockTransferLines[]:-
LineNum,ItemCode,Quantity -
FromWarehouseCode(pick from) -
WarehouseCode(destination to) -
LineStatus,UoMEntry,UoMCode,MeasureUnit -
Optional dynamic line property (name/value); name
U_se_winkelis used for line details
-
DocNum is also used as the integration external application id for monitoring.
2.2 Warehouse master (automatic, hourly)
Loaded from B1:
-
WarehouseCode -
U_AEN_WHS_Picking(Y/N) -
(also retrieved:
DefaultBin,EnableBinLocations)
Business impact: destination warehouse picking flag drives WMS customFields.targetIsExternal (Y/N). Downstream flows (e.g. goods delivery) may use this flag to choose B1 stock transfer vs WMS incoming paths.
2.3 Correlation id
Integration message key → correlation.correlationId.
3. Business behavior
3.1 Direction of warehouses (critical)
|
Concept |
B1 field |
WMS field |
|---|---|---|
|
Pick from |
Line |
|
|
Ship / transfer to |
Line |
|
|
Partner on document |
First line to warehouse |
|
This is the opposite partner convention of the “external → WMS incoming” mapper (which uses from-warehouse as BP). Here the outgoing document is oriented as: pick in from-WH, deliver toward to-WH.
3.2 Business partner = to warehouse
|
WMS field |
Rule |
|---|---|
|
|
First line’s |
|
|
Literal |
Example: first line to warehouse 04 → BP id 04, name To Warehouse 04.
B1 CardCode / CardName are not used for these BP fields.
3.3 Base type
data.baseType comes from B1 DocObjectCode:
|
B1 |
WMS |
|---|---|
|
|
|
|
|
|
|
Other |
|
Stock transfer requests typically use 1250000001 → TransferRequest.
3.4 Target is external (targetIsExternal)
data.customFields.targetIsExternal is set to Y or N by looking up the destination warehouse (line WarehouseCode) in the warehouse master and reading U_AEN_WHS_Picking:
|
Destination warehouse |
Typical |
|---|---|
|
Not picking ( |
|
|
Picking-enabled ( |
|
(Implementation uses if-else / equal against warehouse codes and picking flags, with constants Y/N.)
Consultant meaning: if the to warehouse is not a normal Aiden picking warehouse, the target is flagged external so other integrations know how to complete the move (e.g. post B1 stock transfer vs create WMS incoming).
3.5 Status
|
Level |
B1 field |
Transformation |
WMS field |
|---|---|---|---|
|
Header |
|
Strip prefix |
|
|
Line |
|
Strip |
|
|
B1 line value |
WMS line status |
|---|---|
|
|
|
|
|
|
3.6 Unit of measure
For each line:
-
If
UoMEntryis not-1→ useUoMCode -
If
UoMEntryis-1→ use"m" + MeasureUnit(missing measure → empty → often justm)
3.7 Dates and handling
|
WMS field |
Source |
|---|---|
|
|
|
|
|
|
|
|
Constant |
|
|
Constant |
3.8 Line details (U_se_winkel)
If a line dynamic property has name U_se_winkel, its value is mapped to lines[].details.
This is hard-coded in the mapping (not a free config property in this project).
3.9 Address
data.address.addressId is constant Transfer (no full ship-to address block from B1 in this map).
4. Field mapping tables
Columns: WMS output field | B1 / source input | What happens | Notes
4.1 Correlation
|
WMS output field |
B1 / source input |
What happens |
Notes |
|---|---|---|---|
|
|
Integration message key |
Direct |
Tracing |
4.2 Document header (data)
|
WMS output field |
B1 / source input |
What happens |
Notes |
|---|---|---|---|
|
|
|
Direct |
|
|
|
|
Valuemap — see §3.3 |
Often |
|
|
|
Direct |
|
|
|
— |
Constant |
|
|
|
|
Strip |
|
|
|
— |
Constant |
|
|
|
— |
Constant |
|
|
|
|
Direct |
|
|
|
— |
Constant |
|
|
|
Dest. WH |
|
See §3.4 |
4.3 Business partner (to warehouse)
|
WMS output field |
B1 / source input |
What happens |
Notes |
|---|---|---|---|
|
|
First line |
first-items |
To warehouse |
|
|
|
concat + first-items |
Synthetic |
|
B1 |
— |
Not used for BP |
|
4.4 Lines (data.lines[])
|
WMS output field |
B1 / source input |
What happens |
Notes |
|---|---|---|---|
|
|
|
Direct |
|
|
|
|
Direct |
|
|
|
|
Direct |
From / pick warehouse |
|
|
|
Direct |
To warehouse |
|
|
|
Direct |
|
|
|
|
Direct |
|
|
|
|
Conditional — §3.6 |
|
|
|
|
Strip |
|
|
|
Header |
Direct |
|
|
|
— |
Constant |
|
|
|
Property |
if-else / equal on property name |
Optional |
5. Value translations (reference)
5.1 Doc object code → baseType
|
B1 |
WMS |
|---|---|
|
|
|
|
|
|
|
Other |
|
5.2 Status (lines)
|
B1 |
WMS |
|---|---|
|
|
|
|
|
|
5.3 Constants
|
Constant |
Usage |
|---|---|
|
|
handling |
|
|
partialDelivery |
|
|
address.addressId |
|
|
customFields.objectType |
|
|
BP name prefix |
|
|
Line detail property name |
|
|
targetIsExternal |
|
|
UoM fallback |
6. What is not mapped / caveats
|
Topic |
Behavior |
|---|---|
|
B1 card as BP |
Not used; to-warehouse is BP |
|
Full ship-to address |
Only fixed |
|
Serial/batch arrays on B1 lines |
Not expanded into WMS batch/serial line structures here |
|
Bin allocations |
Not mapped on outgoing WMS lines |
|
Prices |
Not mapped |
|
Header status Close→Closed |
Header only strips |
|
Opposite flow |
External incoming STR uses a different project ( |
7. Example (from mapping sample)
B1 input (excerpt)
|
Field |
Example |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Line |
Item |
Warehouse master (excerpt)
|
Warehouse |
|
|---|---|
|
|
|
|
|
|
Expected WMS shape (from mapping rules)
|
WMS field |
Expected |
|---|---|
|
Endpoint |
|
|
|
|
|
|
|
|
BP id / name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Line |
|
|
Line |
|
|
Line item / qty |
|
|
Line |
|
|
Line status |
|
8. End-to-end expectation
-
B1 creates a stock transfer request from an internal picking warehouse to another (often external) warehouse.
-
Document is published to Kafka.
-
Integration loads warehouse picking flags and maps to WMS OutgoingDocument.
-
WMS picks from from warehouse; destination is carried as to-warehouse / external flag.
-
Downstream confirmation flows use
objectType/targetIsExternalas designed. -
Trace with correlation id,
DocNum, andDocEntry.
9. Implementation checklist for consultants
-
Use
DocObjectCode1250000001for STRs sobaseType = TransferRequest. -
Set
U_AEN_WHS_Pickingcorrectly: destination non-picking warehouses should yieldtargetIsExternal = Y. -
Train users: WMS pick warehouse = from; partner/to-warehouse = to.
-
Maintain UoM; know
-1→m+ measure unit fallback. -
If shop/line text is needed, fill B1 line property
U_se_winkel. -
Do not confuse this project with stocktransfer-external-wms (IncomingDocument / from-warehouse BP).
-
Trace with correlation id + DocEntry/DocNum.
10. Source artifacts
|
Artifact |
Role |
|---|---|
|
|
MapForce mapping |
|
|
MapForce project |
|
|
B1 input contract |
|
|
WMS outgoing contract |
|
|
Warehouse master |
|
|
Kafka in/out, |
|
|
Hourly warehouse load |
|
|
MapForce runner |
Generated from the mapping definition and integration routes in this project. If the MapForce mapping or warehouse rules change, update this document.
Maintaining this document
For the original documentation intent, when to update, source-of-truth checklist, and a ready-made refresh prompt, see README.md and the repository AGENTS.md.