High- Level Specification
| Parameter | Value |
|---|---|
| Application System | SAP ERP (PF2) & SAP ERP (WP2) |
| Business Process Reference | 03.04.04.01. Manage Outline Agreements (R2) |
Functional Overview
Icertis Contract Intelligence is the contract management and authoring application for Syensqo's purchase contracts. Purchase orders are created in SAP ECC with reference to purchase contracts (outline agreements). The key information from the legal contract which is relevant for procurement forms the basis of the purchase contract or outline agreement in SAP ECC. The integration between Icertis and SAP ECC for release 2 is a custom table in SAP ECC to hold key header field content from Icertis (ERP-260 Integration Process - Icertis to SAP ECC Contract Data Replication & ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC). This custom table supports the main objectives:
- To enable a relationship between the Icertis Agreement Code and the SAP outline agreement number.
- To report where there are inconsistencies in the data between the two systems.
This enhancement is to create a program in SAP ECC which makes new entries in the custom table ZMM_ICMCONTRACT for legacy contracts which have been loaded into Icertis Contract Management via their legacy load tool. This method does not generate event messages to CPI in the same way that the execution of a new contract manually does. The program would be a direct update process based on the contents of a spreadsheet to make the table entries.
Once the legacy contract field values are loaded in the table in SAP, all other integration from Icertis is managed via the existing developments referenced above. This includes the execution of amendments, renewals, terminations and tracking field updates.
Scope and Objectives
The purpose of this program is to ensure that all the relevant legacy system contracts which are loaded into Icertis are available in the table in both SAP ECC systems. This ensures that:
- Legacy contracts can be selected for assignment on the outline agreement headers (handled by ERP-259 Enhancement for Storage of Icertis ID on OA Header)
- Reporting of Icertis contracts in BW and their associations to outline agreements includes the legacy migrated contracts and new ones ERP-504 - Getting issue details... STATUS .
Primarily the purpose of the program is for the load of legacy contracts where currently the expected event messages cannot be triggered to CPI to enable the operation of ERP-260 Integration Process - Icertis to SAP ECC Contract Data Replication & ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC in their current form.
Potentially this program may also provide a backup option to load multiple contract records into the table in the event of a failure in the automated interfaces from Icertis. If an event is not generated, or there is an inability to process the message in CPI (eg. Incorrect tenant id), there is no method in Icertis to resend or to retrigger a new message, nor an ability to update the message in CPI. Manual entry into the table in SAP is the only option. In the case of multiple records, this program may provide a fallback option depending on the circumstances, the volume, the ability to identify and the nature of the failures.
Step | Description | Comment |
|---|---|---|
1 | List the legacy agreements in Icertis | Select the relevant contract types. Select the variant to display the relevant columns for the table in SAP. |
2 | Export the selection (Icertis) | Export the list of agreements to Excel file and confirm the number of records. |
3 | Prepare the load file(s) (Excel) | Various formatting, lookups, macros and checks field by field to prepare the file for loading. |
4 | Execute the load program in test mode (SAP) - ERP-2397 | Validate any errors in test mode in both SAP ECC systems. Verify number of records |
5 | Execute the load program in update mode (SAP) - ERP-2397 | Execute the load program in update mode. Verify any errors in the load. Validate the number of records updated in the table. |
6 | If relevant execute the purchasing org table load in test mode (SAP) - ERP-2397 | Validate any errors in test mode in both SAP ECC systems. Verify number of records |
7 | If relevant execute the purchasing org table load in update mode (SAP) - ERP-2397 | Execute the load program in update mode. Verify any errors in the load. Validate the number of records updated in the table. |
8 | Verify number of new records loaded (SAP) - ERP-2397 | Verify the number of records in the tables include the expected number of new records and that the tables are consistent across both SAP systems (PF2 and WP2 for production) |
Assumptions
Verified spreadsheet templates are available to prepare the data with fields correctly named and sequenced for the load program.
The relevant contracts for load can be selected in Icertis, and the relevant fields can be successfully exported from Icertis to a spreadsheet with the values for the fields which are mapped in SAP.
It is understood that multiple manual tasks will be required to prepare the exported file for load into SAP. This includes formatting, trimming of field content, formulae, lookups, manual entry of fixed values not available in Icertis and resequencing of columns. Whilst several validations can be carried out within the load program, the fields in the tables have been defined to be mostly text format fields to enable all values to be stored in both SAP systems and to accept whatever value is being passed from Icertis. Careful validation of the data in the spreadsheet will be required prior to executing a load.
Purchasing organization data is held in a separate table (ZMM_ICM_EKORG) in SAP. Whilst purchasing organizations are not assigned to the legacy contracts being loaded initially in Icertis, if this program is to be used where purchasing organizations are assigned in Icertis, an additional file and step is required in the program. They can only be loaded following the initial load of the contract into ZMM_ICMCONTRACT.
Any load into the table will have to be executed in both the PF2 and WP2 systems. The table entries are maintained in both systems by the enhancement ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC. Entries in both tables are expected to always be identical.
Dependencies
The selection of the relevant contracts and export of the relevant field values from Icertis is required prior to the loads into SAP.
Security, Integrity and Controls
Security is covered by the authorizations defined in ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC, where an authorization group is on the table to protect it from updates. Firefighter access is required for cutover and by production support in the event of needing to update the table with the exception of a few Syensqo users currently with access in the SAP Basis/Technical team.
No further security or control is required for this program.
Configuration Requirements
There are no specific configuration requirements for this enhancement.
Language Requirements
There are no language requirements for this enhancement. Screen fields and headings will be programmed only in English. As per ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC, the contract content from Icertis is predominantly text based and will therefore be shown in the language it which it was entered in Icertis.
Special Requirements
There are no special requirements identified.
Design Rationale
Functional Requirements
This custom program is to take field values from a spreadsheet plus the fixed value for several other fields determined in the program and make new entries into the tables ZMM_ICMCONTRACT or ZMM_ICM_EKORG.
The columns in the spreadsheet will have column headings which are the field names in the tables.
The initial selection screen will have a radio button to select one table at a time to be updated. Checks and validations will be carried out prior to the updates. The user running the program must clear the errors before proceeding to load. Table records as per the spreadsheet content are updated directly.
The program will make new table entries and changes only (in the case of amendments which reference a parent agreement code and parent system id). If deletions to existing entries are required, this is carried out manually via table update in transaction SM34 using a Firefight ID for access.
The date format for the effective date and expiry date will be fixed in the program logic to expect M/D/yyyy. This is defined in the user instructions to ensure the Icertis date format is set this way before beginning to export the Icertis agreements.
Parent agreements will be loaded first, and amendments afterwards to ensure the entries to be changed will already exist. This will be managed by sorting the entries in the file.
Proposed Technology to Use
Custom ABAP program to make table updates based on a spreadsheet with the required values in each field.
Data Source Considerations
All data required for the table entries will be provided in the spreadsheet or in the initial selection screen for the program or determined within the program. The formats of the spreadsheets (one for contracts and one for the purchasing org table) are shown below and a sample file provided for unit testing.
The tenant id (relevant for both tables), and the event date time values (for the contract table) will be determined within the logic of the program. The action name field value will be provided on the initial selection screen. The client number (for the contract table) is auto populated by the program based on the client it is being executed in.
The column labels in the spreadsheet are the same as the field name in the tables.
A sample file for loading ZMM_ICMCONTRACT is available here: ERP-2397 Sample File.xlsx - Google Sheets
A sample file for loading ZMM_ICM_EKORG is available here: ERP-2397 Sample File ZMM_ICM_EKORG.xlsx - Google Sheets
A working file with instructions is available here: ERP-2397 UAT Working File.xlsx - Google Sheets
| Table | Field Name | Comments/Calculation/Field Manipulation |
|---|---|---|
| ZMM_ICMCONTRACT | CONTRACTTYPENAME | Same logic as load program of ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC will convert the full contract type names (ICMMasterAgreement, In the case of amendments, the contract type name remains the same. |
| ZMM_ICMCONTRACT | SYSID | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMAGREEMENTCODE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMCONFIDENTIALCONTRACT | This field is always blank, spreadsheet value will be blank |
| ZMM_ICMCONTRACT | NAME | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ASSOCIATINGTYPE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ASSOCIATINGCODE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ASSOCIATINGSYSID | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMSUPPLIERSAPID | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMEFFECTIVEDATE | Upload file content directly into field, no manipulation. Default from Icertis is M/d/yyyy with the extracted format being shown as 8/28/2025 12:00:00 AM SAP will convert this format successfully for loading into a date field. It is required that the user default settings for dates in Icertis is set to M/d/yyyy before beginning the extracts. |
| ZMM_ICMCONTRACT | ICMEXPIRYDATE | Upload file content directly into field, no manipulation. Default from Icertis is M/d/yyyy with the extracted format being shown as 8/28/2025 12:00:00 AM |
| ZMM_ICMCONTRACT | ICMTOTALCONTRACTVALUE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMCURRENCY | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMLEGALENTITYCODE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMORGTEAM | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMCONTRACTOWNER | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMINCOTERMSCODE | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMINCOTERMSLOCATION | Upload file content directly into field, no manipulation |
| ZMM_ICMCONTRACT | ICMPAYMENTTERMS | Upload file content directly into field, no manipulation |
| n/a | ICMPARENTENTITYINSTANCEID | If a parent system id is provided here, the entry is an amendment and the table entry for the SYSID=ICMPARENTENTITYINSTANCEID and ICMAGREEMENTCODE=ICMPARENTCONTRACTID will have all the existing field values overwritten, with the exception of the 3 association fields: ASSOCIATINGTYPE, ASSOCIATINGCODE, ASSOCIATINGSYSID (these remain unchanged) |
| n/a | ICMPARENTCONTRACTID | As per the parent entity instance id above. |
Purchasing Org Table (ZMM_ICM_EKORG)
| Table | Field Name | Comments/Calculation/Field Manipulation |
|---|---|---|
| ZMM_ICM_EKORG | CONTRACTTYPENAME | No calculation or manipulation of value, enter the value from the spreadsheet into the field |
| ZMM_ICM_EKORG | SYSID | No calculation or manipulation of value, enter the value from the spreadsheet into the field |
| ZMM_ICM_EKORG | ICMAGREEMENTCODE | No calculation or manipulation of value, enter the value from the spreadsheet into the field |
| ZMM_ICM_EKORG | ICMPURCHASINGORGCODE | No calculation or manipulation of value, enter the value from the spreadsheet into the field |
Data Validation Considerations
The following data validations are carried out in both test and update modes:
| Table | Field Name | Comments/Calculation/Field Manipulation |
|---|---|---|
| ZMM_ICMCONTRACT | CONTRACTTYPENAME | Valid value of: ICMMasterAgreement Error: xxx invalid CONTRACTTYPENAME Note: Contract type names for amendments are provided as above. |
| ZMM_ICMCONTRACT | CONTRACTTYPENAME SYSID ICMAGREEMENTCODE | Mandatory fields and must be in the spreadsheet Error: Field xxx is required entry |
| ZMM_ICMCONTRACT | SYSID | Spreadsheet value for SYSID does not already have an entry in the table. Duplicate entries are not permitted Error: SYSID xxx already exists |
| ZMM_ICMCONTRACT | ASSOCIATINGCODE, ASSOCIATINGTYPE, ASSOCIATINGSYSID | These fields must either all be blank, or all be filled (not one filled, one blank). Error: Missing association details |
| ZMM_ICMCONTRACT | ASSOCIATINGTYPE | If ASSOCIATINGTYPE is filled, the value can only be MSA Error: Incorrect ASSOCIATINGTYPE |
| ZMM_ICM_EKORG | CONTRACTTYPENAME SYSID ICMAGREEMENTCODE ICMPURCHASINGORGCODE | Mandatory fields and must be in the spreadsheet Error: Field xxx is required entry
|
| ZMM_ICM_EKORG | SYSID & ICMPURCHASINGORGCODE | Spreadsheet value for SYSID & ICMPURCHASINGORGCODE does not already have an entry in the table ZMM_ICM_EKORG. Duplicate entries are not permitted Error: SYSID xxx and ICMPURCHASINGORGCODE already exists |
| ZMM_ICM_EKORG | SYSID & ICMPURCHASINGORGCODE | Spreadsheet value for SYSID must already have an entry in the table ZMM_ICMCONTRACT. Error: SYSID xxx does not exist in ZMM_ICMCONTRACT |
| ZMM_ICMCONTRACT & ZMM_ICM_EKORG | Column headings | Validate that the column headings in the spreadsheet align to the fields in the table being loaded. |
Custom Tables
There are no requirements for additional custom tables for this enhancement.
Master Data
There are no requirements for any master data tables for this enhancement.
| Field | Description | Data Type/Length | Validation rule/ Value Help |
|---|---|---|---|
Configuration Table
There are no requirements for additional configuration tables for this enhancement.
| Field | Description | Data Type/Length | Validation rule/ Value Help |
|---|---|---|---|
Selection Screen Enhancement
| Field Name | Description | Select: | Data Type/Length | Default Value/ Validation rule/ Value Help | Selection Logic |
|---|---|---|---|---|---|
| CONTRACTUPLOAD | ICM Contract Table Upload | Radio Button | 1 | Default to selected | If the 'Contract' radio button is selected, then program is to upload to the table ZMM_ICMCONTRACT |
| LOADFILENAME | File Name (Contract) | Select for the file name and path | Length to be specified | Default to blank | Selection of the dropdown and allow user to navigate to the location of the file on a local drive for the Contract Table Upload or the Purchasing Org Table upload |
| ACTIONNAME | Action Name | Text Field | 30 char | Default to 'Executed' | The value entered here is filled in each table entry in the ACTIONNAME field. In the case of legacy contracts, this will be 'Executed' |
| PURORGUPLOAD | ICM Purchasing Org Table Upload | Radio Button | 1 | Default to deselected | If the 'Purchasing Org' radio button is selected, then the program is to upload to the table ZMM_ICM_EKORG |
| TESTMODE | Test Mode Upload | Checkbox | 1 | Default to selected | Select if the selected program is to be run in test mode. Deselected, program will run in update mode and make changes to the table. |
Processing Logic
Execute the validations in both test and update modes.
Fill the EVENTDATETIME field based on the current system date and time that the program is being run. Use format:
2024-04-12T07:16:17.9661276ZDetermine value for TENANTID based on the SAP system where the files are being loaded: WD2/DF2, then icertis/syensqo-dev, WQ2/QF2 then icertis/syensqo-uat and WP2/PF2 then icertis/syensqo
Fill the CLIENT field based on the SAP client number the program is being executed in.
Fill the fields in the tables based on the column labels in the spreadsheet.
Volumetrics
There are 2900 legacy purchase contracts being loaded into Icertis which are relevant for entry in the SAP table ZMM_ICMCONTRACT. There are no entries required to the purchasing organization table ZMM_ICM_EKORG for legacy contracts, but if the program is used to make contract entries as a result of an error or failure to generate an event within Icertis, entries may be required to that table as well as the main one.
Volumes for any future use of the program for the correction of missing table entries may vary depending on the circumstances.
Performance Considerations
There are no specific performance considerations for this development as it is expected that the table update will be made quickly and there are no dependencies for the load of legacy contracts.
Error Handling
- Any errors identifiable by the program will be reported when the program is executed in test mode. They need to be rectified prior to running in update mode.
- Errors for any entries which could not be uploaded will be identified in the processing logs and may be reprocessed if the cause of the error can be subsequently cleared.
Testing
How to Test
Test files can be reused multiple times by changing the SYSID value to be unique, and ensuring it does not already exist in the tables.
Additional files to cover different scenarios can be produced from the Icertis extract saved searches.
Test Conditions and Expected Results
| ID | Condition | Expected Result |
|---|---|---|
| 1 | Test mode | Executes validations and displays error messages. |
| 2 | Update mode | Executes validations and displays error messages which need to be cleared before processing. |
| 3 | Update mode processes the table updates. | Table updates as per the spreadsheet are made directly in update mode. |
| 4 | Load master agreements | Comparison of table fields with spreadsheet fields are identical |
| 5 | Load Sub Agreements with/without associations | Comparison of table fields with spreadsheet fields are identical |
| 6 | Load Standalone Agreements | Comparison of table fields with spreadsheet fields are identical |
| 7 | Load Supporting Agreements with/without associations | Comparison of table fields with spreadsheet fields are identical |
| 8 | CONTRACTTYPENAME is ICMMasterAgreement | Error: xxx invalid CONTRACTTYPENAME |
| 9 | Missing CONTRACTTYPENAME, SYSID, or ICMAGREEMENTCODE value Mandatory fields and must be in the spreadsheet | Error: Field xxx is required entry |
| 10 | SYSID value in the spreadsheet already exists in the table ZMM_ICMCONTRACT. Duplicate entries are not permitted | Error: SYSID xxx already exists |
| 11 | The 3 associating fields (ASSOCIATINGCODE, ASSOCIATINGTYPE, ASSOCIATINGSYSID) must either all be blank, or all be filled (not one filled, one blank). | Error: Missing association details |
| 12 | ASSOCIATINGTYPE may only be blank or MSA. | Error: Incorrect ASSOCIATINGTYPE |
| 13 | Spreadsheet value for SYSID and ICMPURCHASINGORGCODE already exists in the table ZMM_ICM_EKORG. Duplicate entries are not permitted. | Error: SYSID xxx and ICMPURCHASINGORGCODE already exists |
| 14 | Spreadsheet value for SYSID when loading into ZMM_ICM_EKORG must already exist in ZMM_ICMCONTRACT | Error: SYSID xxx does not exist in ZMM_ICMCONTRACT |
| 15 | Load amendment examples for each contract type | Ensure the existing records for the parent contract are updated and no new entries for the amendments themselves are created. |
Test Considerations/Dependencies
There are no other specific testing considerations or dependencies.
Other Information
Development Details
Package
| Package Name | Parent Package |
|---|---|
Enhancement Implementation
| Enhancement Type | Standard Definition Name | Custom Implementation Name | Design Rationale Reference |
|---|---|---|---|