cancel
Showing results for 
Search instead for 
Did you mean: 

Error in Mapping when using Concat and Constant functions

Former Member
0 Kudos

Dear All,

I am trying to follow the blog() the by Mark Dihiansan Thanks a ton for the great guide Mark. I have similar requirement so first I am just trying to mimic the same as Mark has shown in his guide to build the HTTP body, but I am getting the bellow error while testing the message mapping.

11:56:59 Start of test
Mapping object MM_Add incomplete. Unable to continue execution 

  • Target field mapping '/AddIn/a' incomplete; reason: Mapping for target field '/AddIn/a' incomplete
 

11:56:59 End of test
Please see the bellow screenshot from my mapping what I have done. Could you guys please help to resolve this issue.
   

Thanks,

Farhan

Accepted Solutions (1)

Accepted Solutions (1)

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Thank you for the feedback! In my blog, the fields a and b are disabled. You can do this by right-clicking on the field and then selecting disable field.

Hope this helps,
Mark

Former Member
0 Kudos

Hi Mark,

Thanks a lot for pointing me to feature at mapping level. I was not aware of this. this really great feature to manipulate the fields at mapping level.

Again I will say your blog is very unique and one of the best blog I have ever seen on SCN. 

I have a similar requirement to post the payload over two string field to third party web server in HTTP body. Instead of plan HTTP adapter I will utilizing HTTP_AAE java adapter.

Do you think any thing I need to be cautious when using  HTTP_AAE java receiver adapter while posting?

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Thanks again! SDN has given me so much, I just want to give back something in return

As for the HTTP_AAE adapter, I can't really comment much on that since the PI I'm using is Pi 7.11 SP08. But as far as I know, the concept of posting is the same for both HTTP and HTTP_AAE adapter. Let us know how it goes.

Regards,

Mark

Former Member
0 Kudos

Thanks Mark. sure, I will share my experience as well after completion this, This is my first PI development project, and everything I am too learning from SCN only My scenario includes the digital signature as well, in HTTP body over string field. I am in process of developing the Java mapping for that. I will share once its done end to end.

Regards,

Farhan

Former Member
0 Kudos

Hello Mark Dihiansan,

I am sorry to bother you , but I have few more question from your blog, because when I completed and ran the outbound , I got the error "No receiver could be determined" in Moni, and I revisited your blog to check what I have missed. I found the below points

1- you have changed the default operation in service interface(inbound and outbound) to "Add" , what is the purpose for this? as there is only one operation.

2- This change has been applied in Receiver determination and Interface determination.

3- you have used * for both Communication Component, I tried to do the same, but after changing to * I am not able to select Operation Mapping here, please explain.

4- How about multiplicity here? also have you written any condition?

Please explain me, my purpose is to just run successfully one end to end scenario using HTTP post with similar structure. I am trying in PI 7.3 dual stack.

Regards,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

1. In the calculator webservice, it has four operations. That is why I changed it to add.

2. Yes, the condition is changed to operation-specific.

3. The * for both communication component in interface determination is used to avoid hardcoding of the same interface determination * for sender component means any sender can send it and * for receiver component means any receiver can receive it (already determined in receiver determination).

I am not sure why you are unable to select an operation mapping but you should be able to input the inbound service interface and then afterwards select the operation mapping via search help.

4. Multiplicity is 1..1, no additional conditions were written

Please upload:

In sxmb_moni, double-click the message with error then go to SOAP Header -> Trace

Hope this helps,

Mark

Former Member
0 Kudos

Thanks a lot Mark for the prompt response. for now my PI server is down for some reason,I will test it again and will keep you updated.

Appreciated your effort pal for helping the beginners in PI like us

Regards,

Farhan

Former Member
0 Kudos

Hello Mark,

Thanks for the above inputs. I am able to select the operation mapping now, and all the configuration and development in PI is ditto like yours. Only one difference I can make out is the method name while running the outbound proxy from ECC. in your screenshot the method name is "Add" but for me its Outbound service interface name"SI_OUT_CALCULATOR_S".

Message is reaching to PI successfully after mapping as shown below. but failing to get the response back.

The XML page cannot be displayed

Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.


A semi colon character was expected. Error processing resource 'file:///C:/Users/fkhan/AppData/Local/Temp/6/c6e2b70_5001HTM...

&a=21&b=22 --^

Please see the below trace from MONI. the error for plane HTTP adapter is "HTTP client code 400 reason ICM_HTTP_CONNECTION_FAILED"

I have tested with HTTP_AAE adapter as well that is also failing with error com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.aii.adapter . http.api.HttpAdapterException: ERROR_SENDING_HTTP_REQUEST.

Could you please let me know if Im missing anything.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

- <!--

 Call Adapter 

--> 

- <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30">

<Trace level="1" type="T">Party normalization: sender</Trace>

<Trace level="1" type="T">Determining the sender agreement</Trace>

<Trace level="1" type="T">XMB was called with URL /sap/XI/engine/?type=entry</Trace>

<Trace level="1" type="T">User = PIAPPLUSER</Trace>

<Trace level="1" type="T">Work Process ID: 3728</Trace>

<Trace level="1" type="T">Message ID = E37B0DED9A71C5F19930000C290015A8</Trace>

- <Trace level="1" type="B" name="CL_XMS_MAIN-ENTER_XMS">

<Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>

<Trace level="1" type="T">Hop engine name = is.12.pi73</Trace>

<Trace level="1" type="T">Hop engine type = IS</Trace>

<Trace level="1" type="T">Hop adapter name = XI</Trace>

<Trace level="1" type="T">Hop adapter namespace = http://sap.com/xi/XI/System</Trace>

<Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV" />

<Trace level="1" type="T">system-ID = P73</Trace>

<Trace level="1" type="T">client = 001</Trace>

<Trace level="1" type="T">language = E</Trace>

<Trace level="1" type="T">user = PIAPPLUSER</Trace>

<Trace level="1" type="Timestamp">2013-10-25T09:38:10Z CET</Trace>

</Trace>

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_UC_EXECUTE">

<Trace level="1" type="T">PLNAME = CENTRAL</Trace>

<Trace level="1" type="T">QOS = BE</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC" />

- <!--
 ************************************ 
--> 

<Trace level="1" type="T">>>>PID delete old pid determination coding</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_XML_VALIDATION_RQ_INB">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_XMS_PLSRV_VALIDATION-ENTER_PLSRV">

<Trace level="1" type="T">Reading sender agreement</Trace>

<Trace level="1" type="T">Message does not contain a sender agreement</Trace>

<Trace level="1" type="T">Inbound validation by Integration Engine does not take place</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_RECEIVER_DETERMINATION">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_RD_PLSRV-ENTER_PLSRV">

<Trace level="1" type="T">R E C E I V E R - D E T E R M I N A T I O N</Trace>

<Trace level="1" type="T">Cache content is up to date</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_INTERFACE_DETERMINATION">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_ID_PLSRV-ENTER_PLSRV">

<Trace level="1" type="T">I N T E R F A C E - D E T E R M I N A T I O N</Trace>

<Trace level="1" type="T">Cache content is up to date</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_RECEIVER_MESSAGE_SPLIT">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_XMS_PLSRV_RECEIVER_SPLIT2->ENTER_PLSRV">

<Trace level="1" type="T">number of receivers: 1</Trace>

<Trace level="1" type="T">Single-receiver split case</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_MAPPING_REQUEST">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV">

<Trace level="1" type="T">Interface Mapping http://ProxyToHttp OM_Add</Trace>

<Trace level="1" type="T">ContentType application/xml</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_OUTBOUND_BINDING">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

<Trace level="1" type="B" name="CL_XMS_PLSRV_OUTBINDING-ENTER_PLSRV" />

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

- <Trace level="1" type="B" name="PLSRV_XML_VALIDATION_RQ_OUT">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">

- <Trace level="1" type="B" name="CL_XMS_PLSRV_VALIDATION-ENTER_PLSRV">

<Trace level="1" type="T">Reading receiver agreement</Trace>

<Trace level="1" type="T">Outbound validation does not take place</Trace>

</Trace>

</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />

<Trace level="1" type="B" name="PLSRV_CALL_ADAPTER" />

- <!--
 ************************************ 
--> 

- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">

<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />

- <!--
 ************************************ 
--> 

<Trace level="1" type="T">---------------------------------------------</Trace>

<Trace level="1" type="T">---- Plain HTTP Adapter Outbound----</Trace>

<Trace level="1" type="T">---------------------------------------------</Trace>

- <Trace level="1" type="B" name="CL_HTTP_PLAIN_OUTBOUND-ENTER_PLSRV">

<Trace level="1" type="T">Get XML-Dokument from the Message-Objekt</Trace>

</Trace>

</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />

</Trace>

<Trace level="1" type="T">An Exception has occured</Trace>

<Trace level="1" type="T">Error Text: HTTP client code 400 reason ICM_HTTP_CONNECTION_FAILED</Trace>

<Trace level="1" type="T">SystemError message generated. Guid: 000C2968860F1EE38FAB274B692DF4C3</Trace>

<Trace level="1" type="T">Error during execution of message : E37B0DED9A71C5F19930000C290015A8</Trace>

<Trace level="1" type="T">ApplicationMessage was (=RefToMsgId): E37B0DED9A71C5F19930000C290015A8</Trace>

<Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />

- <!--
 ************************************ 
--> 

</SAP:Trace>

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

You are almost there! Can you post a screenshot of the communication channels using HTTP and HTTP_AAE? What does the trace log in SMICM say (only for Plain HTTP)? To get the log, execute your scenario and then go to tcode SMICM in PI, select display all and scroll to the downmost part. It should give a hint as to why you are getting a 400 error.

Hope this helps,

Mark

Former Member
0 Kudos

Thanks a lot Mark. Please see the below errors from ICM logs and the screenshots from HTTP plane and HTTP_AAE adapter. Please suggest me if anything I am missing here. Meanwhile I am going to try SOAP receiver without envelop, as you have shown in the blog.

*** ERROR => NiIShutdownHandle: SiShutdown failed for hdl 437/sock 5824

HTTP Plane


HTTP_AAE

Regards,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Remove the http:// part in the host. What you have entered is http://www.html2xml.nl, correct is www.html2xml.nl only.

Regards,

Mark

Former Member
0 Kudos

Hi Mark,

Thanks a lot my friend for your help. I just changed the url to www.html2xml.nl as you mentioned above. However, still error is same, but in ICM monitor log its showing the complete URL with the same waring.

*** WARNING => Connection request from (27/7372/0) to host: www.html2xml.nl, service: 80 failed (NIEHOST_UNKNOWN)

Not sure whats wrong here. please let me know if you get any clue.

Thanks,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Looks like a network/firewall issue to me. Can you ping www.html2xml.nl in your PI server? Can you ask your Basis team if you have http proxies in place (in my blog we are using http proxies)?

Aside from that, the objects are exactly the same.

Regards,

Mark

Former Member
0 Kudos

Hi Mark,

You are correct, I am not able to ping from PI server to www.html2xml.nl, but I am able to ping to the IP address of www.html2xml.nl which is 77.94.248.183. Seems network team has disabled the host name internet access. I will ask them to enable for hostname as well.

Do you think I can use IP address of www.html2xml.nl in communication?

Thanks,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Yes, you can use IP It is worth to try.

Regards,

Mark

Former Member
0 Kudos

Thanks Mark. I tried with IP as well, but still no luck Let me check when they enable the host based access. I will keep you updated/

Regards,

Farhan

Former Member
0 Kudos

Hi Mark,

A big thanks to you. I am getting the response successfully from the add webservice after they enabled the internet ,but I am not able to find the message details neither in MONI nor in java monitoring tool. whats wrong?  below response is from ECC.

But a very big thanks to you my friend for the continuous help

Regards,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

Usually when logging_sync is disabled in sxmb_adm you won't be able to view messages in sxi_monitor. Although you'll be able to view sync messages when they are in error, set the value for logging_sync to 1 to view the response in PI.

Regards,

Mark

Former Member
0 Kudos

Hi Mark,

After setting these parameter I am able to see all the message details in MONI

I feel like to meet you personally and say thanks because all credit goes to you.

Thanks,

Farhan

markangelo_dihiansan
Active Contributor
0 Kudos

Hi Farhan,

You're welcome and congratulations that your scenario is now working! Glad to help!

Regards,

Mark

Answers (1)

Answers (1)

former_member184720
Active Contributor
0 Kudos

Map the field a&b with some constant. as they are mandatory fields, you  need to map them

former_member184720
Active Contributor
0 Kudos

If you don't have any mapping then you can even change the occurence of the field to 0..1 instead of 1..1

Former Member
0 Kudos

Thanks a lot Hareesh for responding so promptly always. When I changed the occurrence it worked, but still I am wondering how Mark would have done with 1:1 mapping.

When you say "Map the field a&b with some constant" , could you please elaborate, might be silly but I am sorry, still I am a new born baby for PI.

Thanks,

Farhan

former_member184720
Active Contributor
0 Kudos

You are welcome Farah..

Map the field a&b with some constant

We have a function called "Constant"  which you can find it under "Constants" category.

So just map this consatnt to your target field.

You can fill this constant with whatever you want - Even a space works.

Former Member
0 Kudos

Thanks again Hareesh.

Regards,

Farhan