Use RFC message exception in Interface Mapping
Hi,
during my BP scenario I want to use the content of a RFC exception given back by my RFC in a interface mapping.
Now I'm asking myself how to refer to a RFC exception as a source interface in an interface mapping (to use it in a message mapping was no problem).
Do I have to specify a special message interface for the RFC exception?
Thanks for any answer!
Hi Christina,
Cant believe that. Of course you need another interface.
For example:
synchr outbound-interface (output-message, input-message, fault-message)
RFC is your inbound-interface in the interface mapping mapping. You should be able to choose Request, Response and Fault Type for the RFC.
if nothing helps, send me screenshots (if-mapping, the other interface, the RFC) to [email protected]
Regards,
Udo
Similar Messages
-
Handling PI 7.1 RFC Lookup Exception in Graphical Mapping
Dear Experts,
I would like to know the better way of handling PI 7.1 - RFC Lookup Exception in Graphical Mapping without using BPM. Say I perform a RFC Lookup from PI 7.1 Graphical Mapping and it fails due to RFC server down. In this case I suppose the RFC exception would be returned as response to the mapping? But, am really not sure how this response (RFC Exception) could be effectively used. Please clarify.
Thanks,
Hussain.
Edited by: HussainShaik on Oct 26, 2009 8:24 AMHi Hussain,
I am not sure if I understood you query completely.
IF the RFC look up raised some exception then how this is going to impact your interface will depend your mapping (which you did in ESR)
(the following is adopted from help.sap,com)
If you handled exceptions by selecting Use Exceptions checkbox in the function properties of the standard function, the mapping editor adds an additional parameter in red (the bottommost return parameter) to the standard function in the data-flow editor. If you do not assign a target field to this return parameter, ignore the RFC exceptions (the message mapping is not terminated at runtime). Otherwise the mapping runtime transfers the exception as an XML structure and it can then be evaluated in a user-defined function, for example. If there is no exception, the mapping runtime transfers an empty context.
If you have not selected the Use Exceptions checkbox, the mapping runtime terminates the message mapping if an exception occurs during the RFC lookup.
Is this you are looking here?
Also check this thread and help.sap site
Re: SAP-PI - RFC call to SAP backend system
http://help.sap.com/saphelp_nwpi71/helpdata/en/33/1ec6ced273493a993a80c2301c03da/content.htm
Regards
Suraj -
Using RFC Look Up in Java Mapping
Hi All,
I need to do an RFC Look Up in a Java Mapping program. The response structure of the Function Module to be called consists of only one node called RESULT. In order to read the value exported by the function module in this export parameter RESULT, I am using the following code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
factory.setNamespaceAware(false);
factory.setValidating(false);
Document docResponse = null;
InputStream in1 = result.getContent();
docResponse = builder.parse(in1);
String output = docResponse.getDocumentElement().getFirstChild().getNodeValue();
The function module works correctly and returns the expected result when tested in SE37. However, on running the above code, the statement docResponse.getDocumentElement().getFirstChild().getNodeValue(); always returns the value NULL and not the expected value that is actually returned by the RFC.
Kindly let me know where could I be going wrong.
Thanks in advance.Hi Sreehari,
Your DOM code looks correct, it might be something with the overall code of java mapping. Just have a look at this blog /people/morten.wittrock/blog/2006/03/30/wrapping-your-mapping-lookup-api-code-in-easy-to-use-java-classes
and compare you code with it. See whether you can fine tune your coding to get the rigth response.
Regards
Suraj -
Is it possible to use External Defiantion in Interface Mapping?
Hi Experts,
Is it possible to use External defination in Interface mapping? I used this ED in Message Mapping but I am unable to use the same ED for Interface Mapping?
In order to create Interface Mapping I need to create Message Interface and use it in Interface Mappiong?
Thanks
RajeevHi Rajeev,
External definitions is for importing avaliable external DTD,XSD or WSDLs instead of creating them in XI environment maually by creating elements under datatypes,assigning them too Message types and Message Interfaces etc.Where as you fo for Imported Archives to import externally done Mapping programs like JAVA,ABAP and XSLT mappings but not define Mesage interfaces.
So you can create message interface import appropriate External definition into it.Later use it during interface mapping.Hope you understand it.
Thanks,
Ram. -
Message Mapping vs Interface Mapping test tabs giving different results.
Hi all,
I am developing an interface that always requires an output file to be created (even if there is no data). I have found a way to change my select statement in the JDBC sender to initiate the message even if there isn't any data (using UNION select -1 ID, '' col1, '' col2, etc.) and that seems to work fine. I then put logic in the message mapping to suppress the row that contains the -1 ID value, which would result in an empty file when there is no other data, and should result in a file containing only the correct data when there is data.
So, my problem: I am always getting empty files with this logic. I tested the logic in the message mapping test tab and it worked perfectly, however when I test it using the interface mapping test tab it results in what becomes an empty file!
My source and destination structures are fairly simple:
Root
--row
ID
col1
col2
The logic I use to suppress the ID = -1 row is:
=removeContexts([]ifWithoutElse([keepss=true]Not([]equalsS([]ID, Constant([value=-1]))), SplitByValue([type=Each value]row)))
Obviously, I'm stumped - any help would be appreciated!
Edited by: Mike Morrison on Sep 23, 2010 5:04 PMHi Mike,
Can you quote the error log..u r getting error in message mappin or interface mapping?
Please suggest the test results for both the mappings.
Thanks,
Sushama -
Query Regarding Multi-Message Mapping in Interface Mapping.
Hi All,
I've a query that can we use Multi-Message Mapping in Interface Mapping if:
One mapping structure is simple one-2-one mapping and
Second mapping is calling a stored procedure.
Please give me some links if the answer is YES.
Thanks in Advance.
Regards,
Sreedhar.
Edited by: Sreedhar Av on Oct 12, 2009 1:26 PMHi,
Your question not clear buddy..what i understood is..
If you want execute multiple message mappings in Interface mapping we can ,just add two mapping programs in interface mapping.first mapping program output is input to the second mapping program.
If first mapping program is very simple,if you want to execute stored procedure in second level mapping write used defned fun ction to conect to data base or create JDMC receiver communication channel ,cal the communictaion channel in udf.write stored procedure in UDF.
SEARCH for more info in sdn how to perform DBLOOKUPS.
regards,
Raj -
No messages created from split mapping error .....
HI XI Friends..
In My XML to RFC scenario,,
i am doing message splitting withput BPM.
in message mapping ..i changed target message occurance to unbounded
and same i did in interface mapping also..
static test is OK..creating multiple target messages in static test.
in interface determination,using enhanced option i given interface mapping.
file is picking but in SXMB_MONI ...i am getting error like this
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Request Message Mapping
-->
- <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="MAPPING">GENERIC</SAP:Code>
<SAP:P1>No messages created from split mapping</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>No messages created from split mapping</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
please guide me..
regards
ramHi Ram,
Check these..
Split mapping created no messages
Message Split without BPM - Error
cheers,
Prashanth
P.S Please mark helpful answers -
Is is possibel to do an RFC Lookup from The Graphical Mapping?
Greetings,
While doing a message mapping I need to get the value from R3 system using an RFC, is it is possible ?Hi
we can do by using rfc look ups
Lookup in mapping is the feature provided by SAP to lookup the data in the target R/3 or DB systems with the API provided.
You need to write UDF in order to implement the API's provided by SAP.Consider the below example
VendorNumber-UDF--CURR
The scenario is legacy to SAP. The legacy system doesn't provide the currency details. But the target field need's to be populated with currency value.
"The business rules says there are values maintained in SAP Table where if you pass VendorNumber it will return thr currency to you"
So what you can do? You can write UDF implementing SAP Provided API's and do a lookup in the SAP System and get back the currency value and populate them in CURR field.
I hope it clears a bit.
Please find the below blogs
DB Lookup: /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
RFC Lookup:https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a03e7b02-eea4-2910-089f-8214c6d1b439
There are three types of look ups u can do
RFC look up
SOAP look up
JDBC look up
What is Lookup and why we need:
Within an XI mapping it is a common requirement to be able to perform data lookups on-the-fly. In particular, there may be a need to look up some data that is maintained in an R/3 application.
In the error handling topic we have seen the different validations which need to be performed on file. This can be done through Lookup.
Some use cases:
Look up material number from table MARA.
Look up cost center budget.
Look up employee information.
Look up unit-of-measure (UOM) information from table t006a.
Lookup for raising an alert.
The purpose of the lookup may be:
To perform application-level validation of the data, before sending it to the backend.
To populate fields of the XML document with some additional data found in the backend application.
This is a form of value transformation.
The "value mappings" offered by XI are not adequate in this case, since the data would have to be manually entered in the Integration Directory.
There are two ways in which we can do lookup:
Call lookup method from GUI mapping.
Call lookup method from XSLT mapping.
Lookup method from GUI mapping can be called using any of the following ways.
RFC lookup using JCO (without communication channel)
/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
RFC lookup with communication channel.
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
Lookup using JDBC adapter.
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
/people/sap.user72/blog/2005/12/06/optimizing-lookups-in-xi
CSV file lookup.
/people/sundararamaprasad.subbaraman/blog/2005/12/09/making-csv-file-lookup-possible-in-sap-xi
Lookups with XSLT - https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/8e7daa90-0201-0010-9499-cd347ffbbf72
/people/sravya.talanki2/blog
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14
DB lookup - /people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
You can refer to these links.
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer Absolute stealer.
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
For Java APIs and also here you can map that how many types of lookups are possible in XI.
http://help.sap.com/javadocs/NW04/current/pi/com/sap/aii/mapping/lookup/package-summary.html -
1...n interface mapping...
Hi all,
I have a scenario(Idoc- 2 files) .its manadatory to send two files each time an idoc comes.I am using
2 messega mappings
1 interface mapping.
I am not able to achieve the requirements.
Could anyone helpone...Refer these links for multi-mapping using BPM:
Illustration of Multi-Mapping and Message Split using BPM in SAP Exchange Infrastructure
Various multi-mappings and Optimizing their Implementation in Integration Processes (BPM) in XI.
Refer this link for multi-mapping without using BPM:
/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible
Refer this link for IDoc to file scenario:
Introduction to IDoc-XI-File scenario and complete walk through for starters. -
Same message type calling 2 maps
Hi Experts,
I want to send same Idoc messagetype for two different partners and want to call different map. And these idocs are coming from same SAP system.
Let say message type Orders , first partner PARTNER01 and second partner PARTNER02.
For PARTNER01 partner message mapping name is MM1
For PARTNER02 partner message mapping name is MM2.
When SAP is sending the message for partner PARTNER01 it should call MM1 and it should not call MM2.
Output files are also going to two different system.
Could you please let me what are the configurations are required in ID?
Thanks in advance for your valuable suggestion.
Regards,
ShubhankarHi Shubhankar !
You should enter your receivers (partner01 and partner02) in the receivers table of the receiver determination object. Here you can use the condition editor to detect which system should be the receiver based on content (payload, headers, etc.). Then to specify different mappings, you should create one interface determination object for each receiver system, in each interface determination object you should specify the interface mapping to be used. Please create one interface mapping object in repository for each mapping program (mm1 and mm2).
Regards,
Matias. -
Without BPM:Call RFC using JCO in interface mapping using java mapping
Hi all
I have a very small scenario where REQUEST from the customer comes via Web Service all i have to do is to read the request using SOAP adapter and call an interface mapping(lets say the name is IM_TEST) inside which there is a JAVA MAPPING program written which will call an RFC in CRM using JCO.
Now this was really simple and i cud test the Interface mapping successfully, but the problem is when loading the scenario in integration directory i have certain things to do
1. to set the SENDER AGREEMENT which i did correctly
2. set the RECEIVER DETERMINATION, INTERFACE DETERMINATION AND RECEIVER AGREEMENT now here i am stuck because there is no receiver in my case as the RFC is called inside the mapping only.
can i call one more message mapping in IM_TEST which will write file onto the XI directory and then in RECEIVER DETERMINATION, INTERFACE DETERMINATION AND RECEIVER AGREEMENT i can mention the reciever as FTP.
I tried it but i gives the following error
Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_MM_TEST_WRITE_FILE: com.sap.aii.utilxi.misc.api.BaseRuntimeException; Parsing an empty source. Root element expected!
Please help me how to complete the scenario so that customer can run it end to end.
<REMOVED BY MODERATOR>
Edited by: Prateek Raj Srivastava on May 12, 2010 1:44 PMStefen
What do i do then...actually this is the project requirement. They want a very fast response from PI and thats why they wnt us to omit BPM and the Graphical mapping from the scenario.
I am able to test the interface mapping which calls the the Java mapping inside which there is an RFC call, but i cannot implement it end - to - end as there is no receiver business system in this case. The only business system i have is the SOAP sender.
I am really troubled now, please help me with a solution.
Is there any other possible way through which the process can become very fast whic hcan meet their requirement.
Regards
Naina -
Two Message Mappings in one Interface Mapping without using BPM
Hello Experts,
I have this scenario, please help me
I have to execute two mappings of which one is a java mapping and then the other is a message mapping sequentially.
The mapping is something like below
Message1 -> (java Mapping) -> Message2
Message2
Message1 -> (Message Mapping) -> Message3
Based on the value in Message2 I have to map Message1 to Message3
I am not an expert in java so please give me options that doesn't involve changing of java code.
The above 2 mappings have to be implemented in only one interface mapping.
Suggestions please.Hi Ravi!
You say message2 dependes on message1 and message3 is mapped from message1 but using also values from message2? But this means, that whole mapping dependes only on message1!
So change your mapping and use the one not based on message2, but message1. Put these as a condition in interface determination and based on these values use the correct mapping.
Peter
p.s. I'm not sure, if I got your requirement correctly, but your target message dependes only on message1 (since message2 dependes on it too), so this whole mapping can be done as 1. Unfortunately, you'll probably have to change your java part. Bur definetely, Raj is right.
Edited by: Peter Jarunek on Feb 20, 2008 5:36 PM -
ERROR WHILE USING XSLT MAPPING IN INTERFACE MAPPING
Hi,
We are using an xslt mapping in our scenario but while i load the XSLT mapping in the interface mapping i get a message :
Transformer configuration exception occurred when loading XSLT
sorce interface :outbound and asyncronous.
mapping : XSLT mapping (imported as a zip file)
target interface: abstract,asyncronous.
The xslt runs well in standalone and its well formed and there is no name space issue.
please help if any one has faced such a situation while using XSLT mapping.
regards,
Anirban.Hi Anirban
When you say it runs well <i>standalone</i> what exactly do you mean? Which XSLT processor are you using to run it? There are subtle difference between XSTL processors that can sometimes result in incompatibilities. For instance, I have seen XSLTs run correctly in XMLSpy but incorrectly (or at least slightly differently) in XI.
Regards,
Thorsten -
How to use rfcnormalizer.jar in interface mapping
Hi
Iam getting one error while doing xml file to RFC scenario.
the error is like this
Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: error while processing message to remote system:com.sap.aii.af.rfc.core.client.RfcClientException: functiontemplate from repository was <null>: com.sap.aii.af.rfc.afcommunication.RfcAFWException: error while processing message to remote system:com.sap.aii.af.rfc.core.client.RfcClientException: functiontemplate from repository was <null>
As a solution for this i got SAP Note 730870.
here i have to download rfcnormalizer.jar
i have uploaded in integration repository under imported object.
but iam not able to see this in interface mapping
now i have to use this in interface mapping .
Please give me step by step how to use this in interface mapping
how the interface mapping should be like
Regards
veenaHi,
The RfcAdapter trys to find a Sender Agreement for this RFC call but the lookup failes. The values used for this lookup are:
Sender Party/Sender Service: The values from Party and Service belonging to the sender channel.
Sender Interface: The name of the RFC function module.
Sender Namespace: The fix RFC namespace urn:sap-com:document:sap:rfc:functions
Receiver Party/Receiver Service: These fields are empty. This will match the wildcard
Regards,
Suryanarayana -
Interface mapping test successful, throws exception in BPM
Hi.
We are having a problem with an Interface mapping which works when
tested in Integration Builder, but throws an Exception when it is part
of the Transformation in a BPM.
The scenarion is such:
1. The sender calls the outbound interface using a web service.
2. XI uses the input and passes to the Integration Process
3. In the BPM, a LOGON message is built to call the web service as
specified by an external web service . The input and
output messages are just a single string, in which the other XML is
embedded.
4. XI receives a response from the web service call
5. XI Extracts the sessionId from the response and combines it with the
initial input (Step 1) to create the query for the query message in
the web service.
It is in Step 5 where the transformation fails, with an Exception in
the DefaultTrace.trc as
Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_MM_LogonResponse_PropertySearchRequest_to_ExternalRequestSOAP_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message1/ns1:EXTERNAL/REQUEST. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd
Thrown:
MESSAGE ID: com.sap.aii.ibrun.server.mapping.rb_MappingRuntimeException.EXCEPTION_DURING_EXECUTE
com.sap.aii.ibrun.server.mapping.MappingRuntimeException: Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_MM_LogonResponse_PropertySearchRequest_to_ExternalRequestSOAP_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0:Message1/ns1:EXTERNAL/REQUEST. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd
I have extracted the data from the initial request (step 1) and the
logon response (step 4) and using these I have tested the Interface
Mapping. There is no problem with this and the tests are successful.
From what I can see, because the Response field in the LOGONResponse
contains more XML tags, XI must be parsing it and assuming the tags are
tags in the message, and not just the string, thus it is complaining
that the XSD types do not match. This extra XML Parsing does not take
place in the Interface Mapping Test.
I have put the response into a User Defined Function which just has one
line "return new String("Hello")" and that fails. However, if this UDF
does not have the Response as the input, it does not complain.
Please advise.
--Reenalhi
You will have to use specific replacements for you xml tags if it is coming as a paramter
replace '<' with <
replace '>' with >
for eg: I want to pass <TakeIt>200</TakeIt> as value to Element <A>
Mapping won't work if it is passed like
a) <A><TakeIt>200</TakeIt></A> - Wrong
Instead the replace the angle brackets
b) <A><TakeIt>200</TakeIt></A> - Correct
While testing the mapping in IR (a) will work bcoz the test tool will convert it to (b) format. Check the xml source in test tool.
So ensure the web response is like (b)
rgds,
Arun
Maybe you are looking for
-
Pass a parameter in a Web Dynpro Application
Hi, I have a Web Dynpro that Calls a RFC. This RFC needs a parameter (user ID from portal) in order to obtain Info. from the R/3 System. I do it with based on the article which calls a bapi "BAPI_FLIGHTLIST". The application runs OK when I type the p
-
Soap adapter communication channel problem
Hi... While doing Webservices to file scenario, in component monitoring, the soap adapter communication channel is showing as (in small traiangle inyellow color) channel started but inactive
-
Hi All, How do I display the hierarchy in my report in expanded manner by default? when I execute my query the report comes with the higher node. I manually expand the hierarchy by right clicking on it. I want to display all the nodes expanded by def
-
Windows 7 slow to boot after setting up windows backup to additional drive.
I have an issue with windows taking forever to boot after setting up Windows backup. PC Setup: 2 Samsung SSD Mirrored for Hardware raid on (MOBO OS/Programs) 2 Seagate 4TB Mirrored for Hardware raid (Data storage) 1 Seagate 4tb HD used solely for Win
-
Change time constraint of Infotype 0006 subtype 1 and subtype 2
Hi Can anyone tell me how to change the TC of infotype 0006 subtype 1 and subtype 2. Currently I tried to change the TC in table V_T582A but its giving me an error : "Text maintenance not permitted as infotype part of Data Sharing (T582G) " Can anyo