How to Multi-Map N:1 messages in BPM when N is unknown

I need to perform an N:1 message mapping in a transformation in an Integration Process. SAP Documentation explains how to do this:
[http://help.sap.com/erp2005_ehp_03/helpdata/EN/21/6faf35c2d74295a3cb97f6f3ccf43c/content.htm|http://help.sap.com/erp2005_ehp_03/helpdata/EN/21/6faf35c2d74295a3cb97f6f3ccf43c/content.htm]
But it seems to be the case that the first message of the source will be contained in a <Message1> </Message1> element pair, the next message in <Message2> </Message2> element pair, etc.
So what do I do in the case of a variable number of input message that get mapped to one message? I don't know how many messages will be coming in before the mapping needs to be done; it depends upon how many messages are sent out in a fixed time interval.
I will be using an ABAP XSLT transform to do this. I cannot use a
<xsl:for-each select="Message">
Kind of construct because each message is enclosed by a different <MessageN> element.
This must be a problem that has come up before. Can anybody please point me to the solution?
Kind Regards,
Tony.
Edited by: Anthony Bateman on Mar 23, 2008 9:31 PM

Hi Anthony,
Yes you can perform N:1 message mapping using BPM by just using a "wait" step. Its very simple. The "wait" step waits for a particular time period or scheduled time(like  25th March 10:00 PM).
If only "collection of input messages for a particular time interval" is your concern, then I think you can just do it with a simple BPM and no need of ABAP XSLT maaping. It can done by a simple Message mapping itself.
I can send you screenshot of a sample BPM which does this work on your mail Id if you are interested. Plz provide your email ID.
If I havent understood your Qn properly, plz do inform.
U can refer,
/thread/186475 [original link is broken]
/people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm
/people/siva.maranani/blog/2005/05/22/schedule-your-bpm
Thanks,
Shobha

Similar Messages

  • Multi-Mapping in IDOC without using BPM ?

    Hi ,
    Please check ..
    Can below given blog can be used to achive Multi-mapping in IDOC without using BPM ?
    /people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible
    Regards
    PS

    Solved .. Thx every one .
    Approache Used :
    1. Created mapping  with Change signature on target Message type(idoc) with 1..N Occurence.
    2. Operation mapping with change Occurence on Target Operation(1..Unbounded) .
    3. Used same Operation mapping in Interface Determination with 0..unbounded(Multiplicity).

  • I could do this before installing Maverick but cannot do it now.It is nice and convenient how Mac OS X Mail displays messages semi-automatically when you just select them. But wouldn't a bigger view of the mailbox be useful sometimes? Yes, and it's easier

    It is nice and convenient how Mac OS X Mail displays messages semi-automatically when you just select them. But wouldn't a bigger view of the mailbox be useful sometimes?
    Yes, and it's easier to get than you maybe think.
    Hide the Preview Pane and Delete Mail Without Opening It in Mac OS X Mail
    To hide the message preview pane in Mac OS X Mail:
    Double-click the bar that separates the message pane from the mailbox pane.
    Now, to delete any email:
    Highlight the message or messages you want to delete.Hold down the Command key while selecting with the mouse to highlight multiple emails and Shift to highlight a range.
    Press Del.
    To get the preview pane back, double-click the same bar again.
    Cannot do this now since installing Maverick

    It is nice and convenient how Mac OS X Mail displays messages semi-automatically when you just select them. But wouldn't a bigger view of the mailbox be useful sometimes?
    Yes, and it's easier to get than you maybe think.
    Hide the Preview Pane and Delete Mail Without Opening It in Mac OS X Mail
    To hide the message preview pane in Mac OS X Mail:
    Double-click the bar that separates the message pane from the mailbox pane.
    Now, to delete any email:
    Highlight the message or messages you want to delete.Hold down the Command key while selecting with the mouse to highlight multiple emails and Shift to highlight a range.
    Press Del.
    To get the preview pane back, double-click the same bar again.
    Cannot do this now since installing Maverick

  • Multi Mapping - Receiver IDOC & Mail with BPM

    Hi,
    Is it possible to use BPM with Multi Mapping for IDOC & Mail receivers sent parallely..
    Appreciate your help ..
    Thanks,
    vasanth.

    Hi Michal,
    Thanks Michal,
    We are using PI 7.1, Our Scope to do File to IDOC & Mail scenario in between we have to do RFC Lookups..
    Could you pls guide me thru the steps fo BPM,
    1 SA -> OB to AA
    2 ID  -> OB to AA & AA to Recv
    3.RD -> OB to AA & AA to Recv
    4.RA -> AA to IB & AA to IB
    Correct me if i'm wrong..
    Clarification : Is there is any way out to implement this scenario with out BPM.
    We already implemented this scenario with 2 MM & 2 OM, Scenario works fine...but we have to use 1 Mapping..
    Appreciate your help in advance..
    Thanks,
    vasanth.

  • How to push the offline chat messages to server when internet is available

    I am building chat application in windows phone 8.1 When internet is not available in the device i am storing all chat messages in sqlite database. I want push those messages to server when internet is available later even thought app is not open/active.
    please help me to solve this problem. thank you 
    vinay

    The best approach likely would be to use triggered background tasks. There is a specifc trigger for "InternetAvailable" which looks like a perfect match for your requirement. This article describes that feature in more detail:
    https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977058.aspx
    If I remember correctly however usage of SQLite in background tasks can be somewhat problematic (my information on that may be old however). My suggestion in that case would be to serialize the messages into an XML file when your App is suspended/closed
    which is likely to be a lot easier to handle in the background task (regular storage can remain in the SQLite database).

  • How do i fix the following message that appears when i open my computer :- Apple Sync Notifier.exe Entry Point not found the procedure entry point sqlite3_wal_check point chould not be located in the dynamic link library SQLite3.dll

    Apple Sync Notifies,exe.Entry point not found the procedure entry point sqlite3_wal_checkpoint could not be located in the dynamic link library SQLite3.dll
    I have uninstalled Itunes 10.4 shut down and installed Itunes 10.4 and still get this message on opening? How do i fix this problem?

    With Windows Explorer, navigate to your C:\Program Files\Common Files\Apple\Apple Application Support folder.
    Copy the SQLite3.dll that you should find there, navigate to the nearby Mobile Device Support folder, and Paste it in there also.
    Restart the programme all should be well
    In case that your OS is (64 bit)
    1. Open windows explorer, go to location C:\Program Files (x86)\Common Files\Apple\Apple Application Support
    2. Copy file "SQLite3.dll"
    3. Now paste it in the folder  C:\Program Files (x86)\Common Files\Apple\Mobile Device Support
    4. Restart the programme, it should not display that message, it should be clear.
    Good Luck

  • Thundrbird - How do I stop an other message opening automatically when I delete an open message

    When I have an open message that I delete another message opens automatically. If the message being deleted was the last message then the message immediately above this message opens even if its already been read. I don't want any message to open unless I specifically click on it. How do I set this up?

    I think this add-on will do what you want:
    https://addons.mozilla.org/en-US/thunderbird/addon/deselect-on-delete/
    http://chrisramsden.vfast.co.uk/3_How_to_install_Add-ons_in_Thunderbird.html

  • How do I disable the initial message from GDB when viewing my console in Xcode 4?

    This is the message that is shown before my program's output:
    GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
    Copyright 2004 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys000
    [Switching to process 28776 thread 0x0]

    That's peculiar because this message would only appear occasionally in xcode 3. I just downloaded xcode 4 and now this happends every time.

  • How do I stop the error message coming up when I press cancel on file dialog

    I am using the file dialog and if I press cancel an error box pops up with error 43 operation cancelld by user. Can we get rid of this, as it is bloody enoying, any ideas
    cheers

    Contrary to the rest of the nice folk here, I say do NOT turn off automatic error handling!
    You will regret it if a day comes where you forgot to handle an error properly and you have a hard time determining its source.
    If you truly want to ignore the error in this mode, you can wire the error out terminal into anything (even a wall). Once an error out terminal is wired, the error will not pop up automatically. This does not mean you should use this as a standard course of action. You should normally handle your errors properly.
    Try to take over the world!

  • Duplicate Message ID issue in case of Multi mapping (without BPM)

    Hi Experts,
    I am doing one sample Example for my requirement of converting the single source message data into the multiple Target messages.
    for example, when sender system is sending the 5 sale order details into a single message in PI then my Inbound proxy class of ECC R/3 receiver system must get this sale orders separately, that means inbound proxy class method must be triggered separately for 5 sale orders from sender system. for achieving this, I have used the Multi mapping concept in ESR (without BPM).
    This scenario is in Asynchronous mode.
    The below screen shots give the details on what I have configures so far.
    IN ESR
    IN ID
    IN SXMB_MONI of PI
    IN SXMB_MONI of ECC R/3 Receiver system (Error in Processing)
    due to this error, inbound Proxy class method is not being triggered for the single Sale order details as well,
    please let me know how to tackle this duplicate message ID issue when we have multiple payloads to process in a single message.
    please also let me know if is there any other workaround to fulfil this requirement.
    Thank you,
    Regards,
    Jagesh

    Hi Nunu,
    Check the below blog for restrictions.
    Multi-Mapping without BPM - Yes, it’s possible!
    Restrictions
    Messages that result from the split in a mapping-based message split are sent using one AE. So only adapters running on the AE are supported. In particular, this means that target IDOC message splits are not supported since the IDOC adapter is not part of the AE.
    Regards,
    Praveen.

  • Multi-mapping with message bundling but without using BPM

    Hi all,
    I have a requirement to bunch specific no. of records (say 50) from source message and create separate target messages for those bunches. For example, if the source message has 120 records, then there should be three separate target messages created containing 50, 50 and 20 records each.
    I am wondering whether this multi-mapping is possible without using BPM, as the typical no. of records in the source message are in the range of 600 to 800, and rarely (twice or thrice a month) they shoot up to 2000. So my concern is whether BPM would affect the performance. We are using PI at SP12.
    Regards,
    - Shankar.

    Sorry for late reply.. Well the sender is a file system, which sends a single XML file containing multiple records. (I mean I have a sender file adapter that polls periodically from a specific path and picks up the file when it is available)
    The no. of records in the source file may be different in each run. The requirement on the receiver system is that it can handle a file which has maximum of 'n' records only (say 50 in my example)
    Now the sender file can contain any no. of records. It may contain 10 on some day, or 200 the next day, or 120 on the third day. But on the receiver side, I want the files to be created such that each will contain AT MAX 50 records.
    So, if source file has <=50 records, then there will be only 1 target file having the same no. of records.
    If source file has between 51 to 100 records, then there will be two target files. One will have 50 records, and the second will have remaining records.
    And so on..
    Regards,
    - Shankar.

  • Question with multi-mapping 1:n split scenario

    Hi
        I have a scenario with the following requirement
    R3 --> XI --> Multiple files
    I used a multi-mapping scenario  using message mapping. to get the following output
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    <Transaction> </Transaction>
    <Transaction> </Transaction>
    </ns0:Message1>
    <ns0:Messages>
    Each  <Transaction> </Transaction>  produces a file in runtime. So far so good.
    Now, there was a new requirement to introduce a dtd line as the first line  in each of the target files created  - that looks like follows :
    <!DOCTYPE Transaction PUBLIC \"-//XXXXX//DTD BatchReceiptAuthorization//EN\" \"http://dtd.XXXXX.com/dtds/ReceiptAuthorization.dtd\">
    How do I go about introducing this header line above the <Transaction> node in each and every target file - that is created by multi-mapping  ? This header line is not a part of the target schema and hence cannot be mapped to as an constant element in the target.
    Any suggestions/ideas as to how this can be done ?

    Hi Gautam
        I did use a java mapping , as a second step after the message mapping - so that the dtd line can be introduced as a header for each target message/file written by the muti-mapping in the first step.
         In my scenario, I sent the inputstream that is being passed to the Java execute method  - to trace and I see that the whole of the xml file - as shown below - which is the output of message mapping ( from the first mapping step ) in sent to the execute method of the java mapping a single call
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    <Transaction> </Transaction>
    <Transaction> </Transaction>
    </ns0:Message1>
    <ns0:Messages>
    So, I modified Java mapping program to look for multiple occurences of <Transaction> tag and prefix them with my constant DTD Literal - which is the primary reason , why I had to use Java mappings after the message mapping.
    Now, I get an error is XI- SXMB_MONI
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
    <SAP:Category>XIServer</SAP:Category>
    <SAP:Code area="MAPPING" />
    <SAP:P1>unexpected symbol; expected '<'</', entity refe</SAP:P1>
    <SAP:P2>rence, character data, CDATA section, processing i</SAP:P2>
    <SAP:P3>0</SAP:P3>
    <SAP:P4>113</SAP:P4>
    <SAP:AdditionalText />
    <SAP:ApplicationFaultMessage namespace="" />
    <SAP:Stack>The exception occurred (program: CL_XMS_MAIN===================CP, include CL_XMS_MAIN===================CM00A, line: 609)</SAP:Stack>
    <SAP:Retry>M</SAP:Retry>
    </SAP:Error>
    Can you help me out here ?

  • Multi mapping - solution ??

    HI
    This is regarding a typical scenario where SAP XI 3.0 receives data through an outbound ABAP proxy , the output of these have to be files ...but the problem is :
    a) There will be around 15 files -  5 of type .txt , 5  of type .CSV and 5 of  .RTF  all to placed on a single location , how to achieve this ? design wise . ..
    b) all the files will have different formats i.e all txt files will be of a different format but the source data will be the same ,which means from the same  incoming Xl different files need to be formed , We dont want to use BPM ...
    does it mean we  need 15 differenct Communication channels ??
    and do we require 15 different mapping also ??
    Kindly suggest if it can be done through multi mapping ,  i am unsure how
    thanks
    Dev

    Hi,
    >>a) These 15 files are of different out put formats( as in the 5 csv files have different layouts and so does the 5 txt files ) , so does it essentially mean 15 different mappings and 15 different file communication channels ?
    No need of 15 mappings, one multimapping will do.. where from one source message type you are creating 15 target message type....
    >>b) Enhance interface determination basically helps me in creating (n)Target interfaces from 1 source message, right ?
    but then when i have 15 different mappings ... how does multi mapping help ? isnt itas good as 15 different interaces ??
    i think you are confused.. do like this
    1. Create a message mapping
    2. Go to the signature tab and add one source message type and 15 target message type..
    3. Come to definition tab and complete the mapping
    4. You can see that lot of Message, Message0 etc are created, these help in doing multimapping and this is multimapping
    1. Create interface mapping
    2. Go to the signature tab and add one source message interface and 15 target message interface..
    3. Do read interface and select the mapping done in above step
    1. Create interface determination.
    2. Provide the interface mapping created above there
    3. Create 15 communication channel and 15 receiver agreement
    Regards
    Suraj

  • Issue with java mapping in a multi-mapping scenario

    Hi
        We have  a 1:n multiple mapping scenario in XI and the source is R3 proxy and target side is files. So, creating multiple file from a single message from R3 .
    R3 --> XI --> Multiple files
    Structure of the output of the multi-mapping is
    - <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    - <ns0:Message1>
    <Transaction>
    </Transaction>
    <Transaction>
    </Transaction></ns0:Message1>
    </ns0:Messages>
    wherein each Transaction node represents a file.
    Now, we need to introduce a constant /string like
    <!DOCTYPE Transaction PUBLIC \"-//XXXXXX//DTD BatchReceiptAuthorization//EN\" \"http://dtd.XXXXXXX.com/dtds/ReceiptAuthorization.dtd\">
    on each of the files at the very beginning - i.e within each transaction node , in the above structure, we need the above DTD string to be written.  To do this, we added a java mapping as the second mapping after the message mapping that creates this string. Is this the right approach and would it produce what we are expecting ?
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.util.Map;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationException;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.DynamicConfiguration;
    import com.sap.aii.mapping.api.AbstractTrace;
    public class ModifyRootAndDelay implements StreamTransformation {
         AbstractTrace myTrace;
    public void execute(InputStream input, OutputStream output) throws StreamTransformationException {
              try{
                   BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                   String NameSpacePrefix = "<!DOCTYPE Transaction PUBLIC \"-//innotrac//DTD BatchReceiptAuthorization//EN\" \"http://dtd.innotrac.com/dtds/ReceiptAuthorization.dtd\">";
                   String sLine = null;
                   StringBuffer XmlMsg= new StringBuffer();
                   String Result,PayloadBody;
                   int indexOfFirst;
                   while ((sLine = reader.readLine()) != null) {
                        XmlMsg.append(sLine);
                   String StartingTag = XmlMsg.toString();
                   indexOfFirst = StartingTag.indexOf("<MerchantID>") ;
                   PayloadBody=new String(XmlMsg.substring(indexOfFirst));
                   Result=NameSpacePrefix.concat(PayloadBody);
                   output.write(Result.getBytes());
              /*     Thread.sleep(200000); */
              }catch(Exception e){
                   myTrace.addWarning("Exception raised in the JavaMapping:modifyNamespace.java""\n The Exception Message: " e.getMessage());
                   throw new RuntimeException(e.getMessage()) ;
            }     public void setParameter(Map param) {
              myTrace = (AbstractTrace) param
                        .get(StreamTransformationConstants.MAPPING_TRACE);

    Hi XI Gurus
                       In my scenario, I sent the inputstream that is being passed to the Java execute method - to trace and I see that the whole of the xml file - as shown below  - which is the output of message mapping ( from the first mapping step ) in sent to the execute method of the java mapping a single call
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
    <Transaction> </Transaction>
    <Transaction> </Transaction>
    </ns0:Message1>
    <ns0:Messages>
    So, I modified Java mapping program to look for multiple occurences of <Transaction> tag and prefix them with my constant DTD Literal - which is the primary reason , why I had to use Java mappings after the message mapping.
    Now, I get an error is XI- SXMB_MONI
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="MAPPING" />
      <SAP:P1>unexpected symbol; expected '<', '</', entity refe</SAP:P1>
      <SAP:P2>rence, character data, CDATA section, processing i</SAP:P2>
      <SAP:P3>0</SAP:P3>
      <SAP:P4>113</SAP:P4>
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>The exception occurred (program: CL_XMS_MAIN===================CP, include CL_XMS_MAIN===================CM00A, line: 609)</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Should I create multiple outputs - as many as the numberof target split files ( of type outputstream ) from the execute method in the java program ?

  • Multi-Mapping and Dynamic Configuration

    Hello,
    Is it possible to use dynamic configuration in mulltip-mapping? (message split?)
    in a  proxy-mail scenario I am using a multi-mapping. The message gets splited by a specif field.
    (Field of source message-SplitByValue(Value Change)-CollapseCOntext->Target Message(1..N)
    WIthin the graphical mapping I have a dynamic configuration for the "Mail Subject"
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey keySubj = DynamicConfigurationKey.create( "http://sap.com/xi/XI/System/Mail", "THeaderSUBJECT");
    conf.put(keySubj,  pSubject);
    return pSubject ;
    I have mapped this field to a field in the target message.
    The messages are being splitted as expected and the value of pSubject is also correct.
    BUT when receiving emails the subject field has the same value for all splitted messages.
    My Question is "conf.put(keySubj,  pSubject);" overwitting all splitted outgoing messages?
    Thanks for the Help
    EMW

    As stated in http://help.sap.com/saphelp_nw70/helpdata/EN/43/09b16006526e72e10000000a422035/frameset.htm
    Adapter-Specific Attributes and Multi-Mappings
    In multi-mappings, there are multiple message headers with adapter-specific attributes. The mapping API can only access one message header. This has the following consequences depending on whether there are multiple source or target messages:
    ●     1:n Transformation
    If there are multiple target messages, the header for the adapter-specific attributes is copied for each message. This means that you can only create one header for all adapter-specific attributes, and not individual headers.
    ●     n:1 Transformation
    This variant is only possible for multi-mappings in integration processes. If there is more than one source message, read-access to the adapter-specific attributes of the various message headers is not possible at runtime.
    ●     m:n Transformation
    All afore-mentioned restrictions apply here. Developers can at most write the same adapter-specific attributes for all target messages to the header, without read-access to the attributes of the source messages. m:n transformations are only supported within integration processes.
    Regards,
    Henrique.

Maybe you are looking for

  • Prompt To Download File when not a pdf or doc

    Different files are uploaded through one of my applications. The problem is when clients want to view the file, if its not a .pdf or .doc, .docx, its not rendered through the browser and throws an error. Is there a way I could force a download prompt

  • Monitor Colors as negatives

    The entire color scheme on my monitor has changed to almost like a photo negative. How do I correct and get it back to displaying colors properly? 

  • My position

    Ok, recently I've downloaded the new Ovi Maps and I find that it has finally added useable maps for my country. Now I can't seem to find to "Go to My Position" option on the map, like the one on google maps. Help? If you find my post helpful please c

  • Dynamic ALV Grid is not displaying !!

    Hi all,   I am trying to create dynamic alv grids and upto five levels(five grids) out put is displaying fine without any problem. But when I try to display the 6th grid, the program is going into infinite loop and getting timed out. Even I tried to

  • How can I restore applications on my Centro that I erased by mistake?

    This is such a rookie mistake that I am embarrassed to post it.  I LOVE my Palm Centro and got everything working perfectly.  Then I downloaded the "Reflect" freeware that I thought was stupid, so I clicked on it and then tried to delete it from my p