Warning: PI 7.31 SP9 changed runtime
We was upgrading to SP 9 to make sure the system was as updated as possible. We did have one BIG issue on how the runtime works, compared to how we are working as developers. We did not find the issue in development since we did not thing that there could be an issue with it. But a test in QA reviled the problem.
Update: it was in SP9 the change was introduced and not SP10
Update: 29 march 2014: The issue is now solved. See SAP Note 1986871. Mauris last comments gives more information
Update 24 feb 2014. We have spoken with SAP Labs and have found that the issue is only when dealing with constants and variables in duplicated element, so it is only in few instances. SAP is working on a fix for this. I’ll update when the bug is fixed.
I do apologize for the confusion for that this caused. We had tried to make a simple case to show the issue, which contained constants had caused the problem. Most often the pattern will contain field mapping and not constants it is less likely to cause problems.
Comment from Mauri Frandsen, who also help look at the issue. This blog was written because we had some concerns on our project that the problems we faced during our 7.31 SP10 upgrade were widespread and would affect a lot of customers. To us it initially seemed that the problem was due to a change of behavior regarding validation of duplicated mandatory elements. SAP gave us some information about a bug fix from SP09 onwards that led us to believe that this was the reason for the mapping problems we experienced during SP10 testing. It seems not to be correct or at least not the full truth. SAP has informed us that the problem is tied into the use/behavior of constants and is currently doing analysis of the problem. We will await the final outcome of this work and look forward to seeing the solution which will then be announced in an update or comment to the blog.
Update: 22 feb 2014. We have now identified that the mapping pattern is used by many customers. I have got confirmation from Udo Paltzer that SAP development is looking into the issue. And I have a call with Development on monday. I’ll update when we get a solution on the issue. So no need for more comments about that you also may have the problem.
The issue is in a common pattern that I often use to simplify the mapping. It when you want to make different mappings for some instances with createIf. So map the first element if something is true otherwise map the duplicated instance. The second mandatory element is then a dublicate subtree. Notice the second element does not have any occurrences.
Using this pattern can in many situations make it clear what is in each field for the different.
A good example could be mapping the partner informations. I have situations where I’ll map the buyer partner different depending on if they provide a customer number or just an address.
If we run the same mapping on the old SP6 version we don’t have an issue. It seems like it is a new feature with SP 10 and the corresponding PI 7.4 SP.
We have created an OSS message for the case, but without any luck. The issue is that there have been some updates to the SAX parser or the way it is used. The solution is to find all mappings using createIf and determinate if it is an issue. You the query http://PISERVER/rep/support/private/MappingReport.jsp?searchString=createIf
The resolution is to update the mappings. We have around 70 mappings where createIf is used. So it can be a big problem to find and update all of the mappings. My guess is that we will have to spend 20-40 hours updating the mappings to handle the problem.
There are some solutions, but the only one that is easy to implement is the first.
- Update the schema to change the minimum occurrence to 0 and save the mapping.
- Remove the createIf on the first element and combine the values for it. In some of my mappings this can be a big issue.
- Create an always on dummy element on the first element. And then remove current mapping to lower levels. It can take some time.
Last time SAP made changes to the If functions and BigDecimal it was optional to use it. Because it did have a huge impact on how PI was run. This evaluation is in my perspective also something that users should be explicit if they want to use.
Are you also using this pattern please comment on the blog, so SAP can see how big the issue are. If it just us who is doing this we can probably get over it. But it is more common that it is something we must have changed.