cancel
Showing results for 
Search instead for 
Did you mean: 

Interface Design

Former Member
0 Kudos

Hi.. I am doing an interface between Siebel to SAP for Order and Contracts Creation. We have separate XSDs for Orders and Contracts (Siebel side) where as only one RFC for SAP side. The requirement is, when an order is created in Siebel, it transfers the Order and Contract data to SAP. Based on the Order types created in Siebel (both Sales Order & Contracts), the interface should work accordingly (i.e. if it is a Sales Order, then have to consider one mapping program, and if it is Contracts, have to consider another mapping program). In both cases again there is a mapping program for return structure. Can any one guide me how do I design this interface?

Thanks & Regards

Viji

Accepted Solutions (1)

Accepted Solutions (1)

STALANKI
Active Contributor
0 Kudos

If am not wrong you have to collect two messages and send it as a single message .Isnt it?

Do they come as 2 different messages to XI?

In the interface determination there is a condition editor.You can check the order type='c' then one interface mapping.if not,another one.

Former Member
0 Kudos

Sravya,

I dont think its two different messages...

now i have two different sets of mapping programmes:

1) SiebelMessage(Orders) to RFC and

RFC Response to Siebel Message(Orders) (for return structure)

2) SiebelMessage(Contracts) to RFC and

RFC Response to Siebel Message(contracts) (for return structure)

>>In the interface determination there is a condition editor.You can check the order type='c' then one interface mapping.if not,another one

i am aware of this, but never used this condition editor, can u plz explain me...

Thanks & Regards

viji

Former Member
0 Kudos

Hi vijaya,

anyway, about condition based routing, you can base your routing on every fields of the message, body or header (e.g. IDocs) and conditions are defined using XPATH

A couple of interesting links are:

- <a href="http://help.sap.com/saphelp_nw04/helpdata/en/42/ed364cf8593eebe10000000a1553f7/frameset.htm">Enhanced (Mapping-Based) Interface Determination</a>

- <a href="http://help.sap.com/saphelp_nw04/helpdata/en/67/49767669963545a071a190b77a9a23/content.htm">Condition editor</a>

- <a href="http://help.sap.com/saphelp_nw04/helpdata/en/ab/13bf7191e73a4fb3560e767a2525fd/frameset.htm">Using the Expression Editor</a>

Hope it helps,

Kind Regards,

Sergio

Former Member
0 Kudos

Hi Sergio,

Thanks for your response, i am working on that, i have some more doubts, wl get back to u, once i am done with my part.

Thanks & Regards

Viji

Former Member
0 Kudos

Hi vijaya,

Ok, don't hesitate to ask!

Regards,

Sergio

Answers (3)

Answers (3)

Former Member
0 Kudos

I would have to agree with Sergio...

Your error is stating that no interface can be determined... So basically if you have conditions in your interface determination maybe they are excluding all messages... (configured the wrong way)...

Or maybe your source document simply does not have the order typoe that you need...

Former Member
0 Kudos

Hi Alex & Sergio,

May be what you are saying is correct, as sometimes i am getting a success message and sometimes the above error. I asked the team to populate all the values for my source document, so that i can get to know, whether there is a problem in my interface or something else... Thanks for all your help and guidance.

Regards

Viji

Former Member
0 Kudos

Use wrapper RFC to R/3. call the 2 RFCs in the wrapper RFC. Whatever the Seibel sends update that (sales order / contract data) using respective BAPI/FM with in wrapper. Get the return parameters and route to Seibel system. Here the mapping is n:1

reg.,

Yallabandi

Former Member
0 Kudos

Rajesh,

there is only one RFC programme.

Thnks & Regards

viji

Former Member
0 Kudos

Hi vijaya,

from what I'm understading your interfaces are:

1) message A to RFC XXX

2) message B to RFC XXX

And there is no correlation between them.

Then these are two separate interfaces, so I would say you need in IR:

- 3 message interface (<i>A, B, XXX</i>)

- 2 interface mapping (<i>MAPPING_A_TO_XXX, MAPPING_B_TO_XXX</i>).

Then in the scenario (ID) you will have 2 source interfaces that will use the same target interface but with different mappings, this means:

- 2 Receiver determination:

a) <i>Siebel + interface A -> SAP</i>

b) <i> Siebel + interface B -> SAP</i>

- 2 Interface determination

a) <i>Siebel + interface A -> XXX</i> using <i>MAPPING_A_TO_XXX</i>

b) <i>Siebel + interface B -> XXX</i> using <i>MAPPING_B_TO_XXX</i>

Plus the normal receiver/sender agreement..

If I properly understood your scenario, you do not need condition for interface determination.

Hope it helps,

Kind Regards,

Sergio

Former Member
0 Kudos

Hi Sergio,

Sorry for the confusion, its not Siebel to SAP, the interface is from SAP to Siebel i.e whenever there is a change either in the order or contract SAP should send data to siebel.

1) SAP side we have a standard IDOC - ORDERS

2) Siebel side - TWO external definitions (messages) ORDERS & CONTRACTS

3) Based on the Order type, data should get populated i.e ORDERS/CONTRACTS

4) SAP side we are using IDOC adapter

5) Siebel side to receive data from SAP, we are using HTTP adapter. Siebel is providing two different URL's one for Orders & one for Contracts.

Plz suggest me an appropriate design.

Thanks & Regards

Viji

Former Member
0 Kudos

Hi Vijaya,

np, then you will have:

In IR:

import the 2 external definitions and create message interfaces for the external definitions.

Import the idoc from your sender SAP system

Create 2 message mapping and interface mapping.

1) MAPPING_sap_Order_TO_ext_Order

2) MAPPING_sap_Order_TO_ext_Contract

Then in the scenario (ID) you will have 1 source interface that will go to 2 target interfaces with different mappings, this means:

- 1 Receiver determination:

a) sap_Order -> Siebel

- 2 Interface determination

a) SAP + sap_Order -> if condition 1 then ext_Order using MAPPING_sap_Order_TO_ext_Order

b) SAP + sap_Order -> if condition 2 then ext_Order MAPPING_sap_Order_TO_ext_Contract

Plus the normal receiver/sender agreement..

In this case you need condition but just for interface determination

Hope it helps,

Kind Regards,

Sergio

Former Member
0 Kudos

Hi..

the other day, i tried the same approach, but i am unsuccessfull... lemme try once again..

thanks & regards

Former Member
0 Kudos

Hi Vijaya,

let me know which is the problem you're facing and maybe I can help you!

Best Regards,

Sergio

Former Member
0 Kudos

Hi Vijaya,

your scenario seems to be ok,

which is the problem you see? is'nt it running?

Regards,

Sergio

Former Member
0 Kudos

Hi Sergio,

its under testing... sometimes its throwing an error like:

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

- <!--

Interface Determination

-->

- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">

<SAP:Category>XIServer</SAP:Category>

<SAP:Code area="IF_DETERMINATION">NO_IIF_CASE_ASYNC</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText />

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack>Unable to find inbound interface</SAP:Stack>

<SAP:Retry>M</SAP:Retry>

</SAP:Error>

Any inputs!

Thnks & Regards

Former Member
0 Kudos

Hi Vijaya,

are you sure that in interface determination condition 1 = not (condition 2), which means are you sure you can always determine a target interface for your source interface on the base of your condition?

The error is "Unable to find inbound interface" and this could be the reason!

Hope it helps,

Regards,

Sergio