I have a scenario set up in which a legacy system is creating a XML file, which is then being picked up by XI and processed into an IDoc to create a material in ECC. That part works fine.
However, from time to time changes will be made to a material in the legacy system. Those changes need to be updated in the ECC system. So the material in ECC needs to be changed instead of creating a new material.
The first time a material is exported from the legacy system and sent to ECC, there will be no material number (matnr), so ECC will generate a material number, and an aknowledgement back to the legacy system with the material number it generated. That material number will then be updated in the legacy system.
The second time a material is exported, when it's been changed, from the legacy system, I want ECC to change the existing material instead of producing a new one.
So in my mapping I added a conditional statement for the field MSGFN, which I thought was the code to determine whether or not to create or edit the material. The statement says "if a material number exists, map MSGFN to 002. If it does not exist, map MSGFN to 005". I thought this would allow for the material to be created in ECC the first go round, then edited in ECC whenever a change is made in the legacy system.
So let me restate --
If MATNR = true, then MSGFN = 002
If MATNR = false, then MSGFN = 005
However, in ECC, regardless of the MSGFN code (which I have verified is correctly being mapped), a new material is always generated. Does anyone have any idea why this is happening? What am I doing wrong? Does the MSGFN field have no bearing on the creation of the IDoc?
Thanks in advance for your help 😊