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.
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.
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.
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.
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.
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. |
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.
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.extract_theobald.ps1
script and the config.json
file. Unzip the content on the server where Theobald Xtract Universal is installed.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 |
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 |
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
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'
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
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
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
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.
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
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.
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
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
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'
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'
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")
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 |
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 |
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 |
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 |
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")
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")
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 |
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")
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")
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 |
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")
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")
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")
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")
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")
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")
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")
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")
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")
Input table for Decimal Places in Currencies.
Field | Type | Description |
---|---|---|
CURRKEY |
text | Currency identifier (Primary Key) |
CURRDEC |
integer | Number of decimal places |
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'
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'
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 |
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 |
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'
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'
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")
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")
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 |
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 |
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.
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. |
The following shows all entities that intervene in the process that were used for the process.
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 |
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. |
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.
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.
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
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’.
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.
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.
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.