cancel
Showing results for 
Search instead for 
Did you mean: 

Mapping Issue - RFC System Failure(Exception)

Former Member
0 Kudos

Hi All,

I am working on SOAP to RFC scenario with SAP PI 7.31 AEX and SAP R/3 4.7 versions.

I am testing the scenario using SOAPUI tool with below test cases & outcomes.

  1. 1. Unsuccessful Test Case

Source SOAP Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sap="http://SAP_EWP-Integration">

<soapenv:Header/>

<soapenv:Body>

<sap:MT_CF_DISB_STAT_REQ>

<BUKRS>7000</BUKRS>

<MANU_CO_CODE>TSL0000001</MANU_CO_CODE>

<!--Optional:-->

<PRODUCT></PRODUCT>

<!--Optional:-->

<DATE>

<!--Zero or more repetitions:-->

<ITEM>

<!--Optional:-->

<SIGN></SIGN>

<!--Optional:-->

<OPTION></OPTION>

<!--Optional:-->

<LOW></LOW>

<!--Optional:-->

<HIGH></HIGH>

</ITEM>

</DATE>

</sap:MT_CF_DISB_STAT_REQ>

</soapenv:Body>

</soapenv:Envelope>

Target RFC Request

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

<ns1:ZTA_DISB_STATUS xmlns:ns1="urn:sap-com:document:sap:rfc:functions">

<BUKRS>7000</BUKRS>

<MANU_CO_CODE>TSL0000001</MANU_CO_CODE>

<PRODUCT />

<DATE>

     <item>

          <SIGN />

          <OPTION />

          <LOW />

          <HIGH />

     </item>

</DATE>

<IT_HEADER />

<RETURN />

</ns1:ZTA_DISB_STATUS>

While testing this case, I get negative response. Because in target RFC request, it creates blank record for 'DATE' which is an optional parameter but has type 'ACE_PARAM_NAME_RANGE' under 'Tables' tab in RFC.

Now if I remove this 'DATE" tag completely, RFC gets processed and gives response ideally as below .

  1. 2. Successful Test Case

Source SOAP Request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sap="http://SAP_EWP-Integration">

<soapenv:Header/>

<soapenv:Body>

<sap:MT_CF_DISB_STAT_REQ>

<BUKRS>7000</BUKRS>

<MANU_CO_CODE>TSL0000001</MANU_CO_CODE>

<!--Optional:-->

<PRODUCT></PRODUCT>

</sap:MT_CF_DISB_STAT_REQ>

</soapenv:Body>

</soapenv:Envelope>

Target RFC Request

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

<ns1:ZTA_DISB_STATUS xmlns:ns1="urn:sap-com:document:sap:rfc:functions">

<BUKRS>7000</BUKRS>

<MANU_CO_CODE>TSL0000001</MANU_CO_CODE>

<PRODUCT />

<IT_HEADER />

<RETURN />

</ns1:ZTA_DISB_STATUS>





Since we are not supposed to change anything in RFC(SAP), How do I tackle this mapping issue in SAP PI?

Can I handle it using 'node functions' in message mapping? How?





Thanks,

Amit Patil

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi

In the request message mapping, map the date field in target side in the below way so that it will not be created for empty values.

Thanks,

Indrajit

Former Member
0 Kudos

Hi Indrajit,

It worked successfully with the way you shown in the above mapping.

But can you explain the way in which the above node functions work? Any link for the same?

Thanks,

Amit Patil

former_member182412
Active Contributor
Former Member
0 Kudos

Hi Amit

The 'MapWithdeFault'  function allows to pass a default value when the segment is missing in the payload.

CreateIf is used for creating target node based on some condition.

So the above graphical mapping logic is

if the id value is not equal to blank , then only create the target node UID.

You will get many blogs in SCN for the node functions in sap PI.

Thanks,

Indrajit

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Amit,

why don't you just map the DATE node asking before if it exists? there is an 'exists' block that checks that at node functions...

Cheers,

Edu