cancel
Showing results for 
Search instead for 
Did you mean: 

Multi Mapping - business system inbound Error

baskar_ramasamy
Participant
0 Kudos

Hi Experts,

I already created a thread for multi-mapping - inbound with two business service,but i didint get exact solution ; http://scn.sap.com/message/13746678#13746678 , so i am trying a different scenario.

Sender channel (business service) - Oracle DB , Adapter Sender JDBC

Two Receiver channel's (business system): ECC , Adapter : XI(proxy) & JDBC

Data will be picked from DB and the record should be splitted based on id=1 or 2

if id=1 - data should be sent to ECC via XI(proxy)

if id=2 - data should be sent to DB using JDBC adapter which has been configured in business system.

Note: If i send 1 record , it is properly updating in ECC or DB based up on id=1 or 2.

         If i send 2 record with id=1 , those 2 records sent to ECC , likewise if i send 2 record with id=2, it is written to DB.   

But if i send 2 records , which has id=1 for 1st record and id=2 for 2nd record. it throws below error, In Technical Routing.and no records sent to ECC or DB.

<SAP:Stack>At least two of the sub messages deal with different Adapter Engine types. Check the channels</SAP:Stack>

Please help me on this issue.


Thanks,

Baskar

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Check your mapping...whether it generating the expected results or not...

I tried the above scenario and it works fine for me...but i have used both java adapters only..

May you need to specify more details like how the ID objects have been configured ?

HTH

Rajesh

baskar_ramasamy
Participant
0 Kudos

Hi Rajesh,

if i use java adapters, it works fine for me too. when i use XI and JDBC i am getting error.

My scenario is to split records based on some conditions and valid records should go to ECC and invalid records should go to oracle DB.

Is there any other option to achieve this scenario?

Thanks,

Baskar

Former Member
0 Kudos

Hi Baskar,

It would be better if you change the design as below.

1)Use ERD

and use the below sample code to open respective BC/BS .

Adv:By using ERD you can handle scenarios like (when all the records are related to ECC or when all the records are related to d/b)

int ABAPCount =0;

int OracleCount =0;

for(int i=0;i< ID.length;i++)

{

if(ID[i].equals("1")){

ABAPCount++;

}

else if(ID[i].equals("2")){

PICount++;

}

}

if(ABAPCount !=0){

result.addValue("BS_ECC");

}

if(OracleCount !=0){

result.addValue("BC_Oracle");

}

Now use two mappings 1 for JDBC-->JDBC and other for JDBC -->ECC.

In mappings distinguish the records as below

Regards

Venkat

Former Member
0 Kudos

Hi,

If you are using PI 7.1 Ehp1 then you can try using SOAP adapter rather than using XI adapter..

As soap adapter is a part of Java stack.it may work for you...

Gud luck

Rajesh

baskar_ramasamy
Participant
0 Kudos

Hi Venkat,

i have created a below udf. and tried ERD. now i am getting "Missing or Invalid receiver agreement"

int x = 0;

int y = 0;

for(int i = 0;i <  var1; i++)

{

if(var1 == 1){

x = x + 1;

}

else if(var1 == 2){

y = y + 1;

}

}

if(x !=0){

//result.addValue("SAMPLE_TEST");

return "SAMPLE_TEST";

}

if(y !=0){

//result.addValue("SAMPLE_TEST_1");

return "SAMPLE_TEST_1";

}

return "false";

=========

help me on this please.

Thanks,

Baskar

Answers (3)

Answers (3)

former_member181985
Active Contributor
0 Kudos

Hi,

You can achieve your scenario without multi-mapping as well. Use normal split scenario with two mappings and use conditions either in receiver determination/interface determination.

Regards,

Praveen

Former Member
0 Kudos

Hi,

>>now i am getting "Missing or Invalid receiver agreement"

Check whether did you created 2 RA's for communication components (SAMPLE_TEST-SAMPLE_TEST),(SAMPLE_TEST-SAMPLE_TEST_1).

Map as below in mapping.

>

Fine tune ur code it's not proper.

Regards

Venkat

baskar_ramasamy
Participant
0 Kudos

Venkat,

Thanks, Problem is Interface determination, now the test scenario is working fine.

i will implement this with real scenario and let you know the status.

Thanks,

Baskar

baskar_ramasamy
Participant
0 Kudos

Venkat,

Issue has been solved. Thanks a lot. 🙂

GabrielSagaya
Active Contributor
0 Kudos

did you specify the condition id=1 for Receiver ECC and id=2 for Receiver JDBC in condition editor of Receiver Determination either in the form of XPATH expression or Context Objects?

Also did you perform "Test Configuration" in ID for both cases?

baskar_ramasamy
Participant
0 Kudos

Gabriel,

I have done multimapping , so based up on condition configured in mapping, if id=1 it will create to target 1 , else it will create target 2.

target 1 is configured to ECC and target 2 is configured to JDBC.

so i have not configured in condition editor.

Thanks,

Baskar

GabrielSagaya
Active Contributor
0 Kudos

As per the below thread, Non-Java Stack adapters like IDOC, HTTP  and ABAP Proxy will not supported.

http://scn.sap.com/thread/1763210

former_member181985
Active Contributor
0 Kudos

Gabriel is right. You can check for my blog if PI version <= 7.0 to post message to ECC proxy via SOAP adapter with HTTP protocol: http://scn.sap.com/community/pi-and-soa-middleware/blog/2010/01/14/calling-abap-proxies-using-soap-a...

if PI version >= 7.1 (Enhancement Package 1 with PI 7.1), you can use SOAP adapter with XI3.0 protocol to send message directly to ECC proxy instead of XI adapter.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/70066f78-7794-2c10-2e8c-cb967cef4...

Regards,

Praveen

Message was edited by: Praveen Gujjeti

former_member181985
Active Contributor
0 Kudos

Hi Baskar,

It seems your PI installation has more than one Adapter Engine. For receiver communication channels, make sure that same Adapter engine is selected as adapter type in Integration directory configuration for these communication channels.

Regards,

Praveen