| Status | Lead Approval |
|---|---|
| Owner | |
| Stakeholders |
Purpose
The purpose of this document is to define the conversion approach to create 9040 - Purchasing Contracts in S/4 HANA.
A purchasing contract is a legally-binding purchase agreement that contains special conditions that are negotiated between a buyer and a seller, covering the supply of goods or the performance of services. The contract is valid for a specific period, during which goods and services are released against the contract. The purchasing contract enables buyers to create purchasing contracts for frequently procured goods or services. A released contract can be used as a source of supply for the procurement of goods or services through a purchase order, a goods and service acknowledgement or a supplier invoice. The releases made against the contract by these documents are updated in the contract..
In SAP, contracts are of two types:
- Quantity Contracts (Contract type MK)
- Value Contracts (Contract type WK)
A quantity contract is defined as the type of contract where the total quantity to be ordered during the validity period of the contract is known in advance. The contract is regarded as fulfilled when release orders totaling a given quantity have been issued.
When material is required, a Purchase Order is created with reference to the Contract for delivery of the material. The Purchase Orders, created with reference to contracts, are also known as call-off orders.
A value contract is defined as is a long-term, legally binding agreement with a customer or vendor to purchase/supply goods or services up to a specified total monetary value within a set period. It does not specify exact delivery dates or quantities, allowing for flexible release orders until the target value is met.
Conversion Scope
The scope of this document covers the approach for converting active Purchasing Contracts from Legacy Source Systems into S/4HANA.
- The plants and purchasing organizations are in the migration scope.
- The material and vendor in the quote are in the migration scope.
- The contract is still within the validity period.
- If multiple records exist for the same material and vendor, select only the one with the most recent effective date.
- Migrating SAP purchasing contracts requires converting released, approved legacy agreements into active S/4HANA contracts, often maintaining original contract IDs.
- If Purchasing info record is already available, the price is taken from this info record.
The data from legacy system includes:
- Only approved and released contracts can be migrated.
The data from legacy system excludes:
- Header contracts with no line item data.
- Open Purchase Orders, Scheduling agreements, and Quotation requests
- Master Conditions - During the creation of outline agreements, you can specify just one time period for each variable key.
Scales are not supported during the creation of outline agreements.
Volume rebate conditions in outline agreements are not taken into account.
Version management (document change management) is not supported.
- ternal services (planned and unplanned services) are not supported.
- Item categories (Third-Party, Enhanced Limits, Consignment, Subcontracting) are not supported.
Multilevel item hierarchy is not supported
Important Tables for Purchasing Contracts:
- EKKO: Header data.
- EKPO: Item data.
The following structures or features are supported in SAP S/4HANA:
Header Data
Supplier Address
Header Texts
Item Data
Delivery Addresses
Account Assignment
- Item Texts
List of source systems and approximate number of records
| Source | Scope | Source Approx No. of Records | Target System | Target Approx No. of Records |
|---|---|---|---|---|
| PF2 | S4H | |||
| WP2 | S4H | |||
Additional Information
Multi-language Requirement
Document Management
Legal Requirement
Special Requirements
Target Design
The technical design of the target for this conversion approach.
| Table | Field | Field Description | Check Table | Data Type | Length | Requirement |
|---|---|---|---|---|---|---|
| EKKO | LIFNR | Vendor Account Number | LFA1 | C | 3 | Internal |
| EKKO | SPRAS | Language Key | T002 | X | 16 | Internal |
| EKKO | ZTERM | Terms of Payment Key | T052 | C | 10 | Mandatory |
| EKKO | ZBD1T | Cash (Prompt Payment) Discount Days | C | 70 | Mandatory | |
| EKKO | ZBD2T | Cash (Prompt Payment) Discount Days | C | 32 | Mandatory | |
| EKKO | ZBD3T | Cash (Prompt Payment) Discount Days | C | 2 | Mandatory | |
| EKKO | ZBD1P | Cash Discount Percentage 1 | C | 70 | Internal | |
| EKKO | ZBD2P | Cash Discount Percentage 2 | C | 32 | Internal | |
| EKKO | EKORG | Purchasing Organization | T024E | C | 2 | |
| EKKO | EKGRP | Purchasing Group | T024 | C | 10 | Not in use |
| EKKO | WAERS | Currency Key | TCURC | C | 1 | Not in use |
| EKKO | WKURS | Exchange Rate | C | 10 | Not in use | |
| EKKO | KUFIX | Indicator: Fixing of Exchange Rate | C | 1 | Not in use | |
| EKKO | BEDAT | Purchasing Document Date | P | 8 | Internal | |
| EKKO | KDATB | Start of Validity Period | C | 10 | Not in use | |
| EKKO | KDATE | End of Validity Period | ||||
| EKKO | IHREZ | Your Reference | ||||
| EKKO | VERKF | Responsible Salesperson at Vendor's Office | ||||
| EKKO | TELF1 | Vendor's Telephone Number | ||||
| EKKO | LLIEF | Supplying Vendor | LFA1 | |||
| EKKO | INCO1 | Incoterms | TINC | |||
| EKKO | INCO2 | Incoterms Location 1 | ||||
| EKKO | KTWRT | Target Value for Header Area per Distribution | ||||
| EKKO | UNSEZ | Legacy Number | ||||
| EKPO | EBELP | Item Number of Purchasing Document | ||||
| EKPO | TXZ01 | Short Text | ||||
| EKPO | MATNR | Material Number | MARA | |||
| EKPO | WERKS | Plant | T001W | |||
| EKPO | LGORT | Storage Location | T001L | |||
| EKPO | BEDNR | Legacy Contract Line Number | ||||
| EKPO | MATKL | Material Group | T023 | |||
| EKPO | KTMNG | Target Quantity | ||||
| EKPO | MEINS | Purchase Order Unit of Measure | T006 | |||
| EKPO | BPRME | Order Price Unit (Purchasing) | T006 | |||
| EKPO | BPUMZ | Numerator for Conversion of Order Price Unit into Order Unit | ||||
| EKPO | BPUMN | Denominator for Conv. of Order Price Unit into Order Unit | ||||
| EKPO | NETPR | Net Price in Purchasing Document (in Document Currency) | ||||
| EKPO | PEINH | Price Unit | ||||
| EKPO | MWSKZ | Sales Tax Code | T007A | |||
| EKPO | INSMK | Stock Type | ||||
| EKPO | SPINF | Indicator: Update Info Record | ||||
| EKPO | MAHN1 | Number of Days for First Reminder/Expediter | ||||
| EKPO | MAHN2 | Number of Days for Second Reminder/Expediter | ||||
| EKPO | MAHN3 | Number of Days for Third Reminder/Expediter | ||||
| EKPO | UEBTO | Overdeliver Tolerance Limit | ||||
| EKPO | UEBTK | Indicator: Unlimited Overdeliver Allowed | ||||
| EKPO | UNTTO | Underdelivery Tolerance Limit | ||||
| EKPO | PSTYP | Item Category in Purchasing Document | T163 | |||
| EKPO | KNTTP | Account Assignment Category | T163K | |||
| EKPO | REPOS | Invoice Receipt Indicator | ||||
| EKPO | WEBRE | Indicator: GR-Based Invoice Verification | ||||
| EKPO | ABMNG | Standard release order quantity | ||||
| EKPO | PLIFZ | Planned Delivery Time in Days | ||||
| EKPO | BSTAE | Confirmation Control Key | T163L | |||
| EKPO | LBLKZ | Subcontracting vendor | ||||
| EKPO | KANBA | Kanban Indicator | ||||
| EKPO | WEORA | Acceptance At Origin |
Data Cleansing
| ID | Criticality | Error Message/Report Description | Rule | Output | Source System |
|---|---|---|---|---|---|
Conversion Process
The high-level process is represented by the diagram below:
Data Privacy and Sensitivity
Extraction
Extract data from a source into . There are 2 possibilities:
- The data exists. connects to the source and loads the data into . There are 3 methods:
- Perform full data extraction from relevant tables in the source system(s).
- Perform extraction through the application layer.
- Only if ; cannot connect to the source, data is loaded to the repository from the provided source system extract/report.
- The data does not exist (or cannot be converted from its current state). The data is manually collected by the business directly in . This is to be conducted using DCT (Data Collection Template) in
The agreed Relevancy criteria is applied to the extracted records to identify the records that are applicable for the Target loads
Extraction Run Sheet
| Req # | Requirement Description | Team Responsible |
|---|---|---|
Selection Screen
| Selection Ref Screen | Parameter Name | Selection Type | Requirement | Value to be entered/set |
|---|---|---|---|---|
Data Collection Template (DCT)
Target Ready Data Collection Template will be created for data with exception of some fields which require transformation as mentioned in the transformation rule.DCT Rules
| Field Name | Field Description | Rule |
|---|---|---|
Extraction Dependencies
| Item # | Step Description | Team Responsible |
|---|---|---|
Transformation
The Target fields are mapped to the applicable Legacy field that will be its source, this is a 3-way activity involving the Business, Functional team and Data team. This identifies the transformation activity required to allow to make the data Target ready:
- Perform value mapping and data transformation rules.
- Legacy values are mapped to the to-be values (this could include a default value)
- Values are transformed according to the rules defined in
- Prepare target-ready data in the structure and format that is required for loading via prescribed Load Tool. This step also produces the load data ready for business to perform Pre-load Data Validation
Transformation Run Sheet
| Item # | Step Description | Team Responsible |
|---|---|---|
Transformation Rules
| Rule # | Source system | Source Table | Source Field | Source Description | Target System | Target Table | Target Field | Target Description | Transformation Logic | Cross Reference Table | Default Value | Conversion Rules (Logic) | Comments |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EKKO | EBELN | Purchasing Document Number | System Generated | ||||||||||
| EKKO | BUKRS | Company Code | Default | XXXX | |||||||||
| EKKO | BSTYP | Purchasing Document Category | Default | K | |||||||||
| EKKO | BSART | Purchasing Document Type | Default | MK or WK | MK - Quantity Contract WK - Value Contract | ||||||||
| EKKO | PINCR | Item Number Interval | System Generated | ||||||||||
| EKKO | LPONR | Last Item Number | System Generated | ||||||||||
| EKKO | LIFNR | Vendor Account Number | Logic | XREF??? | Depending on numbering (int/ext) | ||||||||
| EKKO | SPRAS | Language Key | Default | EN | |||||||||
| EKKO | ZTERM | Terms of Payment Key | Logic | Look up S4 Vendor number in LFB1 where Company Code (BUKRS) = XXXX to get payment terms (LFB1-ZTERM) | Get from S4 vendor | ||||||||
| EKKO | ZBD1T | Cash (Prompt Payment) Discount Days | System Generated | Defaulted during data load. | |||||||||
| EKKO | ZBD2T | Cash (Prompt Payment) Discount Days | System Generated | Defaulted during data load. | |||||||||
| EKKO | ZBD3T | Cash (Prompt Payment) Discount Days | System Generated | Defaulted during data load. | |||||||||
| EKKO | ZBD1P | Cash Discount Percentage 1 | System Generated | Defaulted during data load. | |||||||||
| EKKO | ZBD2P | Cash Discount Percentage 2 | System Generated | Defaulted during data load. | |||||||||
| EKKO | EKORG | Purchasing Organization | Logic | If vendor is affiliate (S4 LIFNR starts with TP) then set to EM01 else set to EM11. | EM01 - Affiliates EM11 - Direct Third Party EMIN - Indirect Third Party | ||||||||
| EKKO | EKGRP | Purchasing Group | Logic | retrieve EKGRP from MARC using material number and plant to join | Default to XXX until logic is confirmed | ||||||||
| EKKO | WAERS | Currency Key | Logic | If blank in source then default to EUR else pass through. | |||||||||
| EKKO | WKURS | Exchange Rate | Default | 1 | |||||||||
| EKKO | KUFIX | Indicator: Fixing of Exchange Rate | Default | Blank | |||||||||
| EKKO | BEDAT | Purchasing Document Date | Default | Todays Date | |||||||||
| EKKO | KDATB | Start of Validity Period | Pass Through | ||||||||||
| EKKO | KDATE | End of Validity Period | Logic | Set to to 31st Dec 9999 | |||||||||
| EKKO | IHREZ | Your Reference | Default | Blank | |||||||||
| EKKO | VERKF | Responsible Salesperson at Vendor's Office | Default | Blank | |||||||||
| EKKO | TELF1 | Vendor's Telephone Number | Logic | Get from S4 vendor | |||||||||
| EKKO | LLIEF | Supplying Vendor | Default | Blank | |||||||||
| EKKO | INCO1 | Incoterms | Logic / Constructed | Blank | Use overrride value from construct file if available, otherwise default to blank | ||||||||
| EKKO | INCO2 | Incoterms Location 1 | Logic / Constructed | Blank | Use overrride value from construct file if available, otherwise default to blank | ||||||||
| EKKO | KTWRT | Target Value for Header Area per Distribution | Default | 9,999,999.00 | |||||||||
| EKKO | UNSEZ | Legacy Number | Logic | Select legacy number | system &-& legacy number | ||||||||
| EKPO | EBELP | Item Number of Purchasing Document | Default | 10 | Only one item per contract so default to 10 | ||||||||
| EKPO | TXZ01 | Short Text | Pass Through | Get from S4 Material Master | |||||||||
| EKPO | MATNR | Material Number | Logic | XREF??? | If material exists in XREF then map to new S4 material number, otherwise pass through from source. | ||||||||
| EKPO | WERKS | Plant | Default | XXXX | |||||||||
| EKPO | LGORT | Storage Location | Default | 1000 | |||||||||
| EKPO | BEDNR | Legacy Contract Line Number | Default | 10 | Only 1 line per contract so default to 10 | ||||||||
| EKPO | MATKL | Material Group | Pass Through | Get from S4 Material Master | |||||||||
| EKPO | KTMNG | Target Quantity | Default | 999,999 | |||||||||
| EKPO | MEINS | Purchase Order Unit of Measure | XREF | XREF??? | retrieve TGT_MSEHI and populate this field; retrieve also TGT_ISOCODE and map it in Migration Cockpit field PO_UNIT_ISO; in Migration Cockpit mapping task, map TGT_MSEHI to TGT_ISOCODE | Map Source UOM to OneS4 UOM | |||||||
| EKPO | BPRME | Order Price Unit (Purchasing) | XREF | XREF??? | retrieve TGT_MSEHI and populate this field; retrieve also TGT_ISOCODE and map it in Migration Cockpit field PO_UNIT_ISO; in Migration Cockpit mapping task, map TGT_MSEHI to TGT_ISOCODE | Map Source UOM to OneS4 UOM | |||||||
| EKPO | BPUMZ | Numerator for Conversion of Order Price Unit into Order Unit | System Generated | source data unreliable, SAP will default it at load time from Material Master setup | |||||||||
| EKPO | BPUMN | Denominator for Conv. of Order Price Unit into Order Unit | System Generated | source data unreliable, SAP will default it at load time from Material Master setup | |||||||||
| EKPO | NETPR | Net Price in Purchasing Document (in Document Currency) | Logic | multiply with 1000 | |||||||||
| EKPO | PEINH | Price Unit | Default | 1000 | |||||||||
| EKPO | MWSKZ | Sales Tax Code | Pass Through | ||||||||||
| EKPO | INSMK | Stock Type | Logic / Constructed | read MARA.QMPUR and override using construct table if available | |||||||||
| EKPO | SPINF | Indicator: Update Info Record | Default | B | |||||||||
| EKPO | MAHN1 | Number of Days for First Reminder/Expediter | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get MAHN1 value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | MAHN2 | Number of Days for Second Reminder/Expediter | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get MAHN2 value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | MAHN3 | Number of Days for Third Reminder/Expediter | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get MAHN3 value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | UEBTO | Overdeliver Tolerance Limit | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get UEBTO value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | UEBTK | Indicator: Unlimited Overdeliver Allowed | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get UEBTK value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | UNTTO | Underdelivery Tolerance Limit | Logic | Look up Purchasing Value Key (MARA-EKWSL) from S4 material and get UNTTO value from S4 config table T405 for the corresponding Material Purchasing Value Key | Defaulted from material config | ||||||||
| EKPO | PSTYP | Item Category in Purchasing Document | Logic | Test in Relevancy report for mapped supplier then set to 3 else set to 0. | 0 - Standard 1 - Limit 2 - Consignment 3 - Subcontracting 4 - Material unknown 5 - Third-party 6 - Text 7 - Stock transfer 8 - Material group 9 - Service A - Enhanced Limit C - Stock prov.by cust. P - Return.trans.pack. | ||||||||
| EKPO | KNTTP | Account Assignment Category | Default | Blank | |||||||||
| EKPO | REPOS | Invoice Receipt Indicator | Default | X | |||||||||
| EKPO | WEBRE | Indicator: GR-Based Invoice Verification | Default | X | |||||||||
| EKPO | ABMNG | Standard release order quantity | Default | 1 | |||||||||
| EKPO | PLIFZ | Planned Delivery Time in Days | Logic | Get from material master | |||||||||
| EKPO | BSTAE | Confirmation Control Key | Default | ZTRC | ZGIB - Glb Inbound Del ZICH - PO Confirmations ZSNC - SNC PO Conf Cntrl ZTRC - Glb PO Conf MRP ZTRN - Glb PO Conf Non MRP | ||||||||
| EKPO | LBLKZ | Subcontracting vendor | Logic | Test in Relevancy report for mapped supplier then set to X else blank. | |||||||||
| EKPO | KANBA | Kanban Indicator | Default | Blank | |||||||||
| EKPO | WEORA | Acceptance At Origin | Logic | Test in Relevancy report for mapped supplier then set to X else blank. | Specifies whether the acceptance of the ordered goods is to take place at the point of origin (that is, on the supplier's premises). Set to X for xxxx suppliers. |
Transformation Mapping
| Mapping Table Name | Mapping Table Description |
|---|---|
Transformation Dependencies
List the steps that need to occur before transformation can commence| Item # | Step Description | Team Responsible |
|---|---|---|
Pre-Load Validation
Project Team
Completeness
| Task | Action |
|---|---|
Accuracy
| Task | Action |
|---|---|
Business
Completeness
| Task | Action |
|---|---|
Accuracy
| Task | Action |
|---|---|
Load
The load process includes:
- Execute the automated data load into target system using load tool or product the load file if the load must be done manually
- Once the data is loaded to the target system, it will be extracted and prepared for Post Load Data Validation
Load Run Sheet
| Item # | Step Description | Team Responsible |
|---|---|---|
Load Phase and Dependencies
Pre-requisites:
1) Vendor Master Data
2) Material Master data
3) Material Groups
4) Purchasing Info Records
Configuration
| Item # | Configuration Item |
|---|---|
Conversion Objects
| Object # | Preceding Object Conversion Approach |
|---|---|
| list the exact title of the conversion object of only the immediate predecessor – this will then confirm the DDD (Data Dependency Diagram) | |
Error Handling
| Error Type | Error Description | Action Taken |
|---|---|---|
Post-Load Validation
Project Team
Completeness
| Task | Action |
|---|---|
Accuracy
| Task | Action |
|---|---|
Business
Completeness
| Task | Action |
|---|---|
Accuracy
| Task | Action |
|---|---|
Key Assumptions
- Master Data Standard is up to date as on the date of documenting this conversion approach and data load.
- Purchasing Contracts are in scope based on data design and any exception requested by business.
- Migrate released and approved contracts only. Note that the supplier is not informed again after migration of a purchasing contract because only released purchasing contracts are migrated to the SAP solution.
- If a contract has not been released or approved in the legacy system, create a new purchasing contract with a new contract ID in the SAP solution and copy the data from the legacy system into the new purchasing contract in your SAP solution manually.
The contract ID in your SAP solution must be the same as in the legacy system. Change the contract ID for technical reasons only (for . if the number range of the migrated contracts would exceed the number range in the SAP solution).
If the purchasing contract is related to materials or services, the purchasing status must be set to active in the corresponding materials or services.
Migration of change history, document flow history and approval history is not supported.
Migration of administrative data is not supported, for example, creation date and time, creation user, last changed date and time.