Mapping a message in different types of messages depending field value

Hi gurus!
I need your help!, I need to create a scenario where I receive a message with a JMS adapter, for which I define an outbound service interface type, but depending on the value of a field (interface) to map in order to create different service inbound interface type.
For example, I get the MT that is associated with a Service Interface SI_OUT:
<MT_TRX>
   <interface> 101 </ Interface>
   <message>
         nombre="AVISO"> <campo 8500070609 </ field>
         nombre="ESTADO"> <campo PCDS </ field>
   </ MESSAGE>
</ MT_TRX>
As the interface has the value 101 with a Message Mapping I want to create the Service Interface SI_IN_101 whit message type MT_101.
If interface = 102, the Service Interface should be SI_IN_102 and message type_102... etc.
Can be mapped to different types of Service Interface, need different Operations?
Thank you very much for your help, I don't know how to solve the problem!

Hi Veronica,
There are two clear options to approach the solution: be it 7.11 or earlier
1. Go for 1..Onbounded Operation mapping. In your operation mapping on the target side add the different inbound interfaces. You have to define seperate message mappings for each of your target message types and use them in the operation mapping.
2. The rather simplistic solution would be to go for conditional interface determination. A well know approach, if you have multiple interfaces to be mapped from a single interface for the same receiver system. Define seperate Message and Operation mappings for each of your Inbound Interfaces and then in Integration Directory use conditional Interface determination to call the appropriate operation mapping based on the condition checking on input payload (XPath).
I will strongly suggest the second option for better maintainability and monitoring of your interface.
You certainly dont need multiple operations, that's for different purpose altoghether
Regards,
Suddhasatta

Similar Messages

  • Message Mapping vs Interface Mapping test tabs giving different results.

    Hi all,
    I am developing an interface that always requires an output file to be created (even if there is no data).  I have found a way to change my select statement in the JDBC sender to initiate the message even if there isn't any data (using UNION select -1 ID, '' col1, '' col2, etc.) and that seems to work fine.  I then put logic in the message mapping to suppress the row that contains the -1 ID value, which would result in an empty file when there is no other data, and should result in a file containing only the correct data when there is data.
    So, my problem: I am always getting empty files with this logic.  I tested the logic in the message mapping test tab and it worked perfectly, however when I test it using the interface mapping test tab it results in what becomes an empty file!
    My source and destination structures are fairly simple:
    Root
    --row
    ID
    col1
    col2
    The logic I use to suppress the ID = -1 row is:
    =removeContexts([]ifWithoutElse([keepss=true]Not([]equalsS([]ID, Constant([value=-1]))), SplitByValue([type=Each value]row)))
    Obviously, I'm stumped - any help would be appreciated!
    Edited by: Mike Morrison on Sep 23, 2010 5:04 PM

    Hi Mike,
    Can you quote the error log..u r getting error in message mappin or interface mapping?
    Please suggest the test results for both the mappings.
    Thanks,
    Sushama

  • I have burned CDs before from 2gb to 7gb using different types of discs. Now I get this error message Apple error The disc can't be burned because communication between the computer and the disc drive failed (error code 0x80020022). What should I do

    I have burned CDs before from 2gb to 7gb using different types of discs. Now I get this error message Apple error The disc can't be burned because communication between the computer and the disc drive failed (error code 0x80020022). What should I do

    Reset the SMC, as per > Resetting the System Management Controller (SMC)
    1. Shut down the computer.
    2. Unplug the computer's power cord.
    3. Wait fifteen seconds.
    4. Attach the computer's power cord.
    5. Wait five seconds, then press the power button to turn on the computer.
    Then zap the PRAM/NVRAM as per > About NVRAM and PRAM
    1. Shut down the computer.
    2. Locate the following keys on the keyboard: Command, Option, P, and R. You will need to hold these keys down simultaneously in step 4.
    3. Turn on the computer.
    4. Press and hold the Command-Option-P-R keys. You must press this key combination before the gray screen appears.
    5. Hold the keys down until the computer restarts and you hear the startup sound for the second time.
    6. Release the keys.
    Then retry the Disc Drive.

  • Push different type of messages to JMS Queue using JMS Adapter

    Platform: Oracle SOA 11g. JMS Adapter.
    I got to push different types of messages as string to same queue. JMS Adapter requires schema to push a message to a queue. Since messages are of different types, how can I push them into queue. I tried to use singleString schema. Result is that actual message gets wrapped into <singleString> root element which is not the required result.
    Any hints or links shall be appreciated.

    Thanks fo ryour reply and help. I appreciate that.
    Wrapping of original message in <singleString>  element is done by JMS Adapter as the very last activity/setting. I am not composing/transforming message into final shape with singleString through transformation.
    Once message is with JMS adapted on one end, it is in Queue on the other end. No control.
    Since consuming end is not in my control and requires the actual message in Text format, I need to have the message target queue in Text format.
    If I select the Opaque schema, following error message is thrown.
    <bpelFault><faultType>0</faultType><mismatchedAssignmentFailure xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"><part name="summary"><summary>Mismatch Assign. cannot set a nonmessage value to a message-based variable. An attempt to assign a nonmessage value to a message-based variable failed. Verify the BPEL source for invalid assign activities.< /summary></part></mismatchedAssignmentFailure></bpelFault>

  • Different types of Mapping in XI

    Hi All,
    I am new to XI, I know different types of Mapping in XI.
    when we are using this mapping?
    1. Graphical Mapping
    2. Java Mapping
    3. XSLT Mapping and
    4. ABAP Mapping
    Please give detail.. it's helpful to me...
    Thanks & Regards
    SReddy,

    Hi Reddy,
    I thought i will start of from scratch.Mapping is basically done to convert one form of xml into another form. This can be done using either of them mentioned below.
    - Graphical mapping
    - XSLT mapping
    - JAVA mapping
    - ABAP mapping
    To know more about each of them please go thru the following links. And if you ask me your which is better, it depends basically on the scenario you implementing and the complexity involved. Anyways please go thru the following links:
    Graphical mapping
    /people/bhanu.thirumala/blog/2006/02/02/graphical-message-mapping-150-text-preview
    http://www.sapgenie.com/netweaver/xi/mapping1.htm
    /people/alessandro.guarneri/blog/2006/01/26/throwing-smart-exceptions-in-xi-graphical-mapping
    XSLT mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    JAVA mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    ABAP mapping
    /people/r.eijpe/blog
    To know more about the value mapping tools for the SAP Exchange Infrastructure (XI), please go thru the following link:
    http://www.applicon.dk/fileadmin/filer/XI_Tools/ValueMappingTool.pdf
    To get an idea as to what value mapping is, please go thru the following links:
    http://help.sap.com/saphelp_nw04/helpdata/en/13/ba20dd7beb14438bc7b04b5b6ca300/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/f2/dfae3d47afd652e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/content.htm
    most of the links that I have provided also helps you get the step by step procedure of doing the same. And also involves the procedure to implement certain advanced features.
    Hope this clears your doubt fully.
    Regards,
    Abhy
    PS: AWARD POINTS FOR HELPUL ANSWERS.

  • Hi , friends pls explain abap mapping and message mapping

    1) pls explain abap mapping and message mapping
       send me screen shorts also.

    Hi
    Mapping Techniques
    XI provides 3 standard ways of interface mapping between source and target.
    Graphical mapping
    Java Mapping
    XSLT Mapping
    Two more additional mapping types can be activated in XI by making changes to the exchange profile. Those two mappings are
    ABAP mapping
    XSLT mapping with ABAP Extensions
    Graphical Mapping
    Graphical mapping is a common approach followed by everyone for generating desired target structure. It involves simple drag-n-drop to correlate respective nodes (fields) from source and target structure. It hardly involves coding. (Exception - User defined functions). But sometimes with graphical mapping it is difficult to produce required output. For example ... text/html output, namespace change, sorting or grouping of records etc.
    ABAP Mapping
    A person comfortable with Object Oriented ABAP can go for ABAP mapping instead.
    Java Mapping
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but , DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exaclty easy to develop either.
    XSLT Mapping
    One can also think of Java mapping as another option but it is a bit complex and required knowledge of Java. In such cases, XSLT mapping can be the best approach to meet the requirements.
    A few example cases in which an XSLT mapping can be used:-
    When the required output is other than XML like Text, Html or XHTML (html displayed as XML)
    When default namespace coming from graphical mapping is not required or is to be changed as per requirements.
    When data is to be filtered based on certain fields (considering File as source)
    When data is to be sorted based on certain field (considering File as source)
    When data is to be grouped based on certain field (considering File as source)\
    Advantages of using XSLT mapping
    XSLT program itself defines its own target structure.
    XSLT programs can be imported into SAP XI. Message mapping step can be avoided. One can directly go for interface mapping once message interfaces are created and mapping is imported.
    XSLT provides use of number of standard XPath functions that can replaces graphical mapping involving user defined java functions easily.
    File content conversion at receiver side can be avoided in case of text or html output.
    Multiple occurrences of node within tree (source XML) can be handled easily.
    XSLT can be used in combination with graphical mapping.
    Multi-mapping is also possible using xslt.
    XSLT can be used with ABAP and JAVA Extensions.
    Disadvantages of using XSLT mapping
    Resultant XML payload can not be viewed in SXMB_MONI if not in XML format (for service packs < SP14).
    Interface mapping testing does not show proper error description. So errors in XSLT programs are difficult to trace in XI but can be easily identified outside XI using browser.
    XSLT mapping requires more memory than mapping classes generated in Java.
    XSLT program become lengthier as source structure fields grows in numbers.
    XSLT program sometimes become complex to meet desired functionality.
    Some XSL functions are dependent on version of browser.
    Different types of Mappings
    MAPPING SUPPORTED BY XI
    Message Mapping -> Graphical Design and testing environment. Default Provided By XI. Queue based modelling allow handling or large documents. Extensible via user defined functions
    XSLT Mapping - > Based on openstandard, Portable across application platform, Extensible using user defined functions kewl but disadvantage is Memory overload while handling large documents.
    SAX -> Simple Api For XML. -> Allows you to parse through a XML document. Doesn't consume any memory. But the message can be parsed only once from top to bottom. It Has evolved by contributions made by group of ppl itz a open architecture.
    DOM -> Document Object Model -> Itz designed by W3C. Consumes Memory as the message will be loaded. Allows parsing of document in both way top down and bottom up.
    Send me your email id.Shall send you very good docs for both ABAP Mapping and message mapping.
    Thanks

  • Mapping different types

    After Making some tests(Message Mapping) , Ive realized that is possible to map data-fields of different types (char v/s int) without error exists.
    is this possible for that it happens to this?
    Did I make any mistakes on steps?

    Hi Ximena,
    The Mapping does not care about types. Inside the XML structure almost all types are represented by string values. Therefore you can map each element to another element without caring about types.
    The problem with the types occurs when you want to transform the XML to another structure for example in an inbound processing of RFC adapter or proxy. If the value of an element is not conform to the underlying type, a parsing error will occur. So you have to assure inside the mapping, that this will not happen.
    regards
    Stefan

  • Multi-Mapping and Message Split using BPM

    Hi All,
    Could anyone pls let me know clearly how message mapping can be done for this weblog
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    Thanks,
    Ram

    Hi,
    When you are doing Message mapping after adding the Messaget types for source and target messages. You can click on the "" button in the target message and add one more tab. You can go to Message tab as shown in the 5th image and click "" button to add one more message type. Then do the mapping as usual.
    <b>Based on the value of the element(name), the node of input(details)should be directed to one of the two message types</b>
    Here in this blog it is done based on the Name.
    You need to use IFTHENELSE boolean function and do the mapping.
    Thanks,
    Prakash

  • How to call xslt mapping in message transformbean

    Hi Folks,
    I have written a simple xslt mapping to convert 2 fields into different fields. That is working fine from me.
    I want to use this xslt mapping in message transformbean adapter module. I dont want to use this in operation mapping.  Can you please tell me how would I do this.
    How would I configure this.
    Thanks,
    Rohini

    Hi,
    According to me, we cannot call the xslt program/map from adapter module.
    Why we can't call is in adapter module we can use java EJBs, but what ever you suppose to call is not an EJB application.
    FYI
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/3bdc14e1-0901-0010-b5a9-a01e29d75a6a
    Regards,
    Venkata Ramesh

  • Catch mapping error message in BPM Exception branch

    Hi dudes,
    Does anyone know how to catch the mapping runtime error message into a BPM exception branch? I know how to create an exception branch and how to trigger it, but I wonder whether it's possible to pass the mapping error message as shown in SXI_MONITOR (i.e. 'Cannot create target element XXXXX. Values missing in queue context').
    Otherwise, everytime my BPM fails I will have to take the payload and run the mapping test in order to find out the reason of the error.
    Many thanks in advance!
    Paco

    Thanks,
    My problem is not about handling exception in BPM, but getting the mapping error description and then passing it to the exception branch.
    I can see in the workflow log that this info is contained into the Exception container EXCEPTIONS[2] / T100MSG:
    Message Class: SAI_MAPPING
    Message Number: 217
    Message Type: E
    Message Variable: com/sap/xi/tf/_<MM name>
    Message Variable: com.sap.aii.mappingtool.tf7.IllegalInstanceExcepti
    Message Variable: on: Cannot create target element /ns1:<path/field>.Message Variable: Values~
    The text in bold is the one I am interested in to be get and mapped into the exception branch.

  • Calling Message mapping Dynamically based on a field value

    Hi gurus,
    I have
    1 source inteface
    1 target interface
    3 Message mapping programs based on the 1 source and 1 Target Interfaces
    I need to decide Dynamically as which message mapping program should be called based on the Input provided by the source system.
    For example:
    If the souce side file sends a field value=1 then message mapping 1 should be called
    If the source side file sends a field value=2 then message mapping 2 should be used...
    Pls provide me help on this ASAP.

    As ur source and target structures are always same, u should have used same mapping with multiple conditions instead of using three different mappings.
    Right now for ur requirement, in ID -> standard Interface Determination, u can use multiple interface mappings based on condition.
    Check heading "Specifying Conditions (for Multiple Inbound Interfaces)" here
    http://help.sap.com/saphelp_nw04s/helpdata/en/42/ea20e737f33ee9e10000000a1553f7/content.htm
    Regards,
    Prateek

  • Interface Mapping VS Message Mapping

    What is the meaning of Interface mapping and Message mapping in real business?
    I think it is something like the difference between the class and object. object is an instance of class.
    While talking about the mapping, there are the source interface and target interface. Can two source intefaces map to only one interface, and what about the vs verse? And how about the message mapping?
    Thanks a lot

    Hi -
    First, an Interface Mapping is not only linked with "Message Mappings" (which is the XI term for a mapping created with the XI graphical tool), but any other XI supported mapping type (e.g. XSLT, Java, or ABAP).  So basically, an Interface Mapping is used to link a source interface to a target interface via a mapping (of any of the supported types).  At runtime, you can't have an interface mapping without a mapping and a mapping without an interface mapping - they need each other.
    <i>>>>Can two source intefaces map to only one interface, and what about the vs verse? And how about the message mapping?</i>
    Yes, the ratio of source to target interfaces are n:m.  In those multiple cases, Multi-Mappings are typically involved as mentioned in the previous post.
    Also, remember that in one interface mapping, you are not limited to one mapping.  More than one mapping (of any type) can execute in the sequence you have set up in the Interface Mapping.  However, watch out for performance in these back-to-back(to-back) mappings.
    Regards,
    Jin

  • Can we call a Java Map in Message  Map

    Hello,
    Can we call a Java Map in Message  Map
    Thanks and Regards
    Hemant

    Hello Vijay,
    I think this is your code:
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.AbstractTrace;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import java.util.Map;
    import java.io.*;
    public class PayloadToXMLField1 implements StreamTransformation {
        String strXML = new String();
       //Declare the XML tag for your XML message
       String StartXMLTag = "<DocumentBody>";
       String EndXMLTag = "</DocumentBody>";
       //String StartXMLTag1 = "<Code>";
       //String EndXMLTag1 = "</Code>";
        AbstractTrace trace;
        private Map param = null;
        public void setParameter(Map param) {
            this.param = param;
        public void execute(InputStream in, OutputStream out) {
            trace =
                (AbstractTrace) param.get(
                    StreamTransformationConstants.MAPPING_TRACE);
            trace.addInfo("Process Started");
            try {
                StringBuffer strbuffer = new StringBuffer();
                byte[] b = new byte[4096];
                for (int n;(n = in.read(b)) != -1;) {
                    strbuffer.append(new String(b, 0, n));
                strXML = strbuffer.toString();
            } catch (Exception e) {
                System.out.println("Exception Occurred");
            String outputPayload =
                StartXMLTag
             + "<![CDATA["
             + strXML
             + "]]>"
             + EndXMLTag;
            try {
                out.write(outputPayload.getBytes());
             trace.addInfo("Process Completed");;
            } catch (Exception e) {
                trace.addInfo("Process Terminated: Error in writing out payload");;
    I need this code to be converted in UDF if Java map cannot be called in Message Map.
    Can anyone help me how to write UDF for the same java map.
    Thanks and Regards
    Hemant

  • Mapping-based message splits in PI7.0

    We have developed an integration scenario on XI 3.0 that uses mapping-based message splits (1:n transformation without BPM). This is available since SP14 I think.
    Now we want to upgrade to PI 7.0: Are mapping-based message splits a standard feature of PI 7.0 or do we need a certain SP as well?

    Hi,
    It should be available with Pi 7.0 with default
    And also compare the SP's and do finalization
    in 2004 - in 2004s
    SP12 & < - SP04
    SP13 + 14 - SP05
    SP15 - SP06
    SP16 - SP07
    SP17 - SP08
    SP18 - SP09
    Xi's Latest SP is SP 21 and PI's is SP 14
    Regards
    Seshagiri

  • Multi mapping and message splitting in BPM

    Hi ,
    I am working with this scenario ...
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    how many message interfaces i have to create .
    one outbound , one abstract  and two inbound .. is it correct.

    Hi
    Minimum you need to create three message interfaces i.e. Bpm_In_MI_Abstract,  aBpm_Out_MI_Abstract Bpm_Out1_MI_Abstract, because abstract interfaces can be use inbound and outbound as well.
    You can also use create implement it by using inbound and outbound message interfaces. In that case you have to use three additional interfaces(1 outbound and 2 inbound).
    Regards
    Sami
    Reward points if helpful.

Maybe you are looking for