Writing message mapping function in Java in integration repository
Hi XI Pundits,
I am new to XI. I was working on Message mapping in intergration repository.
To map the source messages to target messages, we do graphical kind of mapping like drag and drop.
There are some functions aavilable at the bottom like concatehate, trim and etc. which we use if we need to modify the source message and map to target.
But in case we face a situation when we don't find the function which suits our requirement, I guess we need to write a new function. We can write these new function using Java only.
Can someone throw some light on this ?
<b>What do we do to invoke java editor in integartion reposity to write mapping function in java ?
Can someone give an example of snippet of code ?</b>
Thanks.
Hi Tushar,
Go thro this help link. You will get all info about User defined function.
http://help.sap.com/saphelp_nw04/helpdata/en/22/e127f28b572243b4324879c6bf05a0/frameset.htm
To get more understanding on mapping go thro this link(PDF File)
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638
Hope this helps.
regards,
P.Venkat
Message was edited by: Venkataramanan
Similar Messages
-
Re-use message mapping from within java mapping?
Hi there,
I have a question regarding java mapping. What I would like to do is to re-use an existing message mapping from within java mapping.
Technicaly, message mapping is perfomed by com.sap.aii.mappingtool.tf3.AMappingProgram.execute, right? I would like to call that mapping program for a specifc message mapping from within my java mapping.
Pseudo java code would look like this:
public void execute(InputStream in, OutputStream out)
throws StreamTransformationException {
com.sap.aii.mappingtool.tf3.AMappingProgram.execute(in,out,'SomeMessageMapping');
SomeMessageMapping is a message mapping that is defined in the integration repository.
Is it possible? If so, could you provide me with some details?
Thank you and best regards,
WolfgangHi Wolfgang,
very interesting idea?
I would activa a dummy message mapping. than I would have a look in the file directory of the java-stack and try to find out the name of the *.class or *.jar file.
On the other hand you could generate a tpz-transport-file an unpack this file, to explore the name of the *.class or *.jar
Unfortunately I do not have access to the file system. So I can't explore the name.
Regards Mario -
Accessing container variable of BPM in Message Mapping function
Hi,
I have a scenario in BPM where i have a container variable that is used as a loop counter.I want to access that counter defined , every time when i go around the loop and perform certain actions based on that counter. so how can i access that variable in my message Mapping function.Hi Sudharshan,
check these links, hope they give you the required information (i think there is some problem with SDN site, check these links after a while)
Re: How to use Container Variable across Maps
Container object in Message Mapping
Copy value of container (abstract interface) to an other container
Regards
Vishnu -
Retrive message mapping error from java class
Hi,
I'm trying to create a scenario that if exist an error in the message mapping step this error will be inserted in a Ztable. I'm thinking in to call to the message mapping from a java class to catch the exception and this java class will be used in the interface mapping.
Is it possible? If yes, How to call the message mapping from java code?
Exists other possible solution?
I need to do it because we want store all mapping errors in a Ztable. (Customer requeriment)
Thanks, in advance
Jose Manuelyou can throw generic exceptions from the message mapping like this - /people/michal.krawczyk2/blog/2007/04/26/xipi-throwing-generic-exceptions-from-any-type-of-mapping
you can then decide how to handle these exceptions -
UDF in message mapping instead of Java Mapping. Pls advice urgent
Hi All,
My scenario
CRM --- XI -- CRM
In XI I have to open socket connection.
Pls refer link:
/people/saravanakumar.kuppusamy2/blog/2005/12/15/socket-integration-with-xi
Can Java Mapping code given in above link for socket connection can be used in Message Mapping (CRM -- CRM)UDF?
Pls advice urgent
RegardsHi Henry,
I understood your requirement.
But as per the architecture of XI/PI some message has to trigger your scenario.
In this case there is no adapter where you can directly communicate with CRM system.
Do one thing configure a dummy scenario on the sender side.
Use File adapter for simplicity. once it pools the file with some dummy data in the file it comes to Interface mapping(message mapping) of the PIPELINE steps. Now use the code as you mentioned above(within UDF) for opening socket to CRM system and implement you business logic within that program and write the response to target interface which will infact talk with CRM system.
Dont forget to do the coding in an infinite loop with some delay (if required). Other wise every time you have to put a message for File Adapter for triggering purposes.
You can also acheive the same if you use Java Mapping instead of Graphical mapping with UDF(code for Opening socket and business logic). I suggest you to use Java Mapping.
I dont know how you will comunicate with CRM system on receiver side.?
Thanks,
Gujjeti -
Cannot use Toolbar in message mapping function
In my SAP XI, tool bar is disable even in edit mode. See example in <a href="http://tubeimage.com/viewer.php?file=le1mkpxecuxuwlzxjzol-SAP-XI-.png">http://tubeimage.com/viewer.php?file=le1mkpxecuxuwlzxjzol-SAP-XI-.png</a> ( in red box )
How to make it enable? Any help would be grateful.
Best regardsHii Pavin !!
Revert back your client system JAVA version. It happens due to latest Java version...R u using java 1.4.2 version check ur java version form IR>Help>information
if its not java 1.4.2 then installl that from sun website.
Cheers !! -
Message Mapping Vs Interface Mapping
What are the differences between Message Mapping and Interface Mapping?
Hi,
Message mapping
1) Transformation from one message structure to another message structure
2) Message Mapping is nothing but a set of rules for producing target XML from the source XML according to business requirement.These rules are nothing but relations between the source XML tags and target XML tags
3) 4 types(graphical, java, xslt, abap) mapping
4) You can check whether a complete message mapping functions at runtime once you have described it, by using the Test tab page.
Interface mapping
1) Interface mapping registers a pair of interfaces for a scenario and specifies the message mapping to be used
2) you can execute multiple mapping programs consecutively
3) To check whether an interface mapping that you have defined functions at runtime, test the interface mapping on the Test tab page.
Limitations
1) value mapping table cannot be accessed here
2) runtime constants of the mapping runtime are not set,but set to dummy values.
differences
message mapping you declare how the source message will be mapped to the the target message.
What source field will be mapped to the target field and any conditions for it to happen.
interface mapping you define what interfaces that will be communicating with each other. You will also see what message mapping the interfaces are using to exchange data. You need to do the message mapping before you do the interface mapping to get it correct.
Other releated things
->I think there can be Interface mappings without any Message mappings. This will work properly if both the source and target interfaces are of same type.
There might be less sense in these scenarios but they cannot be ruled out. They can help at times.
Interface mappings register your mapping program for an interface pair in the Integration Repository. If you require a mapping at runtime, it is sufficient to select the interface mapping for the interface pair at configuration time.
->The Integration Server uses the interface mapping to identify associated mapping programs for request messages, response messages, fault messages, or all three.
You can also create multiple interface mappings for the same interface pair.
For Multi MAppings Refer
http://help.sap.com/saphelp_erp2005vp/helpdata/en/21/6faf35c2d74295a3cb97f6f3ccf43c/frameset.htm
Please reward points if it helps
Thanks
Vikranth -
Message Mapping of type ABAP Class not being shown
Hi all,
I have been trying to follow the given blog:
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
Even after doing the changes mentioned in the blog, i do not see the ABAP Class in the list of Message Mapping types.
Do i need to do anyother configuration. Pls guide.
Regards
NeetuHi Neetu,
You will have to enable your ABAP mapping first.
Do the following steps, pay carefull attention to the values you enter,
In
IntegrationBuilder ->IntegrationBuilder.Repository -> com.sap.aii.repository.mapping.additionaltypes
enter the value of
R3_ABAP|Abapclass;R3_XSLT|XSL (ABAP Engine)
If the above doesnt work, try Abap-class instead of Abapclass in the above line.
And then follow the remaining steps, make sure that the above value is correct. Your ABAP mapping should appear in your Integration Repository.'
I suggest you go through these links:
https://websmp101.sap-ag.de/~sapdownload/011000358700003082332004E/HowToABAPMapping.pdf
/people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
ABAP Mapping Vs Java Mapping.
Refer to following SDN Demo which explains the need and how to do the ABAP mapping.
https://www.sdn.sap.com/irj/sdn/docs?rid=/webcontent/uuid/110ff05d-0501-0010-a19d-958247c9f798#jdi [original link is broken]
This document will help you to create ABAP Mapping.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/3.0/how%20to%20use%20abap-mapping%20in%20xi%203.0.pdf
Regards,
Abhy -
How to Alert RFC connection failure via message mapping? Kindly Help!
Hi Experts,
I have a JMS - XI - RFC scenario.
JMS receives the Rosattenet PIP contents and sends it to RFC function module in remote SAP R/3 system.
I have a requirement where I have to monitor RFC connection failure because of the remote R/3 system being down. I have to send a email alert where the subject contains the PIP number to understand for which PIP the connection failed.
The PIP number exists in the PIP content at the interface.
If I use the Alert configuration in the runtime workbench for monitoring then I cannot dynamically pass the PIP number.
Only way I think of triggering alert is in the message mapping via a Java UDF.
But I am not sure how can I do this? How do I check in the UDF if RFC connection has failed? Is this the correct approach?
How to acheive my requirement? Note that my email subject content is dynamic bacause if PIP number.
Please help!
Thanks
Gopal
Message was edited by:
gopalkrishna baligaHi Gopal,
what version/sps of XI are u running?
The easiest way to do what u want inside a UDF is to
1. use JCo to try estabilish a connection to the remote SAP System
2. if that fails, use JavaMail to send an email message
Let your UDF work on the PIP number, accepting it as input, and (maybe) returning it as output if everything goes ok. Otherwise break the mapping execution as described by Michal in one of his last weblog (using Dynamic Configuration).
Note that the above method doesn't guarantee that the message will be actually delivered, as some seconds could last between your check and the real RFC delivery operated by the Adapter Engine...
I am evaluating a way to do the same with Alert Framework. I will let you know the result!
Cheers,
Alex -
GlobalContainer object values acessed among UDF's in message mapping ?
hi
i have scenario where i am using globalContainer variable functionality in my message mapping.
in edit java section
String usr;
Container container ;
GlobalContainer globalContainer ;
intialize usr = "";
in First UDF
String inlogin_sess = " ashutosh test value" ;
globalContainer.setParameter(usr,inlogin_sess);
return any value :
now if i create another 2nd UDF and use :
String out =globalContainer.getParameter(usr);
return out ;
now 2nd UDF is giving null pointer exception...
for testing the code functionality..
IF i use the SET and GET in 1st UDF :
globalContainer.getParameter(usr); in 1st UDF than it is working sucessfully...
globalContainer.setParameter(usr,inlogin_sess);
String out = globalContainer.getParameter(usr);
return out ;
in help.sap it is mentioned that Globalcontainer objects values can be fetched among UDF's in one message mapping....
[http://help.sap.com/saphelp_nw04/helpdata/en/0f/80243b4a66ae0ce10000000a11402f/frameset.htm]
i have gone a lot of thread in sdn where Global container are used like sequence no creation etc, but every where the
GET and SET are used in SAME UDF...
any clue where is leak..
Regards,
ashutosh RHi Abhishek
Your point is legimate, but for my their is no such issue..
even i try to use it as :see image..
[http://www.screenshots.cc/show.php/14137_GlobalVariable.JPG.html]
UDF1 :
globalContainer.setParameter(usr,inlogin_sess);
return any value :
and in UDF2
String out = globalContainer.getParameter(usr);
return out ;
mainting the sequence
My concern is object globalContainer is local in UDF1, so it will through nullpointer ,if we try to access in UDF2.
if we declare globalContainer in edit jave -GlobalVariables also, still it is having the error..
Regards
AshutoshR -
HI I am calling a Java Mapping Prog from My message Mapping . I get A strange Message when i pass special characters like '?' or '*' through my message mapping to the java mapping .
The Message is <b>"For input string : ???". </b> when i pass ??? as a parameter to the java mapping. I am bit confused. Is This message a standard message that XI gives or is it getting generated from somewhere else.
regards
Nilesh .Hi Nilesh ,
Test the java mapping program using a seperate main class in some editor ( eg. Eclipse or NWDS) ,
Try to debug the program and u will get to know the cause , as to whr the message is getting generated ,
Regards ,
Sushil -
Manipulate Dates in XI Message Mapping
Hello all,
I have a problem in which I need to take a date from my source file and manipulate this date to help produce my target structure.
<i><b>This is not my actual XML</b></i>
<source root>
<field 1>A</field 1>
<field 2>Any value</field 2>
<field 3>Next value</field 3>
<field 4>20070201</field4>
</source root>
Consider the above XML as my source. I would like to have logic in the message mapping that will check the value of a field (field 1) and based on it's value add or subtract days from the date value provided.
This would be my output for adding ten (10) days if '<b>field 1</b>' has a value of '<b>A</b>'
<target root>
<target 1>A</target 1>
<target 2>Any Value</target 2>
<target 3>Next Value</target 3>
<target 4>20070211</target 4>
</target root>
This would be my output for subtracting five (5) days if '<b>field 1</b>' has a value of '<b>B</b>' (Same source file)
<target root>
<target 1>B</target 1>
<target 2>Any Value</target 2>
<target 3>Next Value</target 3>
<target 4>20070127</target 4>
</target root>
As you can see there is a field in my source system that will tell me what type of logic to perform. The problem that I am having now is that the message mapping functions that currently exist are not helping me satisfy this requirement. I have viewed several forums and tried several of the suggestions given but nothing seems to help. Does anyone know how to solve this problem? Is there a UDF that anyone has used that would help me in solving this requirement? The solution should be dynamic to account for leap years as well as for the different days that each month has.
Answers received will be rewarded with points.
Thanks in advance for the help that you provide.Hi,
Here i am sending UDF code,which takes date(format:yyyyMMdd) as input and does addition or subtraction operations based on <field 1> value,return the result date(format:yyyyMMdd) as string value.
public String GenerateDate(String date_input, String field1,Container container){
//Here "date_input" and "field1" are inputs for this UDF
int date = Integer.parseInt(date_input);
Calendar cal;
int day = date % 100;
int month = (date/100) % 100 - 1;
int year = date / 10000;
cal = Calendar.getInstance();
cal.set(year, month, day);
/implement addition or subtraction logic here as your needs/
if (field1 == "A")
cal.add(Calendar.DATE, 10);
else if(field == "B")
cal.add(Calendar.DATE, -5);
day = cal.get(Calendar.DATE);
month = cal.get(Calendar.MONTH)+ 1;
year = cal.get(Calendar.YEAR);
date = year * 10000 + month * 100 + day;
return (""+date);
if you need any other details regarding this UDF, plz let me know.
Cheers,
Jag -
Resource Exception - Message mapping
Hi all,
I get this error when I process large number of records in a message(>50,000). We use the oracle data source to get the connection in Message mapping. Connections are nowhere reaching to max number of connections set in the DS. This error is not consistent. Sometimes even if the records are more than 100,000 , it works fine. We call the datasource from pure java . We don't use the EJB.
Thanks in advance,
Satya.
Here is error :
<Trace level="1" type="T">RuntimeException during appliction Java mapping com/sap/xi/tf/_SAP_APPL_test_MM_</Trace>
<Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec] at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:303) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Root Cause: com.sap.aii.utilxi.misc.api.BaseRuntimeException: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec] at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:56) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:41) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:186) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:298) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Root Cause: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor3328.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:47) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:41) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:186) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:298) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Caused by: java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)"). at com.racs.gpt.xref.util.DBConnect.getConnection(DBConnect.java:25) at com.racs.gpt.xref.scan.PerformScanPartial.populateResultset(PerformScanPartial.java:136) at com.racs.gpt.xref.scan.PerformScanPartial.getTargetValue(PerformScanPartial.java:60) at com.racs.gpt.xref.scan.PerformScanFactory.getScanner(PerformScanFactory.java:43) at com.racs.gpt.CrossReferenceAPI.getData(CrossReferenceAPI.java:21) at com.sap.xi.tf._SAP_APPL_test_MM_.getMapValue$(_SAP_APPL_test_MM_.java:110) ... 33 more</Trace>
<Trace level="1" type="T">Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_SAP_APPL_test_MM_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec]</Trace>
<Trace level="1" type="T">com.sap.aii.ibrun.server.mapping.MappingRuntimeException: Runtime exception occurred during execution of application mapping program com/sap/xi/tf/_SAP_APPL_test_MM_: com.sap.aii.utilxi.misc.api.BaseRuntimeException; RuntimeException in Message-Mapping transformation: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec] at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:73) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Root Cause: com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec] at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:303) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Root Cause: com.sap.aii.utilxi.misc.api.BaseRuntimeException: Exception:[java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)").] in class com.sap.xi.tf._SAP_APPL_test_MM_ method getMapValue$[1492-N17 A, 1, com.sap.aii.mappingtool.tf3.rt.Context@23c363ec] at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:56) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:41) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:186) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:298) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Root Cause: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor3328.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:47) at com.sap.aii.mappingtool.tf3.rt.FunctionWrapper.getValue(FunctionWrapper.java:41) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:186) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.processNode(AMappingProgram.java:204) at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:298) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:63) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:77) at com.sap.aii.ibrun.server.mapping.JavaMapping.executeStep(JavaMapping.java:64) at com.sap.aii.ibrun.server.mapping.Mapping.execute(Mapping.java:91) at com.sap.aii.ibrun.server.mapping.MappingHandler.run(MappingHandler.java:90) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:94) at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:67) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79) at com.sap.aii.ibrun.sbeans.mapping.MappingServiceObjectImpl0.processFunction(MappingServiceObjectImpl0.java:131) at sun.reflect.GeneratedMethodAccessor264.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.ejb.session.stateless_sp5.ObjectStubProxyImpl.invoke(ObjectStubProxyImpl.java:187) at $Proxy34.processFunction(Unknown Source) at sun.reflect.GeneratedMethodAccessor3008.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:100) at com.sap.engine.services.rfcengine.RFCJCOServer.handleRequestInternal(RFCJCOServer.java:113) at com.sap.engine.services.rfcengine.RFCJCOServer$ApplicationRunnable.run(RFCJCOServer.java:171) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:160) Caused by: java.lang.RuntimeException: ResourceException in method ConnectionFactoryImpl.getConnection(): com.sap.engine.services.connector.exceptions.BaseResourceException: Error in ResourceSet.addAndEnlist("[email protected]8267e[com.sap.engine.services.dbpool.cci.ConnectionHandle@463c88c8](delisted:false) -> [email protected]71c8e6 --> 74(locTrSupp:false)"). at com.racs.gpt.xref.util.DBConnect.getConnection(DBConnect.java:25) at com.racs.gpt.xref.scan.PerformScanPartial.populateResultset(PerformScanPartial.java:136) at com.racs.gpt.xref.scan.PerformScanPartial.getTargetValue(PerformScanPartial.java:60) at com.racs.gpt.xref.scan.PerformScanFactory.getScanner(PerformScanFactory.java:43) at com.racs.gpt.CrossReferenceAPI.getData(CrossReferenceAPI.java:21) at com.sap.xi.tf._SAP_APPL_test_MM_.getMapValue$(_SAP_APPL_test_MM_.java:110) ... 33 more</Trace>Hi Satya,
<i>This error is not consistent.</i> - So it is related to the physical memory and cache memory of your XI server.........this error may happen because some background process of your XI server is consuming some of your server's memory sometimes...so your msg mapping is failing for less memory space for making a connection to your oracle data source sometimes......
The only solution to your problem which i think is that you should increase the physical memory of your XI server.....or you need to redesign your scenario.....
Thanks,
Rajeev Gupta
Message was edited by:
RAJEEV GUPTA -
Message mapping for checking hyphens (-) in material number
Hi All,
I have an interface in PI 7.1 for product change and product create coming from ORACLE to SAP
Now, the reqmt is to take the ORACLE product which could have hyphens or without hyphens
In SAP, the product can have upto 40 characters and if something without hyphens come in, then it adds leading zeros while creating and while changing, SAP expects a product with leading zeros
So, how do I handle this? How do I check in message mapping, the product with hyphens or without and write a condition to it.
Here is my idea
Take the product, use a message mapping function to check for products without hyphens and if YES, add leading zeros upto 40 characters
Can anyone let me know how this could be achieved using message mapping function
I am sure this kind of reqmt especially leading zeros for products is very common in PI interface circle
So, please let me know the details
Thx
mikeHi Mike,
your requirement can be solved without UDF too
inputfield ---------------->
indexOf() ------------>
Constant(-)----------> less---->if ----->target field
constant(0)---------->
inputfield and contant (hyphen) are inputs to standard text function indexOf. Output of IndexOF and constant(zero) are inputs to standard arithmetic function less. Out put of less goes to boolean function if. The IF has two inputs then and else .
For then part write this logic
inputfield----> formatNumber()---->then
in standard arithmetic function Formatnumber specify number format with 40 zeroes, leave decimal separetor blank.
Now for the else part of "IF" write this
inputfield----->else
Finally
output of "IF" goes to target field
IF------>target
Regards
Anupam -
Message Mapping Design Question
I have to parse from a source field (x) and map to this structure:
<Line>
<Number\>
<Descr\>
<Code\>
</Line>
The source field is a string that contains newline characters (just a blob of text). Example:
ABC\nLine 1,widget, 123A\nXYZ\nLine 2,gadget,123B
I need to get at the line number, description, and code mapping values by parsing at newlines and then parse into the "Line" records. I want my result to look like this:
<Line>
<Number>1</Number>
<Descr>widget</Descr>
<Code>123A</Code>
</Line>
<Line>
<Number>2</Number>
<Descr>gadget</Descr>
<Code>123B</Code>
</Line>
Is there a way to chain message mapping functions and/or UDFs and do something like this? In addition, I don't see how I can specify multiple target fields in one mapping. Any suggestions would be appreciated. Thanks!Raj,
Unfortunately, the source structure is not well structured. It contains lines of data, of which some begin with "Line", and then a line number and other fields separated by commas. It also contains unused lines.
Production example of source data (with breaks at each newline character):
APPROVED
Tracking Reference: 20070629063604.1
Process Date: 06-29-2007 07:38:59
Listed below are the following items listed for review:
Contract: ABC Delivery Order Number: HTCH
Items reviewed:
Line 1, 10 EA, 000000000099784711, S01-004, 20070629063604.1_1
Line 2, 10 EA, 000000000088078625, 03356.63.04, 20070629063604.1_2
..where "1" maps to <Number>, "S01-004" maps to <Descr> and "20070629063604.1_1" maps to <Code>.
Maybe you are looking for
-
What is the deal with the inflated prices in the Aus App store?
Looking at buying Omni Graffle Pro. In the Australian Mac App store this is $249 Aus. From the Omni Group this is $199 US. The Aus dollar currently buys about $1.06 US - so *** is this $50 bucks more expensive? Not like you have to spend money to cou
-
Apple tv not showing up in airplay
my appletv was showing in my airplay, but now it is not. why?
-
How to call WD Application from another WD Appliction
Hi all, how can we call webdynpro application from another wbdynpro application on click of a button in the same browser. pls suggest regards vishal
-
Expand and Collapse within JSP
Fairly new to JSTL so please excuse my ignorance. I am creating a button(link) that will expand to show rows of data when clicked or collapse when clicked again. I already have a bean populated from the backend that contains a collection of my data.
-
Whenever Apple's check for updates runs I get the message that a new version of Bonjour (1.0.5) is available. I install but it next time I get the same message. Anyone any idea what is happening?