SAP Warehouse Management

Process description

This app template generates a process mining model for the SAP Warehouse Management module. The scope of this app template is the End-to-end Warehouse Operation process; from the creation of a Delivery or a Transfer Requirement to the confirmation or cancellation of the Transfer Order.

There are two available paths to relate LTAP, MSEG and LIPS entities, depending on whether the transfer order was related to a Procurement or a Sales order process. The arrows in the model are indicating these two paths. When a Procurement is done, the document that triggers the Transfer order is based on the Goods receipt document (MSEG), therefore, the path followed to link them is LTAP --> MSEG. Conversely, when a Sales order is triggering the Transfer order, the relationship stored in the system is in the LTAP table (LTAP --> LIPS). MSEG and LIPS tables are always connected the same way regardless of the process.

Delivery

Based on either a Purchase Order or a Sales Order, an Inbound or Outbound delivery is generated in the system, respectively, specifying the amount of items to be moved, weight, location along with other relevant details. Deliveries are mandatory for sales order processes but they may only apply to certain scenarios for Procurement.

Transfer Requirements

These documents can be created based on a Goods receipt event or without any other activity happening before. As the name states, these are used for requesting material movements in the warehouse.

Transfer Order

Either based on a Delivery, a Transfer requirement or a posting change, a Transfer order is created in order to execute the actual movement of stock out of the Source bin. Once the movement is completed the Transfer order is confirmed in the system, specifying the actual stock received in the Destination bin.

Material document

When materials arrive to the facilities, a Goods receipt is generated in the system, creating a material document. Also, when dealing with sales orders, once the transfer order is executed and confirmed, the corresponding accounting documents are created registering the Goods issue movements from the Warehouse.

Available tags & due dates

Current out of the box tags initially require no configuration, but in case any custom activity names are used, they should be added into the Tags_preprocessing transformation in addition or replacing current values.

Tag Description Business Value
Open TO TOs that were not confirmed There could be that some master data is missing and they cannot close the TO.
Canceled TO TOs that were canceled Cancellations of TOs are never a good indicator that the processes are working as expected. They may have been canceled based on errors in deliveries that need to be reversed, or goods receipts that were incorrectly done, etc.
Material document reversal Flags all TOs related to Material movement reversals All these transactions are executed to reverse something that shouldn't have happened in the first place. So all of it is something that needs to be removed as much as possible.
Transfer to the same storage bin Flags all cases where the Source storage bin is the same as the Destination storage bin These transactions may not be efficient and may require attention from the analyst as they may not be moving materials anywhere.
Actual quantity and target quantity are not equal Destination actual quantity does not match with Destination target quantity Differences between the expected and the actual quantities transferred may indicate inefficiencies in the process. They may be related to issues with the source quantity or with the way materials are stored in the warehouse.
Reversal movement Cases that had a Goods movement reversed These activities are inefficient by nature and require attention to reduce its number to a minimum. They could be part of a return of materials or they could be a reversal of the goods movement.

Current out of the box due dates initially require no configuration, but in case any custom due dates names are used, they should be added or changed into the Due_dates_preprocessing transformation in addition or replacing current values.

Due date Description Business Value
TR Execution Time for the TR's related TO to be confirmed Validate that the warehouse is working within the timeline set for their activities
TR creation to TO creation Due date that tracks the time it takes to create a TO since the TR was created. This is a good indicator of the response time in the Warehouse. It could be used to focus the attention on those scenarios where the delays are more prominent
Outbound delivery to TO Execution Time that takes to warehouse to execute a TO since the outbound delivery was placed This is another good indicator of how long the company takes to execute a TO for a delivery. Shorter times are always welcomed.
Goods receipt to stock Time that takes to execute a TO since the goods receipt was done This is the time it takes to move materials into stock. As mentioned before, faster is better.

Extraction

Extraction tool configuration

The data extraction is developed for SAP and is using Theobald Xtract Universal. In general, you should follow the steps as described in Loading Data Using Theobald Xtract Universal (Automation Cloud) to set up data loading using Theobald Xtract Universal. Note: If you are using Automation Suite, make sure to select AUTOMATION SUITE as the DELIVERY option on the documentation page. In addition, select the Automation Suite version you are using to open the appropriate Loading Data Using Theobald Xtract Universal page.

Importing the template extractions

  1. Download the XU_template_extractions.zip file with template extractions for Automation Cloud or the XU_template_extractions_as.zip file with template extractions for Automation Suite.
  2. This file contains the folders destinations, extractions, and sources. Copy the folders from the downloaded zip file to the config folder of Xtract Universal. The location of this folder is [XU_installation_path]/config.
  3. Open Xtract Universal Designer and click on the refresh button to load all extractions.

Configuring the extraction script

  1. Download the extract_theobald.zip file to load data for Automation Cloud or extract_theobald_as.zip to load data for Automation Suite.
  2. This file contains the extract_theobald.ps1 script and the config.json file. Unzip the content on the server where Theobald Xtract Universal is installed.
  3. Configure the variables for the script.

Input data

Input types

The following table provides an overview of the different field types and their default format settings.

Field type Description
boolean true, false, 1, 0
date YYYYMMDD
time hhmmss
double Decimal separator: . (dot); thousand separator: none
integer Thousand separator: none
text N/A

Input tables & fields

Transactional Data Master Data
CDHDR ADCP
CDPOS ADRP
LIKP CSKT
LIPS KNA1
LTAK LFA1
LTAP MAKT
LTBK T001
LTBP T001L
MKPF T001W
MSEG T003T
T005T
T005U
T006A
T008T
ADCP
ADRP
MAKT
MBEW
T001
T001K
T001W
T003T
T006A
T156
T156T
T158W
T300
T300T
T301T
T302T
T308T
T333B
T333T
T646S
TCURF
TCURR
TCURX
TTZCU
TTZD
TTZDF
TTZR
TTZZ
TVAPT
TVLKT
USR02
USR21

Transactional tables

CDHDR

Header input table for object changes.

Field Type Description
MANDANT text Client Identifier (Primary Key)
CHANGENR text Change record identifier (Primary Key)
OBJECTCLAS text Object class category (Primary Key)
OBJECTID text Object value (Primary Key)
UDATE date Date the change was executed
UTIME time Time the change was executed
USERNAME text User who executed the change

Filtering: Date: UDATE

CDPOS

Log table for field change events for Work Orders, Operations and Notifications.

Field Type Description
TABKEY text Change table record identifier (Primary Key)
CHNGIND text Identifies the type of change made (insertion, update) (Primary Key)
MANDANT text Client Identifier (Primary Key)
CHANGENR text Change record identifier (Primary Key)
FNAME text Field which was updated (Primary Key)
OBJECTCLAS text Object class category (Primary Key)
OBJECTID text Object value (Primary Key)
TABNAME text Table name where the change was executed (Primary Key)
VALUE_NEW text Value which was updated into the table
VALUE_OLD text Value which was updated out of the table

Filtering: FNAME != 'KEY', TABNAME = 'LIPS'

LIKP

Input table for Delivery Headers, containing Delivery Headers properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
VBELN text Delivery Header Identifier (Primary Key)
ERDAT date Indicates the date on which the record was created
ERZET time Indicates the time on which the record was created
ERNAM text Indicates the name of the person who created the record
LFART text Foreign key which identifies the delivery type

Filtering: Date: ERDAT

LIPS

Input table for Delivery Items, containing Delivery Items properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
POSNR text Delivery Item Identifier (Primary Key)
VBELN text Delivery Header Identifier (Primary Key)
LGMNG double Indicates the actual quantity delivered in stock keeping units
ERDAT date Indicates the date on which the record was created
ERZET time Indicates the time on which the record was created
ERNAM text Indicates the name of the person who created the record
PSTYV text Foreign key which identifies the delivery item category
MEINS text Foreign key which identifies the base unit of measure

Filtering: Date: ERDAT

LTAK

Input table for Transfer Order Headers, containing Transfer Order Headers properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
TANUM text Transfer Order Header Identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
BDATU date Indicates the date on which the transfer order was created
BZEIT time Indicates the time on which the transfer order was created
BNAME text Indicates the user name
MBLNR text Material Document Identifier
MJAHR text Material Document Year Identifier
BWLVS text Foreign key which identifies the movement type
TRART text Foreign key which identifies the shipment type
TBNUM text Transfer Requirement Header Identifier

Filtering: Date: BDATU

LTAP

Input table for Transfer Order Items, containing Transfer Order Items properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
TAPOS text Transfer Order Item Identifier (Primary Key)
TANUM text Transfer Order Header Identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
PQUIT text Indicates if the transfer order confirmation is complete
QDATU date Indicates the date by which the Transfer Order should be confirmed
QZEIT time Indicates the time by which the Transfer Order should be confirmed
QNAME text Indicates the user name for the Transfer Order confirmation
POSNR text Delivery Item Identifier
VBELN text Delivery Header Identifier
NISTM double Indicates the destination actual quantity in stock keeping unit
NLPLA text Indicates the destination storage bin
NLBER text Foreign key which identifies the destination storage section
NLTYP text Foreign key which identifies the destination storage type
NSOLM double Indicates the destination target quantity in stock keeping unit
WEPOS text Indicates the goods receipt item
WENUM text Indicates the goods receipt number
MBPOS text Material Document Item Identifier
MATNR text Foreign key which identifies the material number
PVQUI text Indicates if the material pick has been confirmed
MEINS text Foreign key which identifies the base unit of measure
EDATU date Indicates the date by which the Transfer Order should be pick confirmed
EZEIT time Indicates the time by which the Transfer Order should be pick confirmed
ENAME text Indicates the user name for the Transfer Order pick confirmation
WERKS text Foreign key which identifies the plant or valuation area
VISTM double Indicates the source actual quantity in stock keeping unit
VLPLA text Indicates the source storage bin
VLBER text Foreign key which identifies the source storage section
VLTYP text Foreign key which identifies the source storage type
VSOLM double Indicates the source target quantity in stock keeping unit
VORGA text Indicates the transfer procedure
TBPOS text Transfer Requirement Item Identifier

Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with LTAK table to bring the filter by date when loaded from source.

LTBK

Input table for Transfer Requirement Headers, containing Transfer Requirement Headers properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
TBNUM text Transfer Requirement Header Identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
BDATU date Indicates the date on witch the transfer requirement was created
BZEIT time Indicates the time on witch the transfer requirement was created
BNAME text Indicates the user name
TBKTX text Indicates the header text of the transfer requirement
PDATU date Indicates the planned date by which the Transfer Requirement should be executed
PZEIT time Indicates the planned time by which the Transfer Requirement should be executed
BETYP text Foreign key which identifies the requirement type
TBPRI text Indicates the transfer priority

Filtering: Date: BDATU

LTBP

Input table for Transfer Requirement Items, containing Transfer Requirement Items properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
TBPOS text Transfer Requirement Item Identifier (Primary Key)
TBNUM text Transfer Requirement Header Identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
MEINS text Foreign key which identifies the base unit of measure
MENGE double Transfer requirement quantity in stock keeping unit

Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was join with LTBK table to bring the filter by date when loaded from source.

MKPF

Input table for Material Document Headers, containing Material Document Headers properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
MBLNR text Material Document Identifier (Primary Key)
MJAHR text Material Document Year Identifier (Primary Key)
CPUDT date Indicates the date on witch the accounting document was entered
CPUTM time Indicates the time on witch the accounting document was entered
BLART text Foreign key which identifies the document type
VGART text Foreign key which identifies the transaction type
USNAM text Indicates the user name

Filtering: Date: CPUDT

MSEG

Input table for Material Document Items, containing Material Document Items properties.

Field Type Description
MANDT text Client Identifier (Primary Key)
ZEILE text Material Document Item Identifier (Primary Key)
MBLNR text Material Document Identifier (Primary Key)
MJAHR text Material Document Year Identifier (Primary Key)
CPUDT_MKPF date Indicates the date on which the accounting document was entered
CPUTM_MKPF time Indicates the time on which the accounting document was entered
KZVBR text Indicates the consumption posting
VBELP_IM text Delivery Item Identifier
VBELN_IM text Delivery Header Identifier
MATNR text Foreign key which identifies the material number
KZBEW text Movement indicator
BWART text Foreign key which identifies the movement type
EBELP text Indicates the purchase order item
EBELN text Indicates the purchase order number
KZZUG text Receipt indicator
SOBKZ text Special stock indicator
TBPOS text Transfer Requirement Item Identifier
TBNUM text Transfer Requirement Header Identifier
USNAM_MKPF text Indicates the user name
WERKS text Foreign key which identifies the plant or valuation area
BWTAR text Indicates the valuation type

Filtering: Date: CPUDT_MKPF

Master data tables

ADCP

Input table for Person/Address Assignment (Business Address Services) data.

Field Type Description
ADDRNUMBER text Address Number of the Business (Primary Key)
CLIENT text Client Identifier (Primary Key)
DATE_FROM date Date from which record applies (Primary Key)
NATION text Identifier for international addresses
PERSNUMBER text Identifier of the person/user (Primary Key)
DATE_TO date Date to which record applies
DEPARTMENT text Department the user is assigned to
FUNCTION text Function or role of the user

Filtering: NATION = '' or NATION = 'I'

ADRP

Input table for Persons (Business Address Services) data.

Field Type Description
CLIENT text Client Identifier (Primary Key)
DATE_FROM date Date from which record applies (Primary Key)
NATION text Identifier for International Addresses (Primary Key)
PERSNUMBER text Identifier of the person/user (Primary Key)
DATE_TO date Date to which record applies
NAME_FIRST text Name of the User
NAME_LAST text Last name of the User

Filtering: NATION = '' or NATION = 'I'

MAKT

Input table for Material Descriptions data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
MATNR text Material Number Identifier (Primary Key)
MAKTX text Material description

Filtering: SPRAS = var("language")

MBEW

Input table for Material Valuation data.

Field Type Description
MANDT text Client Identifier (Primary Key)
MATNR text Material Number Identifier (Primary Key)
BWKEY text Valuation Area (Primary Key)
BWTAR text Valuation Type
VERPR double Moving average price/Periodic unit price
PEINH double Unit price
STPRS double Standard price
T001

Input table for Company Codes data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BUKRS text Company Code (Primary Key)
WAERS text Foreign key which identifies the currency key
T001K

Input table for Valuation area data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BWKEY text Valuation Area (Primary Key)
BUKRS text Company Code
T001W

Input table for Plants/Branches data.

Field Type Description
MANDT text Client Identifier (Primary Key)
WERKS text Plant Code identifier (Primary Key)
NAME1 text Plant name
BWKEY text Valuation Area
T003T

Input table for Document Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BLART text Document Type Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
LTEXT text Document Type description

Filtering: SPRAS = var("language")

T006A

Input table for Measurement unit data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
MSEHI text Measurement unit (Primary Key)
MSEHT text Measurement unit description

Filtering: SPRAS = var("language")

T156

Input table for Movement Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BWART text Movement Type Identifier (Primary Key)
SHKZG text Debit/Credit indicator
XSTBW text Reversal movement type
T156T

Input table for Movement Type descriptions data.

Field Type Description
MANDT text Client Identifier (Primary Key)
KZVBR text Consumption Posting (Primary Key)
SPRAS text Language key identifier (Primary Key)
KZBEW text Movement indicator (Primary Key)
BWART text Movement Type Identifier (Primary Key)
KZZUG text Receipt indicator (Primary Key)
SOBKZ text Special stock indicator (Primary Key)
BTEXT text Movement Type description

Filtering: SPRAS = var("language")

T158W

Input table for Transaction/Event Type data.

Field Type Description
SPRAS text Language key identifier (Primary Key)
VGART text Transaction Type (Primary Key)
LTEXT text Transaction Type description

Filtering: SPRAS = var("language")

T300

Input table for Warehouse Numbers data.

Field Type Description
MANDT text Client Identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
REGKZ text Region Code
T300T

Input table for Warehouse Numbers Descriptions data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
LNUMT text Warehouse number description

Filtering: SPRAS = var("language")

T301T

Input table for Storage Type Descriptions data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
LGTYP text Storage Type (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
LTYPT text Storage Type´s name

Filtering: SPRAS = var("language")

T302T

Input table for Storage Section Names data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
LGBER text Storage Section (Primary Key)
LGTYP text Storage Type (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
LBERT text Storage Area's name

Filtering: SPRAS = var("language")

T308T

Input table for Requirement Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
BETYP text Requirement Type (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
BTYPT text Requirement Type description

Filtering: SPRAS = var("language")

T333B

Input table for Transfer Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
TRART text Shipment Type (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
TRATX text Shipment Type description

Filtering: SPRAS = var("language")

T333T

Input table for WM Movement Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
BWLVS text Movement Type (Primary Key)
LGNUM text Warehouse Identifier (Primary Key)
LBWAT text Flow type name

Filtering: SPRAS = var("language")

T646S

Input table for Region Codes data.

Field Type Description
MANDT text Client Identifier (Primary Key)
SPRAS text Language key identifier (Primary Key)
REGKZ text Region Code (Primary Key)
REGKT text Region name

Filtering: SPRAS = var("language")

TCURF

Input table for Conversion Factors data.

Field Type Description
MANDT text Client Identifier (Primary Key)
KURST text Exchange rate type used for the conversion (Primary Key)
FCURR text Original currency (Primary Key)
GDATU date Date in which the record was created (Primary Key)
TCURR text Destination currency of the exchange rate (Primary Key)
FFACT double Ratio for the "From" Currency Units
TFACT double Ratio for the "To" Currency Units

Filtering: KURST = var("exchange_rate_type")

TCURR

Input table for Exchange Rates data.

Field Type Description
MANDT text Client Identifier (Primary Key)
KURST text Exchange rate type used for the conversion (Primary Key)
FCURR text Original currency (Primary Key)
TCURR text Destination currency of the exchange rate (Primary Key)
GDATU date Date on which the exchange rate is valid (Primary Key)
UKURS text The absolute exchange rate on the specific date

Filtering: KURST = var("exchange_rate_type")

TCURX

Input table for Decimal Places in Currencies.

Field Type Description
CURRKEY text Currency identifier (Primary Key)
CURRDEC integer Number of decimal places
TTZCU

Input table for Customizing time zones.

Field Type Description
CLIENT text Client Identifier (Primary Key)
FLAGACTIVE text Indicates active records
TZONESYS text Foreign key identifying the system time zone
TZONEDEF text Foreign key identifying the default time zone for user

Filtering: FLAGACTIVE = 'X'

TTZD

Input table for Summer time rules.

Field Type Description
CLIENT text Client Identifier (Primary Key)
DSTRULE text Daylight saving time rule (Primary Key)
FLAGACTIVE text Indicates active records
DSTDIFF text Indicates the difference between daylight saving time and winter time

Filtering: FLAGACTIVE = 'X'

TTZDF

Input table for Summer time rules (fixed annual dates).

Field Type Description
CLIENT text Client Identifier (Primary Key)
DSTRULE text Daylight saving time rule (Primary Key)
YEARACT integer Valid for year (Primary Key)
DATEFROM date Starting date for the daylight saving time
TIMEFROM time Starting time for the daylight saving time
DATETO date Ending date for the daylight saving time
TIMETO time Ending time for the daylight saving time
TTZDV

Input table for Summer time rules (variable dates).

Field Type Description
CLIENT text Client Identifier (Primary Key)
DSTRULE text Daylight saving time rule (Primary Key)
YEARFROM integer Valid from year (Primary Key)
MONTHFROM text Starting month for the daylight saving time
WEEKDFROM text Starting day of the week for the daylight saving time
WEEKDCFROM text Starting weekday in month (occurrence number) for the daylight saving time
TIMEFROM time Starting time for the daylight saving time
MONTHTO text Ending month for the daylight saving time
WEEKDTO text Ending day of the week for the daylight saving time
WEEKDCTO text Ending weekday in month (occurrence number) for the daylight saving time
TIMETO time Ending time for the daylight saving time
TTZR

Input table for Time zone rules.

Field Type Description
CLIENT text Client Identifier (Primary Key)
ZONERULE text Time zone rule (Primary Key)
FLAGACTIVE text Indicates active records
UTCDIFF text Indicates the difference of time zone from UTC
UTCSIGN text Indicates the sign of the difference from UTC

Filtering: FLAGACTIVE = 'X'

TTZZ

Input table for Time zones.

Field Type Description
CLIENT text Client Identifier (Primary Key)
TZONE text Time zone (Primary Key)
FLAGACTIVE text Indicates active records
ZONERULE text Indicates the time zone rule
DSTRULE text Indicates the daylight saving time rule

Filtering: FLAGACTIVE = 'X'

TVAPT

Input table for Sales document item categories data.

Field Type Description
MANDT text Client Identifier (Primary Key)
PSTYV text Delivery Item Category (Primary Key)
SPRAS text Language key identifier (Primary Key)
VTEXT text Delivery Item Category description

Filtering: SPRAS = var("language")

TVLKT

Input table for Delivery Type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
LFART text Delivery Type (Primary Key)
SPRAS text Language key identifier (Primary Key)
VTEXT text Delivery Type description

Filtering: SPRAS = var("language")

USR02

Input table for User type data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BNAME text User key identifier (Primary Key)
TZONE text Time Zone
USTYP text Classification of the user
USR21

Input table for User Name/Address Key Assignment data.

Field Type Description
MANDT text Client Identifier (Primary Key)
BNAME text User key identifier (Primary Key)
ADDRNUMBER text Address Number of the Business
KOSTL text User's cost center
PERSNUMBER text Identifier of the person/user

Configuring transformations

Seed files

The Activity configuration, Transfer procedure description, User type seed files are provided as examples, and should be modified according to business requirements.

To set automated activities, the analyst should use the Activity configuration and User type seed files.

Activity configuration can also be used to translate activities and assign activity order.

Transfer procedure description is used to populate transfer procedure's descriptions. The seed file contains all standard codes used for the process, thus, there will not be any need to maintain. However, if the SAP Client contains specific codes, they should be included in the seed file. Each record needs the Transfer_procedure and Description fields.

Dbt variables

Variable Type Description
date_format string Specifies the format variable for converting to date depending on the destination.
language string This variable specifies the system language, set accordingly to the default SAP system language. Default value is E (English).
start_date date Valid start date for both Snowflake and SQL Server.
exchange_rate_type string Defines the exchange rate to be applied on client currency in order to convert it into a single currency. Default value is M.
display_currency string This variable defines the currency to be displayed. Default value is USD.
null_time_replacement time Specifies the value to be replaced in the null time values. Default value is 23:59:59.
TR_to_TO_creation_due_date integer Amount of minutes it should take to create a TO after the TR was created. The variable's unit of measure should be minutes. Default value is '360' that are 6 hours.
Outbound_delivery_to_TO_execution_due_date integer Amount of minutes it should take to execute a TO after the Outbound delivery was created. The variable's unit of measure should be minutes. Default value is 360 that are 6 hours.
Goods_receipt_to_stock_due_date integer Amount of minutes it should take to execute a TO after the Goods receipt was done. The variable's unit of measure should be minutes. Default value is 360 that are 6 hours.

Design specifications

Entities

The following shows all entities that intervene in the process that were used for the process.

Entity Relationship Diagram

Process entities

Entity Input Data
Transfer Order Items LTAP, LTAK
Transfer Order Header LTAK
Delivery Header LIKP
Delivery Items LIPS
Transfer Requirement Header LTBK
Transfer Requirement Items LTBP
Material Document Headers MKPF
Material Document Items MSEG

Activities

Activity Entity Description
Create inbound/outbound delivery Delivery Headers The inbound/outbound delivery is created, based on the creation date.
Create delivery item Delivery Items The delivery item is created, based on the creation date.
Change delivery gross weight Delivery Items Delivery gross weight is changed, based on the change log where FNAME = BRGEW.
Change delivery net weight Delivery Items Delivery net weight is changed, based on the change log where FNAME = NTGEW.
Change delivery quantity Delivery Items Delivery quantity is changed, based on the change log where FNAME = LGMNG.
Create transfer requirement Transfer Requirement Headers The transfer requirement is created, based on the creation date.
Create transfer requirement item Transfer Requirement Items The transfer requirement item is created, based on the creation date.
Create transfer order Transfer Order Headers The transfer order is created, based on the creation date.
Create transfer order item Transfer Order Items The transfer order item is created, based on the creation date.
Pick transfer order Transfer Order Items The transfer order item is picked, based on the EDATU and EZEIT fields.
Confirm transfer order item Transfer Order Items The transfer order item is confirmed, based on the PQUIT and VISTM fields.
Cancel transfer order item Transfer Order Items The transfer order item is cancelled, based on the PQUIT and VISTM fields.
Create goods movement Material Document Headers The goods movement is created, based on the creation date.
Post goods receipt Material Document Items Goods receipt was posted, based on the SHKZG and XSTBW fields.
Post goods issue Material Document Items Goods issue was posted, based on the SHKZG and XSTBW fields.
Reverse goods receipt Material Document Items Goods receipt was reversed, based on the SHKZG and XSTBW fields.
Reverse goods issue Material Document Items Goods issue was reversed, based on the SHKZG and XSTBW fields.

Design details

This app template generates the model for any type of business process that impacted in warehouse management. In other words, It will generate all relevant activities for business processes like Purchase-to-pay, Order-to-cash, Inventory-movements. The origin of the movement can be identify by using Case_type and Transfer_procedure fields.

Transfer orders, once completed, cannot be undone if something went wrong. To do so, the system creates a new Transfer order to revert back what was done incorrectly. The model has as a Case_id the Transfer order item, meaning that for scenarios like the above mentioned, they will show up in 2 different cases. There were tags created to specifically identify cases like these.

MSEG Movement Activity

The type of document being registered in MSEG is determined based on a standard SAP list of possible movement types, each representing either a Debit or Credit of materials, along with a reversal identifier. Based on this list, the Movement activity field in the MSEG is populated and later used to create the corresponding activity.

LIKP Creation Activity

SAP uses different numbering conventions when creating Outbound and Inbound deliveries; identifying what type of delivery will be executed is necessary for a proper understanding of the following process. Based on the previously mentioned numbering convention, the Creation Activity is populated in LIKP and later used to create the corresponding activity.

Note: In some specific cases the timestamp for an activity might need a correction due to the timestamp is created based on the Users timezone. This happens with the following entities:

Note regarding time zone conversions

In SAP ECC, there are specific date/time fields that are recorded in user’s time zone instead of server’s. These fields are being used for all activities related to the following entities:

Specific logics in supporting models were created to convert these timestamps into server’s time zone to avoid discrepancies between timestamps of the activities (activities happening in an order that is impossible).

These logics adjust the following:

  1. Time zone difference (in minutes) between each user and the SAP server
  2. Summertime rule applied to the user (as this will affect the time zone difference calculated before)
  3. Summertime rule applied to the server (as this will also affect the time zone difference calculated before)

1. Time zone difference (in minutes) between each user and the SAP server

This logic works by calculating the UTC time for both, the user and server. After that, it brings the difference between both in minutes. Finally, this difference is applied to the corresponding SAP fields that are stored in the user’s timezone.

Example 1:

Consider the following scenario.
    1. The server is in Brazil (GMT-3) and a Goods Receipt is done at 9:30:00 AM BR (that is the timestamp that will be stored in the system)
    2. 2 minutes after that, User1 who's based in Chile (GMT-4) creates the transfer order (8:32:00 AM CH)

If the logic is not applied, then the activities would be order as follows:
    1. Create transfer order (8:32 AM CH)
    2. Post goods receipt (9:30 AM BR)
This cannot ever happen in a system as the goods receipt is the trigger for the creation of the transfer order.

The supporting model will adjust the records to the server’s timezone, adding or subtracting the corresponding difference (in this case, it is needed to add 1 hour to the event):
    1. Post goods receipt (9:30 AM BR)
    2. Create transfer order (9:32 AM BR)

2 & 3. Summertime rules applied to the user and to the server

These two summertime rule logics are also applied to consider those cases where the original time zone was modified in summertime.

They work as follows:

First, convert the record in user’s time to server’s (see bullet 1). Then, adjust the record with the user summertime rule, if applicable. Finally, adjust the record with the server summertime rule, if applicable.

Example 2:

Consider the following scenario.
    1. User1 is in Chile (GMT-4) and summertime rule does not apply (then, still in GMT-4)
    2. The server is in Brazil (GMT-3) and summertime rule applies (then, GMT-2)
    3. User1 creates the transfer order at 8:32:00 AM chilean local time
    
The correct value for the execution time should be 10:32:00 AM, brazilian local time.

The conversion process will apply all 3 logics as follows:
    1. For time zone conversion: the logic adds 60’ (GMT-4 vs GMT-3)
    2. For summertime rule applied to the user, the logic subtracts 0’ (summertime rule is not active in Chile)
    3. For summertime rule applied to the server, the logic adds 60’ (GMT-3 vs GMT-2)

As a result, the total addition is 120’.

Limitations, known issues, common problems

Limitations

Transaction orders do not store the value of the materials being transferred. Therefore the Material Valuation table (MBEW) is used to estimate their value. This table has the latest value for each material as it gets updated regularly. This means that all cases will have a valuation that is the latest they could have (regardless of the actual value they had at the moment of the execution).

To convert the value to the selected currency, the latest available currency conversion value is also applied on the valuation of the material. This logic will avoid issues when converting values from an unstable currency (higher values of inflation).

Example: Take Argentina, with a 100% inflation rate per year: 3 years ago it started with a conversion rate ARS/USD of 10 and ended up with 80. The same will happen with the valuation of the product. The product started costing 10 ARS 3 years ago (1 USD); therefore you’ll have the product costing 80 ARS now (still 1 USD,). The only value that MBEW provides is the current 80 ARS. If we take the currency conversion from 3 years ago and apply it to that we’ll get a valuation of 80/10 = 8 USD which is incorrect. Therefore the latest currency conversion is applied.

No Event Start SAP does not store the start time for each transactional or change activity.

Disconnect between MSEG and LTAP There are certain putaway processes that do not store the required foreign keys to link MSEG and LTAP tables. For these cases, material document activities are missing. There were no alternatives to generate this relationship that were applicable all the time.

Known issues

In Warehouse Management specific tables, such as LTAK or LTAP, the timestamp is created based on the Users timezone, set on the users own profile. This leads to issues relating activities from other entities, which use the server time, when interpreting the process. In order to correct this issue, the timestamps for these specific tables are corrected to the server timezone, using the Users current timezone. Additionally, this logic also considers the possibility for Summertime difference, which apply regularly during the year for different regions, and shift the timezone by, usually, one hour. But if a User changes their timezone, it will change the timestamp for all their actions. Therefore, previously activities will have the incorrect timestamp.

Common problems

Data not recorded in CDHDR/CDPOS objects Change events have to be configured in the environment in order to be tracked; these configurations are not retroactive to previously registered records.