Lesson 3 of 5
Importing and maintaining values
9 min
Listen to this lesson
Contoso's PO landscape already holds years of curated translation tables in the Integration Directory on XP1. Retyping them would be slow and error-prone. Cloud Integration offers two ways to bring them over, and a way to maintain values per tenant once they have arrived.
Import from the Integration Directory
If the tenant is connected to the PO system, you can import value mappings directly. In the package's Artifacts tab choose Add > Value Mapping, then Import from Integration Directory. Pick the Integration Directory from the connected systems (address and location ID fill in), choose Connect, select the value mapping, review the name and ID, and add it. Two prerequisites from SAP: the PO system must be on SAP Process Orchestration 7.5 SP22 or later, and the feature depends on your Integration Suite service plan (see SAP Note 2903776).
Import from a CSV file
Inside a value mapping in edit mode, Import reads a CSV file. SAP supports CSV files in the format of a PI export, with three rules: only a comma as delimiter, agency and identifier separated by a pipe (|), and UTF-8 encoding only. The header row starts with an empty cell, then one column per Agency|Identifier; each following row starts with the group name, then the values. For Contoso's unit list that looks like this (codes illustrative): ,CMC_S4|UNIT,X12|UNITUOM_PCE,PCE,EAUOM_KGM,KGM,KG
The safest way to get the format right is to export a small table from PO and copy its layout.
Configure: values per tenant
Some values legitimately differ between tenants. A partner's test system may use different location codes from its production system. For that, a deployed value mapping can be configured rather than edited: in the package, choose Actions > Configure on the artifact, pick the bi-directional mapping, add value pairs and save. Its state changes to Configured, and you deploy. SAP lists the limits: while configuring you can't delete a bi-directional mapping, and once configured and saved the artifact can't be edited, only re-configured.
| Edit | Configure | |
|---|---|---|
| Purpose | Design the table: mappings and values | Set tenant-specific values on a transported artifact |
| Where | Open the artifact in edit mode | Artifacts tab, Actions > Configure |
| Can add bi-directional mappings | Yes | No; you pick an existing one |
| After saving | Further edits possible | State is Configured; edit is no longer possible, re-configure instead |
Maintaining values through the API
For larger or frequently changing lists, the Cloud Integration OData API can read and write value mappings. SAP's examples include filtering the values of one bi-directional mapping through ValueMappingDesigntimeArtifacts(Id=…,Version=…)/ValMapSchema(…)/ValMaps and creating values with the function import UpsertValMaps, whose IsConfigured parameter controls the configured state. Contoso uses read access to compare test and production content (lesson 5), and keeps writes behind a change request.
Moving PI tables without moving their problems
An import copies content, including mistakes. Before importing a PI table, Theo's team checks it against its users: entries no interface sends any more, duplicate source values that make reverse lookups ambiguous, and agency names that only made sense in PI, such as business system names used as agencies. PI allowed business system names as agencies and converted them during transports between Integration Directories; in Cloud Integration the agency is just a string, so Contoso replaces such agencies with its own convention during migration and adjusts the calling mappings at the same time.
Versions and history
Use Save as version before every content change, so you can see and restore what a table looked like when a problem started. The version history is reached from the version shown with the artifact. When Ana reports that Lakeside invoices started failing on Tuesday, the first question is which value mapping versions were deployed on Monday.
Ownership
| Code list | Business owner | Technical owner |
|---|---|---|
| Units of measure (CMC_S4 / UNIT) | Supply chain master data team | Theo's integration team |
| Great Lakes location codes (GLFS / LOCATION) | Maria, order-to-cash key user | Theo's integration team |
| Payment terms and tax codes | Dan, finance process owner | Theo's integration team |
Every table has a business owner who approves content and a technical owner who deploys it.
A value change follows the same path as any other change: a request from the business owner, the change in CMC_DEV, a test in CMC_TEST, Priya's forward after sign-off, and the import into CMC_PROD in the release window. Configured, tenant-specific values are the exception, and they are documented in the artifact description. One migration caution: when mapping content is imported from the ESR into an integration flow's references, SAP notes that a message mapping containing a value mapping reference isn't supported at runtime. Re-point such mappings to a Cloud Integration value mapping and test them again.
What would you do?
Theo's team imports the PI value mapping for units from XP1. The test cycle passes. A month later, supply chain adds a new unit to S/4HANA and to the PI table, which still serves interfaces not yet migrated, but not to Cloud Integration. What should Contoso change?
- Import value mappings from the Integration Directory (PO 7.5 SP22+, service-plan dependent) or from a PI-format CSV.
- CSV rules: comma delimiter, Agency|Identifier with a pipe, UTF-8 only.
- Configure sets tenant-specific values on a transported artifact; configured artifacts can't be edited, only re-configured.
- Every code list has a business owner and a technical owner and follows the normal change path.
Check your understanding · not graded
Lesson check
1. Which PO release does SAP require for importing value mappings from the Integration Directory?
2. Which CSV detail breaks an import into a Cloud Integration value mapping?
3. A value mapping was configured and saved in CMC_TEST. What can you no longer do there?
4. Which OData function import creates value mapping entries?