SOAP lookups from withing message mapping
Hi
We are doing a call to a webservice from within a udf in a message mapping using the SOAP API described in one of the blogs in SDN. We are using a soap receiver communication channel to make this webservice call -
We see activity on the communication channel monitoring - indicating that there is a call going out and a response coming back from the webservice. But there are no details shown on the payload in communication channel monitoring. We do not see this webservice lookup as a message on the adapter engine either ?
Is there any place from within XI runtime environment we can get a hold of the message going out to webservice call and the return from webservice ? We are facing problems in the webservice not doing the required action desired and hence this question on visibility of the call to the webservice.
Thanks in advance for your time.
My udf is basically makes a call to the webserservice lookup method ( line - CallCentralMonitoring.LogToCentralMonitoring( "IN130.10", "COMPLETED"); ) - the definition of CallCentralMonitoring class is given below after the udf
UDF
String adapter = "RECEIVE_FusionDBLookUpRequest";
Channel channel = null;
boolean retry = false;
int noOfRetries = 0;
String sqlQuery = new String("");
DataBaseAccessor accessor = null;
DataBaseResult resultSet = null;
String parameterValue = new String("");
MappingTrace trace = container.getTrace();
// Build the Query String
//sqlQuery = "select * from CTL_BusinessRules with (nolock) where parameter_key = '" + parameterKey + "'";
sqlQuery = "exec uspCTL_GetBusinessRule '" + parameterKey + "'";
do
try
//trace.addInfo( "SQL query is: " + sqlQuery);
// Determine a channel, as created in the Configuration
channel = LookupService.getChannel(businessService,adapter);
// Get a system accessor for the channel. As the call is being made to a DB, a DatabaseAccessor is obtained.
accessor = LookupService.getDataBaseAccessor(channel);
//trace.addInfo( "Successfully obtained the system accessor..." );
// Execute Query and get the values in resultset
resultSet = accessor.execute(sqlQuery);
Iterator rows = resultSet.getRows();
//trace.addInfo( "Executed query successfully..." );
while( rows.hasNext() )
Map rowMap = (Map)rows.next();
parameterValue = rowMap.get("CHARACTER_VALUE").toString();
//trace.addInfo( "Parameter Value is: " + parameterValue );
retry = false;
CallCentralMonitoring.LogToCentralMonitoring( "IN130.10", "COMPLETED");
return parameterValue;
catch( Exception ex )
//trace.addInfo( ex.toString() );
if ( noOfRetries < 3 )
retry = true;
noOfRetries++;
else
retry = false;
CallCentralMonitoring.LogToCentralMonitoring( "SD152.01", "Error");
ExceptionThrower.fire( "Database connectivity error: " + ex.toString() );
finally
try
if ( accessor != null ) accessor.close();
catch( Exception e )
ExceptionThrower.fire("Error closing accesor: " + e.getMessage() );
//return e.getMessage();
} while( retry );
return null;
Class CallCentralMonitoring
package com.xxxxx.xi.mapping.udf;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import com.sap.aii.mapping.lookup.Channel;
import com.sap.aii.mapping.lookup.LookupException;
import com.sap.aii.mapping.lookup.LookupService;
import com.sap.aii.mapping.lookup.Payload;
import com.sap.aii.mapping.lookup.SystemAccessor;
import com.sap.aii.mapping.lookup.XmlPayload;
public class CallCentralMonitoring {
public static void LogToCentralMonitoring (String MON_EISLDCTLID, String MON_MsgStatus) {
String soapXML = new String("");
/* Pass the Business System and Communication Channel as input to the getChannel().
/* BS_SOAPLOOKUP Business System*CC_Webservice_SOAP_CURRENCY_CONVERTOR Receiver SOAP Adapter */
Channel channel = null;
try {
channel = LookupService.getChannel( "EI_CentralMonitoringServives", "Receive_SOAP_TrackingServiceWS" );
} catch (LookupException e) {
// TODO Auto-generated catch block
e.printStackTrace();
SystemAccessor accessor = null;
try {
accessor = LookupService.getSystemAccessor(channel);
} catch (LookupException e) {
// TODO Auto-generated catch block
e.printStackTrace();
/* Construct the SOAP Request Message using the InputParameters */
soapXML = "<LogToCentralMonitoring xmlns=\"http://xxxxx.EI.CentralMonitoring\"> <loggingData> <MON_EISLDCTLID>"
+ MON_EISLDCTLID
+ "</MON_EISLDCTLID><MON_ProgramID>"
+ MON_EISLDCTLID
+ "</MON_ProgramID><MON_ProcessID>"
+ MON_EISLDCTLID
+ "</MON_ProcessID><MON_ClientAlert>"
+ "N"
+ "</MON_ClientAlert><MON_MsgStartTimeStamp>"
+ "03/30/2007 10:00:00"
+ "</MON_MsgStartTimeStamp><MON_MsgEndTimeStamp>"
+ "03/30/2007 10:00:01"
+ "</MON_MsgEndTimeStamp><MON_MsgStatus>"
+ MON_MsgStatus
+ "</MON_MsgStatus><MON_MsgStatusDescription>"
+ MON_MsgStatus
+ "</MON_MsgStatusDescription> </loggingData> </LogToCentralMonitoring>";
InputStream inputStream = new ByteArrayInputStream(soapXML.getBytes());
XmlPayload payload = LookupService.getXmlPayload(inputStream);
Payload soapOutPayload = null;
/The SOAP call is made here and the response obtained is in the soapOutPayload./
try {
soapOutPayload = accessor.call(payload);
} catch (LookupException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//end LogToCentralMonitoring
}//end class
Similar Messages
-
Problem with message mapping ...
Hello,
I have problem with message mapping. I implemented SOAP-to-RFC scenario. The source message is of type http://sntcz.cz/xmlns/holidays:MT_Holiday, the target message of type urn:sap-com:document:sap:rfc:functions:Z_GET_SUPERIOR. But some error is still generated in Request Message Mapping step:
com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Cannot produce target element /ns1:Z_GET_SUPERIOR/USR. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at com.sap.aii.mappingtool.tf3.AMappingProgram.start(AMappingProgram.java:403) at com.sap.aii.mappingtool.tf3.Transformer.start(Transformer.java:142) at com.sap.aii.mappingtool.tf3.AMappingProgram.execute(AMappingProgram.java:102) at .....
This is XSD definition of source message:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://sntcz.cz/xmlns/holidays" targetNamespace="http://sntcz.cz/xmlns/holidays">
<xsd:element name="MT_Holiday" type="DT_Holiday" />
<xsd:complexType name="DT_Holiday">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
030495e1742f11dd963600301875333b
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="SinceDay" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba049b067aa11dd8be6eee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="SinceMounth" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a067aa11dda311eee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="SinceYear" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a167aa11dd9b4eeee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="UntilDay" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a267aa11ddc352eee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="UntilMounth" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a367aa11ddc33aeee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="UntilYear" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a467aa11dda8cfeee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="UserId" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">
fba293a567aa11dd9698eee20abb2a3f
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
This is XSD definition of target message:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:sap-com:document:sap:rfc:functions" targetNamespace="urn:sap-com:document:sap:rfc:functions">
<xsd:element name="Z_GET_SUPERIOR">
<xsd:complexType>
<xsd:all>
<xsd:element name="USR" type="xsd:string" minOccurs="0" />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
It's strange that if I use Message Mapping Test it works fine. But in pipeline not.
Do you have any idea where could be the problem?
Thank you in advance!
Best regard,
ZbynekHi,
To know the correct error Take the Inbound Payload from MONI and Test it in Mapping Test TAB. then u will come to know the exact error.
Procedure to take the Payload
goto MONI-Double click on MessageInbound Message ( CENTRAL ) --Payloads ---Double click on MainDocument ( application/xml ) -Just Right Click on the second window-View Source
then now Copy this and paste it in Mapping Test and Execute.
REgards
Seshagiri -
Get the mapping values from one message mapping into another message mappin
Hi All,
I created two graphical message mappings. In first message mapping i created one user defined function and set one global container parameter and I need to use this parameter in my second message mapping user defined function. But the global container parameters can be used in different user defined functions in same message mapping. So is there any way to use the values which are set in one message mapping into another message mapping. If yes, please help me how to get?Hi Koteswara rao,
As you said global container parameters from first message mapping are not accessible from second message mapping program.
i haven't faced situation like this.but, if you have some unmapped field in target message in first message mapping,you can put global variables data in that unmapped field.
anyway the output of first message mapping would be input for 2nd messages mapping,so you can access global data(unmapped field filled with global data in 1st MM) from 2nd mapping program..
Cheers,
Jag -
How to do this with message mapping in PI ?
Hi All,
Field 1 = 100 characters having values in first fifty characters and last 50 characters blank . I need to remove all the first 50 characters with blank and pass 100 blank characters .How to do this with message mapping
ThanksAdding to that, since usually a tab = 8 spaces. What you can do is to open notepad, press tab 4 times. Copy it and paste 3 times, afterwards press space 4 more times and you get 100 spaces.
Regards,
Mark -
RFC Lookup's in message mapping fail with RuntimeException for no reason
Hi guys,
We have developed interfaces that execute a lot of RFC's from Message Mapping, by making use of RFC Lookup API.
In ID, in the corresponding RFC Receiver Communication Channel we have set the number of maximum connections to 100.
However, when a big number of Idocs with lots of items is sent to XI some messages fail in XI because mapping fails with a runtime exception that is not correct, since there is a return value found from the execution of the RFC function. And when I am testing the mapping in Test mode of XI IR, the mapping is executed successfully.
Do you think that by increasing the maximum number of connections in Communication Channel, it will take effect?
EvaggelosHi Evaggelos,
DECREASE, may be til 10.
Regards,
Udo -
Upgrading from XI/PI7.0 to 7.1 having problems with message mapping
Hello,
We are in the process over the past week of testing our XI/PI functionality after upgrading our 7.0 XI/PI environment to PI7.1; in particular several maps that were accessible in 7.0 will not open or diaplay in 7.1 complaining of a missing node in the mapping structure. Currently working with SAP on a possible fix but wanted to know if anyone else has done a true migration on top of an existing XI/PI7.0 system and experiencing similar issues (note: the maps can execute in the runtime environment but we can't display the maps source within message mapping; this also does not occur for all maps and there is no clear consistant theme to those that can be displayed and those that can't).
The lattest issue just encountered related to message mapping is that in test mode of a map (that can be displayed) attempting to display the data queue for the mapped elements are blank no data being displayed giving an error noting that the source text of object message mapping: name of the map; has syntax errors, java area import line x, package ibm.com.xi.mapping does not exist/ import ibm.com.xi.mapping UDF:
Has anyone upgraded from PI7.0 to 7.1 and experienced errors with existing maps that worked ok (ans still work in our QX/PRD systems) in their 7.0 envirinment but encountereing strange errors once upgrated to 7.1?
Thanks
Dereck Purnell
NewellRubbermaidHere is the solution we received from SAP to address the issue, there were several mapping related issues we started havng from maps that worked in our 7.0 system prior to the upgrade to PI 7.1. I will try to encorporate the solutions in this response.
a) From Customer to SAP
1. We are unable to open some massage mapping, it is throwing
exception
2. Number Format functions throw exception.
But following issue is still unresolved:
3. When we display message queue, it throws exception
***) 05.02.2009 - 12:34:33 CET - Reply by SAP
The patch has been released at the Service Marketplace.
Please update the scas described in the note 1264871.
The "FormatNum" function issue has also been taken care in this patch.
Please go through the Note 1264871 for other behaviour changes after
upgrade. Let us know if you need any further help.
Regards,
B) From Customer to SAP
04.02.2009 - 00:23:44 CET - Info for SAP
We discovered another issue with mapping.
For some of the mappings, we are unable to display mapping queue. When
we execute, Interface mapping and Massage mapping, it works fine. But
display queue throws exception. Itu2019s not able to recognize libraries
used from dependent software component.
Please find document "Display Mapping Queue Issue" providing example
problem.
25.02.2009 - 07:05:28 CET - *Reply by SAP*
Thank you for your update. I wanted to check with "CopyValue"
function's index. It has to take an input integer and the problem that
found while debugging the opening of your mapping is that the input
was empty thus causing the exception.
I was going to suggest the intended use of "CopyValue" function.
When the input to "copyValue" is a constant, "copyValue" is totally
not necessary. Thus constant can be directly mapped to other function.
When the input is a node with values in context, you can treat one of
values say input[0] to used in mapping by using CopyValue[0].
But please make sure that input[0] will always produce a value.
Note 877964 will describe in detail on Copyvalue usage.
I am marking this Message as complete. Please confirm. -
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 -
Creation of CDATA with message mapping
Hello all,
Is everyone absolutely sure that a cdata string cannot be created in the middle of an xml file using message mapping?
I have tried doing the XSL map in other blogs I even tried writing a whole XSL map in xml spy - yet xi complains about not finding this class file and that class file. I'm having a hard time believing that this is so hard to do in XI - especially when Microsoft web service implementation seem to long for data crammed into a string ( in my experience ).
Any help is GREATLY appreciated.
Thank you!!!
ScottHi Scott,
Pls follow the following steps to insert XML string into a single element:
Create a xsl file with the following data:
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <i><b>NSpace</b></i>>
<xsl:template match="/">
<namespace:name1>
<xsl:text disable-output-escaping="yes"><![CDATA[<![CDATA[]]></xsl:text><xsl:copy-of select="<b>//namespace:name</b>"/><xsl:text disable-output-escaping="yes"><![CDATA[]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
</namespace:name1>
</xsl:template>
</xsl:stylesheet>
In the above code I have removed xmlns:p2="http://frik.bcc.com.pl" which is not needed.
Also you have to put '<b>//</b>' before the target element from where you want to start creating XML string over here it is <b>name</b>. And <b>name1</b> is the element you want to store the XML string in.
So anything in the element <b>name</b> will be stored in <b>name1</b>
Regarding the <b>namespace:</b> To find out the namespace test your message mapping between the source and the target without adding XSLT mapping. After testing click on <b>'SCR'</b> tab present on top of the target window. There you will see <b>ns1: or ns2:</b> attached to each element. Replace <b>namespace</b> in the above code with <b>ns1: or ns2:</b>. And replace <b>NSpace</b> in the above XSL Header with the namespace in the SCR of test map.
So the final XSL file will look like that:
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <i><b>xmlns:ns1="http://sap.com/xi/HR"</b></i>>
<xsl:template match="/">
<<b>ns1:</b>name1>
<xsl:text disable-output-escaping="yes"><![CDATA[<![CDATA[]]></xsl:text><xsl:copy-of select="<b>//ns1:name</b>"/><xsl:text disable-output-escaping="yes"><![CDATA[]]]]></xsl:text><xsl:text disable-output-escaping="yes"><![CDATA[>]]></xsl:text>
</<b>ns1:</b>name1>
</xsl:template>
</xsl:stylesheet>
Dont forget to put '//' before the target element.
This should work. Or pls put the source and target xml struct and we will assist you further.
Regards,
Ashish -
Problem with Message-Mapping: Loop over Elements possible?
Hi all,
I want do create a Message-Mapping for an IDoc-to-File Scenario. In the Source Structure there are some Elements which can appear more than once (1..unbounded). I need a mechanism which loops over these elements and search for specified values. From the Element which contains an element with this specified value the mapping should write a value in the target structure.
Here a simple example (source structure) for better understanding:
<root>
<invoice>
<number> 10 </number>
<sum> 200.00 </sum>
</invoice>
<invoice>
<number> 20 </number>
<sum> 150.00 </sum>
</invoice>
<invoice>
<number> 30 </number>
<sum> 120.00 </sum>
</invoice>
</root>
Now the duty of the Mapping should be to search in the elements <invoice> for the number 30. And then the sum of the invoice with the number 30 should be written in a field of the target structure.
I tried it out with a constant togehter with an equalsS-function and an ifWithoutElse-function, but it is working only then, if the invoice with the number 30 has the first position in the root context.
Can anybody help me? Thanks
With kind regards
ChristopherHi,
Write a UDF to sum the required values and map to target node.
See while writing the UDF select the type as queue.
number -- removecontext-UDF targetnode
sum----removecontext--/
number abd sum or the two inputs
in UDF
int nsum = 0;
for(int i;i < number.length;i++){
if number(i).equals("30") then
nsum = nsum + valueOf(sum(i));
result.addValue(nsum); // convert the nsum into string
Regsrds
Chilla -
Using Jco calls from the message mapping
can any body tell me how can we use JCO call in a message mapping if posssible with an example
thanks and regards
sandeepHi,
Refer the below code and weblog:
? RFC lookup using JCO (without communication channel)
/people/sravya.talanki2/blog/2005/12/21/use-this-crazy-piece-for-any-rfc-mapping-lookups
Notes:
? Ensure that the function module is RFC-enabled.
? Ensure that the parameters are passed by value and not by reference (mandatory for RFC-enabled function modules).
IN UDF:
Import Parameters:
com.sap.mw.jco.*
Code:
Public String UOMLookup(String resultFieldName, Container container)
JCO.Repository mRepository;
// Change the logon information to your own system/user
JCO.Client mConnection = JCO.createClient(
"800", // SAP client
"xilookup", // userid
"test", // password
"EN", // language
"tsphl850", // host name
"00" ); // system number
// connect to SAP
mConnection.connect();
// create repository
mRepository = new JCO.Repository( "SAPLookup", mConnection );
// Create function
JCO.Function function = null;
IFunctionTemplate ft = mRepository.getFunctionTemplate("Z_SFLIGHT_DETAILS");
function = ft.getFunction();
// Obtain parameter list for function
JCO.ParameterList input = function.getImportParameterList();
// Pass function parameters
input.setValue(resultFieldName, "UOMCODE" );
mConnection.execute( function );
String ret = function.getExportParameterList().getString( "UOMTEXT" );
mConnection.disconnect();
return ret; -
Need Help with Message Mapping in PI 7.1 - JDBC to IDOC
I have an outgoing SQL function that sends multiple rows of data for use in creating an IDOC in ECC. I am trying to key the creation of new IDOCs (already did the maxOccurs trick to the IDOC definition) based on a field in the JDBC return data...
JDBC Message Format...
SEGNAM - TRANS_ID - MATERIAL - VKORG...ETC
MARA - 00001 - 1234 - <space> - ...
MARC - 00001 - 1234 - VK01 - ...
MARA - 00002 - 9876 - <space> - ...
MAKT - 00002 - 9876 - <space> - material description - ...
Each time there is a new TRANS_ID, I need to indicate a new IDOC in the message mapping. I have tried all kinds of combinations of TRANS_ID --> dropContext --> splitValue and TRANS_ID --> collapseContext --> splitValue, but nothing has worked.
Has anyone done this kind of message map (without any BPM please)?
Thanks,
NathanHello Nathan,
For this one, you have to play with contexts.
row 1 SEGNAM = MARA, TRANS_ID = 1, MATNR = 123...
row 2 SEGNAM = MARC, TRANS_ID = 1, MATNR = 123, WERKS = PL01...
row 3 SEGNAM = MARA, TRANS_ID = 2, MATNR = 987
This also depends on the occurrence of the parent node. example, if I want MATNR to be populated, the logic would be like
ex:
IDOC1..unbounded) (The logic is the already provided in an earlier response)
-->MATNR (1..1)
MATNR --------> removeContext ----------------> FormatByExample --> MATNR
TRANS_ID --> removeContext --> splitByValue:ValueChange --> /
If the rows are not in order of trans_id, then you need to incorporate sorting into the logic above.
Hope this helps,
Mark -
Issue with message mapping.
HI All,
I am working on a JDBC-XI-RFC scenario.
I have two data types, two message types and two message interfaces.
now, i have created the message mapping and mapped the fields of both sender and reciever message types.
To test with sample data now, if i press the "test" tab, in the right side, i can see the "Instance" with the sender message type and its fields.
Later i entered the values to test the sample.
Affter this move, i am not able to see anything in the right side of the screen (RESULT)...
What might be the reason for this....???
Please help me......
Regards
PavanHi Pavan,
Start Transformation button is used to execute the object. Its on the left hand bottom of the scrren, near to Trace Level you will find a button named "Start Transformation". Click on this and you will get the output once the transformation is complete.
There is some problem in the Sender message mapping named: sender_mm | http://jdbcrfcns
Please check where is the problem.
Regards,
Subhasha -
Problems with message mapping in XI
Hi,
I'm having a problem with my message mapping . I get the error
"Cannot produce target element /ns0:GovTalkMessage/ns0:Body/ns1:IRenvelope. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd"
Can you please tell me how I can resolve this error?
Regards,
Aditi NaikHi,
The source structure is:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.govtalk.gov.uk/taxation/EOY/08-09/1" xmlns="http://www.govtalk.gov.uk/CM/envelope" targetNamespace="http://www.govtalk.gov.uk/CM/envelope">
<xsd:import namespace="http://www.govtalk.gov.uk/taxation/EOY/08-09/1" />
<xsd:element name="IDAuthentication">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="SenderID" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Authentication" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Method" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="clear" />
<xsd:enumeration value="MD5" />
<xsd:enumeration value="W3Csigned" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Role" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Value" type="xsd:string" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="EnvelopeVersion" type="xsd:string" form="qualified" />
<xsd:element name="Header" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MessageDetails" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Class" form="qualified">
<xsd:simpleType>
<xsd:restriction base="UnicodeNameString">
<xsd:maxLength value="32" />
<xsd:minLength value="4" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Qualifier" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="request" />
<xsd:enumeration value="acknowledgement" />
<xsd:enumeration value="response" />
<xsd:enumeration value="poll" />
<xsd:enumeration value="error" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Function" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="list" />
<xsd:enumeration value="read" />
<xsd:enumeration value="delete" />
<xsd:enumeration value="add" />
<xsd:enumeration value="submit" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="TransactionID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[0-9A-F]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AuditID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[A-F0-9]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CorrelationID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[0-9A-F]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ResponseEndPoint" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="PollInterval" type="xsd:integer" default="2" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Transformation" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="XML" />
<xsd:enumeration value="HTML" />
<xsd:enumeration value="text" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="GatewayTest" type="xsd:integer" minOccurs="0" form="qualified" />
<xsd:element name="GatewayTimestamp" type="xsd:dateTime" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SenderDetails" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="IDAuthentication" minOccurs="0" />
<xsd:element name="X509Certificate" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:base64Binary" />
</xsd:simpleType>
</xsd:element>
<xsd:element name="EmailAddress" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="129" />
<xsd:minLength value="3" />
<xsd:pattern value="[A-Za-z0-9\.\-_]{1,64}@[A-Za-z0-9\.\-_]{1,64}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkDetails" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Keys" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Key" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute name="Type" type="UnicodeNameString" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TargetDetails" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Organisation" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GatewayValidation" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Processed" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="no" />
<xsd:enumeration value="yes" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Result" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="pass" />
<xsd:enumeration value="fail" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ChannelRouting" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Channel" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="URI" type="xsd:anyURI" minOccurs="0" form="qualified" />
<xsd:element name="Name" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Product" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Version" type="xsd:string" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ID" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Type" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkErrors" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Error" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RaisedBy" type="xsd:string" form="qualified" />
<xsd:element name="Number" type="xsd:integer" minOccurs="0" form="qualified" />
<xsd:element name="Type" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="fatal" />
<xsd:enumeration value="recoverable" />
<xsd:enumeration value="business" />
<xsd:enumeration value="warning" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Text" type="xsd:string" minOccurs="0" maxOccurs="unbounded" form="qualified" />
<xsd:element name="Location" type="xsd:string" minOccurs="0" maxOccurs="unbounded" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GatewayAdditions" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##local" processContents="strict" />
</xsd:sequence>
<xsd:anyAttribute namespace="##local" processContents="strict" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Body" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ns1:IRenvelope" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="UnicodeNameString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\p\p_\-\(\)\{\}]*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
The target structure is:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.govtalk.gov.uk/taxation/EOY/08-09/1" xmlns="http://www.govtalk.gov.uk/CM/envelope" targetNamespace="http://www.govtalk.gov.uk/CM/envelope">
<xsd:import namespace="http://www.govtalk.gov.uk/taxation/EOY/08-09/1" />
<xsd:element name="IDAuthentication">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="SenderID" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Authentication" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Method" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="clear" />
<xsd:enumeration value="MD5" />
<xsd:enumeration value="W3Csigned" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Role" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Value" type="xsd:string" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkMessage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="EnvelopeVersion" type="xsd:string" form="qualified" />
<xsd:element name="Header" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MessageDetails" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Class" form="qualified">
<xsd:simpleType>
<xsd:restriction base="UnicodeNameString">
<xsd:maxLength value="32" />
<xsd:minLength value="4" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Qualifier" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="request" />
<xsd:enumeration value="acknowledgement" />
<xsd:enumeration value="response" />
<xsd:enumeration value="poll" />
<xsd:enumeration value="error" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Function" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="list" />
<xsd:enumeration value="read" />
<xsd:enumeration value="delete" />
<xsd:enumeration value="add" />
<xsd:enumeration value="submit" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="TransactionID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[0-9A-F]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AuditID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[A-F0-9]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CorrelationID" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="32" />
<xsd:pattern value="[0-9A-F]{0,32}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ResponseEndPoint" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="PollInterval" type="xsd:integer" default="2" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Transformation" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="XML" />
<xsd:enumeration value="HTML" />
<xsd:enumeration value="text" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="GatewayTest" type="xsd:integer" minOccurs="0" form="qualified" />
<xsd:element name="GatewayTimestamp" type="xsd:dateTime" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SenderDetails" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="IDAuthentication" minOccurs="0" />
<xsd:element name="X509Certificate" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:base64Binary" />
</xsd:simpleType>
</xsd:element>
<xsd:element name="EmailAddress" minOccurs="0" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="129" />
<xsd:minLength value="3" />
<xsd:pattern value="[A-Za-z0-9\.\-_]{1,64}@[A-Za-z0-9\.\-_]{1,64}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkDetails" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Keys" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Key" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:token">
<xsd:attribute name="Type" type="UnicodeNameString" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TargetDetails" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Organisation" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GatewayValidation" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Processed" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="no" />
<xsd:enumeration value="yes" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Result" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="pass" />
<xsd:enumeration value="fail" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ChannelRouting" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Channel" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="URI" type="xsd:anyURI" minOccurs="0" form="qualified" />
<xsd:element name="Name" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Product" type="xsd:string" minOccurs="0" form="qualified" />
<xsd:element name="Version" type="xsd:string" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ID" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Type" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Timestamp" type="xsd:dateTime" minOccurs="0" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GovTalkErrors" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Error" maxOccurs="unbounded" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RaisedBy" type="xsd:string" form="qualified" />
<xsd:element name="Number" type="xsd:integer" minOccurs="0" form="qualified" />
<xsd:element name="Type" form="qualified">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="fatal" />
<xsd:enumeration value="recoverable" />
<xsd:enumeration value="business" />
<xsd:enumeration value="warning" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Text" type="xsd:string" minOccurs="0" maxOccurs="unbounded" form="qualified" />
<xsd:element name="Location" type="xsd:string" minOccurs="0" maxOccurs="unbounded" form="qualified" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GatewayAdditions" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##local" processContents="strict" />
</xsd:sequence>
<xsd:anyAttribute namespace="##local" processContents="strict" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Body" minOccurs="0" form="qualified">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ns1:IRenvelope" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="UnicodeNameString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\p\p_\-\(\)\{\}]*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema> -
Severe Problem With Message Mapping
Hi,
I have got a message mapping which results in the following XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns14:expost_generation xmlns:ns14="http://mywebsite.xsd">
<timeStamp>2006-03-15T15:27:16</timeStamp>
<source name="xyz">
<generation date="abc" value="def" />
<generation date="abc" value="def" />
<generation date="abc" value="def" />
</source>
</ns14:expost_generation>
My problem is that I have to suppres the ns14 prefix. The opening tag should be: <expost_generation xmlns="http://mywebsite.xsd">
The closing tag: </expost_generation>
Does anybody know how to achieve this?
Kind regards,
HeikoHi Heiko,
on the level of the expost_generation-Tag the two definitions you gave are logically equivalent. Hence, no software consuming the XMLs should prefer one style.
However, when we look at the subelements there is a great difference.
In the xml you posted first all subelements (timeStamp, source,...) lie in no namespace.
On the other hand when you declare the tag expost_generation as you described afterwards (with a default namespace declaration) and then proceed as in the first example, then all the subelements will lie in this namespace, too (unless you again reset the default namespace in all these elements).
I assume that the Schema you use in the Message Mapping describes a document with only the root being namespace qualified but the service consuming the document expects a document with all tags being namespace qualified.
Greetings
Stephan -
Help with Message Mapping - Context Change
I need help with the following message mapping. I am filtering by EMP_STAT in the Message Mapping. I have this working for the ROW structures, but I can get the HEADER/REC_COUNT field to calculate. I can do just a record count of ROW and get it to work, but I can't get it to work with the filter EMP_STAT = 'REG' added. I get a context error. Could someone send me the mapping code.
Sender XML----
<RECORD>
<ROW>
<EMPLOYEE>111</EMPLOYEE>
<EMP_STAT>REG</EMP_STAT>
</ROW>
<ROW>
<EMPLOYEE>222</EMPLOYEE>
<EMP_STAT>PT</EMP_STAT>
</ROW>
<ROW>
<EMPLOYEE>333</EMPLOYEE>
<EMP_STAT>REG</EMP_STAT>
</ROW>
</RECORD>
Receiver XML----
<RECORD>
<HEADER>
<REC_COUNT>2</REC_COUNT>
</HEADER>
<ROW>
<EMPLOYEE>111</EMPLOYEE>
<EMP_STAT>REG</EMP_STAT>
</ROW>
<ROW>
<EMPLOYEE>333</EMPLOYEE>
<EMP_STAT>REG</EMP_STAT>
</ROW>
</RECORD>Hello,
You can use this mapping
For REC_COUNT:
EMP_STAT -> equalsS: constant:REG -> ifWithoutElse -> removeContext -> count -> REC_COUNT
EMPLOYEE -> /
For ROW:
EMP_STAT -> equalsS: constant:REG -> ifWithoutElse -> removeContext -> ROW
EMPLOYEE -> /
For EMPLOYEE:
EMP_STAT -> equalsS: constant:REG -> ifWithoutElse -> removeContext -> SplitByValue -> EMPLOYEE
EMPLOYEE -> /
For EMP_STAT:
Constant: REG -> EMP_STAT
Hope this helps,
Mark
Maybe you are looking for
-
Adobe Flash Player not working in Adobe Connect only on Tablet PC
When logging into Adobe Acrobat Connect Pro on a Tablet PC, the following message is observed. Flash Player 9.0.0.0 or above is required Adobe Acrobat Connect Pro requires the Flash Player browser plugin, version 9.0.0.0 or above. Please download and
-
Problem when printing a PDF file
I am currently using Pagemaker 7 and after I create a PDF file and then email it to my client, the image shrinks when they print it out on their printer. If I print that same PDF file on my printer it does not shrink. Can anyone explain why this happ
-
Hey guys, I have a question about opening photos in album... Photos taken with Z1 camera are great, but there is a great difference when I try to open a photo in album from full list of photos (just clicking on one), or swiping photos from one to ano
-
Can I use my us account in India
Can I use my us account in India? And where to buy?
-
Hello Experts, I have installed SAP ERP 6.0 SR3 on windows server 2003 64bit and done post installation steps. For SAProuter configuration, I have followed below steps. 1. Downloaded .CAR file and extract into "user/sap/saprouter/ " folder. 2. Create