Skip to Content
avatar image
Former Member

Receiver Determination Condition not working at runtime

Hi Experts,

We are using SAP PI 7.1 System. There are 3 interfaces, where sender is SAP ISU (via standard proxy) and receivers are MDM and SOA (via webservice).

To decide the receiver, we implemented the XPATH conditions.

/p1:UtilitiesDeviceERPSmartMeterLocationNotification/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID = HES

message should go to MDM

/p1:UtilitiesDeviceERPSmartMeterLocationNotification/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID != HES (not equal to HES)

message should go to SOA

When i test this through integration engine it is working as expected.

But when i test this end-to-end, the above condition root get changed at runtime.

CPA Cache Refresh and SXI_Cache done multiple times, after cache refresh interface works for few hours and then issue pops up again.

For ex: message is for UtilitiesDeviceERPSmartMeterLocationNotification interface.

Please find below receiver determination trace for same message, where root of the condition changed at runtime to UtilitiesDeviceERPSmartMeterRegisterCreateRequest.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!-- Receiver Determination --> <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30"><Trace level="1" type="T">CL_XMS_MAIN-&gt;DETERMINE_EXT_PID: CENTRAL</Trace>

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

<Trace level="1" type="T">Sender scheme external = </Trace>

<Trace level="1" type="T">Sender agency external = </Trace>

<Trace level="1" type="T">Sender party external = </Trace>

<Trace level="1" type="T">Sender party normalized = </Trace>

<Trace level="3" type="T">##### DG: 0</Trace>

<Trace level="3" type="T">##### TO: 3</Trace>

<Trace level="1" type="B" name="CL_XMS_HTTP_HANDLER-HANDLE_REQUEST"></Trace><!-- ************************************ -->

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

<Trace level="2" type="T">Request Line = POST /sap/xi/engine/?type=entry HTTP/1.0</Trace>

<Trace level="2" type="T">Host = MB3AP1069:50200</Trace>

<Trace level="2" type="T">Server protocol = HTTP/1.0</Trace>

<Trace level="2" type="T">Remote address = 10.212.178.153</Trace>

<Trace level="3" type="T">COMMIT is done by IS ! </Trace>

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

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

<Trace level="1" type="T">CL_XMS_MAIN-&gt;DETERMINE_INT_PID: SAP_CENTRAL</Trace>

<Trace level="3" type="T">##### DG: 0</Trace>

<Trace level="3" type="T">##### TO: 3</Trace>

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

<Trace level="3" type="T">No triggers found. OK. </Trace>

</Trace>

<Trace level="3" type="T">system-ID = RX2</Trace>

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

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

<Trace level="3" type="T">user = BASIS</Trace>

<Trace level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA  </Trace>

</Trace>

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

<Trace level="1" type="T">Message-GUID = 0050569403CE1ED3AA9B792DB442C615</Trace>

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

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

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

<Trace level="3" type="T">QOS = EO</Trace>

<Trace level="3" type="T">Message-GUID = 0050569403CE1ED3AA9B792DB442C615</Trace>

<Trace level="3" type="T">Generate prefixed queue name </Trace>

<Trace level="1" type="T">Queue name : XBTI0003</Trace>

<Trace level="1" type="T">Generated prefixed queue name = </Trace>

<Trace level="1" type="T">Schedule message in qRFC environment </Trace>

<Trace level="3" type="T">Setup qRFC Scheduler </Trace>

<Trace level="1" type="T">Setup qRFC Scheduler OK! </Trace>

<Trace level="3" type="T">Call qRFC .... MsgGuid = 0050569403CE1ED3AA9B792DB442C615</Trace>

<Trace level="3" type="T">Call qRFC .... Version = 000</Trace>

<Trace level="3" type="T">Call qRFC .... Pipeline = CENTRAL</Trace>

<Trace level="3" type="T">OK. </Trace>

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

<Trace level="1" type="T">Going to persist message </Trace>

<Trace level="1" type="T">NOTE: The following trace entries are always lacking </Trace>

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

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

<Trace level="1" type="T">Async barrier reached. Bye-bye ! </Trace>

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

</Trace>

<Trace level="3" type="T">Version number = 000</Trace>

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

<Trace level="3" type="T">Persisting message Status = 001</Trace>

<Trace level="3" type="T">Message version 000</Trace>

<Trace level="3" type="T">Pipeline CENTRAL</Trace>

<Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE"></Trace><!-- ************************************ -->

<Trace level="3" type="T">Trace object available again now. OK. </Trace>

<Trace level="3" type="T">Message was read from persist layer. OK. </Trace>

<Trace level="3" type="T">Message properties in XMB object were setup. OK. </Trace>

<Trace level="3" type="ToDo">Make sure we catch exceptions in persist read </Trace>

<Trace level="3" type="ToDo">Tracing obj. not avail. before return of CL_XMS_MAIN-PERSIST_READ_MESSAGE</Trace>

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

<Trace level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA Start of pipeline service processing PLSRVID= PLSRV_XML_VALIDATION_RQ_INB</Trace>

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

<Trace level="3" type="T">Pipeline Service = PLSRV_XML_VALIDATION_RQ_INB </Trace>

<Trace level="3" type="T">Skip Inbound Validation =  </Trace>

<Trace level="3" type="T">Skip Outbound Validation =  </Trace>

<Trace level="3" type="T">Area = XML_VALIDATION_INB </Trace>

<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 level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA End of pipeline service processing PLSRVID= PLSRV_XML_VALIDATION_RQ_INB</Trace>

</Trace>

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

<Trace level="1" type="Timestamp">2014-03-11T05:12:51Z INDIA Start of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>

<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 level="2" type="T">Start without given receiver </Trace>

<Trace level="2" type="T">Classic Receiver Determination via Rules. </Trace>

<Trace level="3" type="T">...create rule engine </Trace>

<Trace level="2" type="T">Check conditions for rule line no. 1  </Trace>

<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&amp;_MSG&amp;;NSP=&amp;_NSM&amp;;XPATH=&quot;/p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID&quot;)% NE HES </Trace>

<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID </Trace>

<Trace level="2" type="T">......extracting values found: 0 </Trace>

<Trace level="2" type="T">......extracting values found: 0 </Trace>

<Trace level="2" type="T">...valid Receiver with Condition:  - SOA_DEMO </Trace>

<Trace level="2" type="T">Check conditions for rule line no. 2  </Trace>

<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&amp;_MSG&amp;;NSP=&amp;_NSM&amp;;XPATH=&quot;/p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID&quot;)% CE HES </Trace>

<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID </Trace>

<Trace level="2" type="T">......extracting values found: 0 </Trace>

<Trace level="2" type="T">......extracting values found: 0 </Trace>

<Trace level="2" type="T">...invalid Receiver:  - Emeter_Demo </Trace>

<Trace level="2" type="T">No Receiver found behaviour: 0  </Trace>

<Trace level="2" type="T">Number of Receivers:1  </Trace>

</Trace>

<Trace level="1" type="Timestamp">2014-03-11T05:12:51Z INDIA End of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>

</Trace>

</SAP:Trace>

any input on this would be helpful.

Thanks,

Mandar

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    Mar 25, 2014 at 06:44 AM

    Hi Mandar,

    Have you tried not selecting a software component version in receiver determination and entering the conditions manually?

    Regards,
    Mark

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Implemented enhanced receiver determination. Do not know if it is the only solution, but this is working as of now without any issues.

  • Mar 25, 2014 at 05:27 AM

    Hi,

    can you cross check your message type and data type which is used for proxy?


    Can you regenerate the proxy and check?


    Regards,

    Muni.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Mar 26, 2014 at 07:57 AM

    Hi Mandar,

    It sure appears unusual. Please select appropriate SWCV during creation of Receiver determination object and make sure that the prefix is populated with appropriate value (ideally namespace) while maintaining XPath. Refer attached image.

    Hope this helps !

    Regards

    Bibek


    Add comment
    10|10000 characters needed characters exceeded