cancel
Showing results for 
Search instead for 
Did you mean: 

Missing closing tag in message mapping

Former Member
0 Kudos

Hi experts,

I have an RFC --> PI --> JDBC scenario with the following message mapping:

SOURCE --> TRIM --> mapWithDefault [] --> DESTINATION

If the source field doesn't come, the input XML is a follows:

<SOURCE/>

And after the mapping I obtain the following: <DESTINATION></DESTINATION> that is exactly what the reciever system is expecting. This was been working fine until the upgrade to ECC 6.0 of the Sender system. Actually I don't know if it has anything to do, because the RFC XML looks exactly the same, but the user claims it has stopped working since the upgrade.

Now the same mapping, with the same <SOURCE/> input creates this output: <DESTINATION/>. This is not accepted by the reciver system and throws an error.

What can be happening? The message mapping has not changed and the RFC XML looks exactly the same....any ideas?? Thanks! Pablo

Accepted Solutions (0)

Answers (6)

Answers (6)

Former Member
0 Kudos

We couldn't fix it...we figured out a workaround

Former Member
0 Kudos

> What can be happening? The message mapping has not changed and the RFC XML looks exactly the same....any ideas??

I faced the same problem after upgrade so I used MapWithDefault in my mapping to generate the empty tags. Go through this thread it may help you..

stefan_grube
Active Contributor
0 Kudos

>. This is not accepted by the reciver system and throws an error.

What is the error?

If you use JBDC adapter, it is no difference, whetehr you have <tag></tag> or <tag />, because this is the same.

Former Member
0 Kudos

>

> >. This is not accepted by the reciver system and throws an error.

> What is the error?

> If you use JBDC adapter, it is no difference, whetehr you have <tag></tag> or <tag />, because this is the same.

If you see the payload in Internet Explorer, for example you'll see <tag />. But if you see the XML with a text editor, it should be <tag></tag>: Before this issue the receiver system was getting a "blank" value, now it's getting "null" and it can't handle it.

Sarvesh: thanks for your advice but I'm already using that function...

I'll try Pedro's, Srinivas' and Hetal's ideas, but the user has to setup the development box for testing.

I'll update later, thanks for your help. More ideas are appreciated!

Pablo

stefan_grube
Active Contributor
0 Kudos

> But if you see the XML with a text editor, it should be <tag></tag>: Before this issue the receiver system was getting a "blank" value, now it's getting "null" and it can't handle it.

You mean: it should be <tag>SPACE</tag> ?

You can do something like: if length of SOURCE --> TRIM --> mapWithDefault = 0, then: contant(space).

Former Member
0 Kudos

Stefan, actually I meant <tag></tag>, even though I'll try what you suggest....thank you. As soon as the development scenario is set up I'll try everything you have suggested.

Former Member
0 Kudos

> Sarvesh: thanks for your advice but I'm already using that function...

May be you did something wrong otherwise MapwithDefault will generate the the tags empty or with value wihich you specified under MapWithDefault function.

Former Member
0 Kudos

>

> > Sarvesh: thanks for your advice but I'm already using that function...

> May be you did something wrong otherwise MapwithDefault will generate the the tags empty or with value wihich you specified under MapWithDefault function.

I know...but the mapping was previously working. That function was working previously, when the source tag was missing the <tag></tag> structure was generated....no-one modified that mapping

Former Member
0 Kudos

I think presently from RFC you are not at all getting the feild itself <SOURCE> just check in your current payload..perviour version you might getting th field <SOURCE> itself then it was working...now the reason is not working as I guess...in ECC 6.0 onwards if source field is no value then field itself it won't come to PI as a source...I mean if you populate the empty spce explicitly for fied then that field come to PI other wise if there is not value field will not come to PI...please compare the current payload and old payload for Source RFC XML...hope youo understnad..

Regards,

Venu.

Former Member
0 Kudos

> I think presently from RFC you are not at all getting the feild itself <SOURCE> just check in your current payload..perviour version you might getting th field <SOURCE> itself then it was working...now the reason is not working as I guess...in ECC 6.0 onwards if source field is no value then field itself it won't come to PI as a source...I mean if you populate the empty spce explicitly for fied then that field come to PI other wise if there is not value field will not come to PI...please compare the current payload and old payload for Source RFC XML...hope youo understnad..

Hi Venu, I have just checked. In the XML from the ECC6.0 RFC I'm getting the input as <SOURCE></SOURCE>. Thanks for your reply.

stefan_grube
Active Contributor
0 Kudos

> Hi Venu, I have just checked. In the XML from the ECC6.0 RFC I'm getting the input as <SOURCE></SOURCE>.

When the source tag is available, then mapwithdefault paases the empty node.

So the change in your scenario was:

First: source was missing, so mapwithdefault provided default value ' '

second: source is availble, but empty, so the empty string is passed to target.

in my proposol when I wrote "then" I meant to use the "if" function. do constant space to then branch. the source - mapwithdefault to else branch.

Former Member
0 Kudos

Please reimport the RFC and then clear CPA Cache.

That should solve your problem.

Thanks,

Hetal

Former Member
0 Kudos

Hi Pablo,

RFC XML looks exactly the same, but the user claims it has stopped working since the upgrade

Can you please try importing the RFC again and doing some dummy changes in the mapping .Might be meta data update issue.Also test the RFC from the SAP system once.similarly do some dummy changes in communication channel (like, edit channel and in the description field add some text or spaces and save and activate).Please test again and see if it works ..do the cache refresh also

Regards,

Srinivas

Former Member
0 Kudos

Hi Pablo,

Try to stop and start again RFC communication channel in RWB (communication channel monitoring).

transaction sxmb_ifr

Integration Monitoring (Runtime workbench) -> Component Monitoring -> Display

Expand the tree, and choose Adapter Engine in Integration Server

Choose Communication Channel Monitoring, use filter as it is, and check RFC communication channels

Best Regards,

Pedro Pereira

Edited by: Pedro Pereira on Jun 22, 2010 7:39 PM

Edited by: Pedro Pereira on Jun 22, 2010 7:50 PM