cancel
Showing results for 
Search instead for 
Did you mean: 

Interface determination condition

Former Member
0 Kudos

Hi - I am trying to create conditions for interface determination but do not see the Message structure in order to write the XPATH rules on? can you help

m

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi madhu,

I have not done this myself, but you can get helpful pointers here...

http://www.w3schools.com/xpath/xpath_operators.asp

Do keep giving it different params, and I guess it should work.

cheers,

Prashanth

Former Member
0 Kudos

Prashant / Others - Still having trouble..but I want to understand basic function..

I have an XML coming line this..

<Parent>

<Child1>

<Name>n1</Name>

<Address>a1</Address>

</Child1>

<Child2>

<Name>n2</Name>

<Address>a2</Address>

</Child2>

.

.

.

</Parent>

Based on say Address1, I want to direct one CHILD to mapping <b>X</b> and another to <b>mapping Y</b>, can this be done using interface determination. Will interface conditions go through each record and assign mapping interfaces accordingly or ONLY LOOKS AT FIRST RECORD?

Former Member
0 Kudos

I actually tested interface determinatin as below

> Put one interface mapping for a condition

> Put second interface mapping for the exactly opposite

I had a file with 2 records. First satisfying first mapping and second satisfying second mapping condition

When I ran the interface, the first one ran with both records while second mapping was never called!! This means this condition only looks at first occurrence

How do I fix this? I can put it inside the mapping in an user defined function but when I do that, the output will be created with blanks and give a mapping error

m

bhavesh_kantilal
Active Contributor
0 Kudos

Maddux,

<i>Will interface conditions go through each record and assign mapping interfaces accordingly or ONLY LOOKS AT FIRST RECORD?</i>

This cannot be done using Interface determiantion.

the option would be to do a 1: N ( multi mapping ) during your Graphical Mapping. Write the condiotion on which the message will be split into any of the target message.

Look at this blog,

/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible

Regards,

Bhavesh

Former Member
0 Kudos

Thanks Bhavesh.. This is a special case.. I use UDF to memory manipulate all incoming records at the same time. If they come 1 at a time, the process will not work.

However, I now was able to put mutually exclusive filters in both the mappers. However, this is waht is happening..

> When the IDOC on target side does not have any mappings, because the root element has 1 occurence, it always goes out to the adapter with

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

<IDOC_NAME />

This results in SYSFAIL error on the IDOC adapter side. How can this be suppressed..

It will be great if this works

moorthy
Active Contributor
0 Kudos

HI,

If SYSFAIL is there, go to SM59->TCP/IP connection and test the AI_RUNTIME_JCOSERVER connection.

This error may be because of the JCO communication error,

If so, try to restart the J2EE engine or recreate this RFC destination and try it.

Regards,

Moorthy

Former Member
0 Kudos

Murthy - Very clearly it is because I am unable to completely suppress the IDOC.. It is going with invalid XML structure

Answers (7)

Answers (7)

Former Member
0 Kudos

Hi Madhu,

I think BPM+ XSLT mapping can do this. Not sure though.

cheers,

Prashanth

P.S Please mark helpful answers

Former Member
0 Kudos

Hi Madhu,

Try these links...

http://www.intelligententerprise.com/channels/applications/feature/archive/kasturi.jhtml ( See IDOC reductions)

cheers,

Prashanth

P.S Please mark helpful answers

Former Member
0 Kudos

Alternative is..

Can BPM do the following.. ?

I have 100 records coming in..

Based on a rule, it needs to be split into 60 and 40

Now, can 60 be sent at one SHOT to the mapper1 &&

the 40 be sent at one SHOT to mapper2?

Former Member
0 Kudos

Madhu,

You can delete the imported objects & re-import the IDOC or

also try to reimported the structure in IDX2.

You can use the report IDX_RESET_METADATA to delete the structure

Also, check ur XML for validity

Hope this helps you!

cheers,

Prashanth

P.S Please mark helpful answers

Former Member
0 Kudos

Hi Madhu,

I think this error is due to a problem either in your source file or your mapping. When the IDOC is to be sent to the destination system, it expects the first tag to be <IDOC begin = > , but I dont think that is happening in your mapping.

Check your mapping again

cheers,

Prashanth

Former Member
0 Kudos

oHH.. That is what I am trying to achieve.. I want to SUPPRESS the IDOC which I am doing but root element still exists..

i.e. if conditions are not good, I do *not * want an IDOC to be created

How to completely suppress the Right handside which is an IDOC?

m

Former Member
0 Kudos

Hi Maddux,

Double click on SYSFAIL in SMQ2, and paste the error here.

cheers,

Prashanth

P.S Please mark helpful answers

Former Member
0 Kudos

XI Error ATTRIBUTE_IDOC_METADATA.IDOC_ADAPTER: Que..

<b><u>.. This is what I found in the trace on MONI</u></b>

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

- <!-- Call Adapter

-->

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

<SAP:Category>XIAdapter</SAP:Category>

<SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_METADATA</SAP:Code>

<SAP:P1>MSGGUID 10A0A466D22C7D46853CBD345D731C8E: Tag found instead of tag IDOC BEGIN=</SAP:P1>

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText />

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack>Error: MSGGUID 10A0A466D22C7D46853CBD345D731C8E: Tag found instead of tag IDOC BEGIN=</SAP:Stack>

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

</SAP:Error>

moorthy
Active Contributor
0 Kudos

Go to IDX2 and delete the Metadata entry and Reload the idoc metadata.

Did you change the idoc after importing into Repository ? If so reimport the idoc into Repository agian.

Regards,

moorthy

Former Member
0 Kudos

I am using External definition because I will not multiple IDOCs created. So, I change the <b>IDOC</b> element to minOccurs=0 and maxOccures =unbounded. This is OK.. But when I map, as I said show before, the <b>IDOC root element</b>, which is the <b>name</b> of the IDOC itself stands out as

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

<%IDOC_NAME% />

Former Member
0 Kudos

Sorry... Looks like this

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

<WMMBID02 />

Would turning off IDOC SYNTAX check be the solution so that it will send it to ECC but will not error out on XI and hold queues?Any other better approaches

Former Member
0 Kudos

Hi Madhu,

Which structure?

Former Member
0 Kudos

Thanks Prashant! Resolved the issue.. It was defined as inbound structure rather than outbound.

m

But have a rather complex condition..

> The RHS of my condition, I need to check if first character is not "-". Any ideas i.e.

/p1:mt_xxx/yy/zzz <> First character '-'

moorthy
Active Contributor
0 Kudos

HI,

With Siubstring and Startswith functions it is possible

Go thru this blog it will help you-

/people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination

Regards,

Moorthy

Former Member
0 Kudos

Hi Madhu,

Please take a look at these...

Hope you get an idea!

cheers,

Prashanth

P.S : Please mark helpful answers

Former Member
0 Kudos

Prashant - Thanks ! But I am not able to see the structure of the left hand side message? Why?

m