Multiple Message Mapping
Hello Guru,
I am doing a multiple message mapping. the purpose is:
the source message structure is
MT_input
|row <1...unbound>
|---plant
|---name
the two target message structure are:
MT_output1
-|row <1...unbound>
|---plant1
|---name1
MT_output2
-|row <1...unbound>
|---plant2
|---name2
there can be many row in source message, the value of plant could be 1 and 2.
I want all rows with plant = "1" goto MT_output1,
all rows with plant = "2" goto MT_output2.
but I can not accomplished this job with graphic mapping. could you give me help?
I don't want to use Java Mapping.
Thanks a lot.
Hi,
MT_input
|row <1...unbound>
|---plant
|---name
the two target message structure are:
MT_output1
-|row <1...unbound>
|---plant1
|---name1
MT_output2
-|row <1...unbound>
|---plant2
|---name2
solution :
MT_input MT_output1
-|row <1...unbound> |row <1...unbound>
if the plant[context set to MT_input] is equals to 1 then map row from source to row in target[MT_output1]
plant and name mapping are direct.
Repeat the same mapping for MT_output2.
This definitely works, i have tried it.
Regards,
Pragati
Similar Messages
-
PI 7.1 Operation mapping - Multiple message mapping - one to many issue
Dear Experts,
I am facing this issue in PI 7.1 and I beleive i did similar one in PI 7.0 successfully.
I have an operation mapping with two message mappings.
The occurence of source message of operation mapping is 1
The occurence of target message of operation mapping is 0..unbounded
Corresponding i configured two message mappings
For message mapping-1
Source message occurence = 1 and Target message occurence = 1
For message mapping-2
Source message occurence = 1 and Target message occurence = 0...unbounded
When i test message mappings individually they are working good. But when i test it in operation mapping, the operation mapping is not working..as it is not able to convert single occurence output of message mapping -1 to the second message mapping-2.
Any suggestions?
Thanks.The message that i get when testing in operation mapping:
Runtime Exception when executing application mapping program com/sap/xi/tf/_MM_MessageMapping_1_; Details: com.sap.aii.mappingtool.tf7.IllegalInstanceException; Cannot create target element /ns0:MT_MessageMapping_1_TargetMessageType/RECORDSET. Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD
My question is, has somebody mapped similar scenario in your environment? If yes, can you please provide details.
Operation mapping : 1 to 0..unbounded
Message Mapping1: 1 to 1
Message Mapping2: 1 to 0...unbounded -
Multiple Message Mapping with same Idoc, Sender and Receiver
Hi,
We have one Interface sending INVOIC02 Idoc from SAP R3 4.6C to SAP R3 4.6C through XI 3.0.
On Inbound side we are using SAP standard configuring one Partner Profile with inbound INVOIC MM process code INVL.
In customizing, we have defined one invoic type for the EDI partner.
Now we have to integrate another type of inbound invoic, but in customizing it's not possible to assign more than one invoic type to the same Partner EDI.
So, we have a restriction in SAP 4.6C inbound standard. On the other hand, we can't desing two Integration Scenarios in XI 3.0 with the same idoc INVOIC02, for the same sender service and receiver service because Integration Directory doesn't allow to create two interface determination for them.
We are thinking on using header mapping in XI (receiver agreement to avoid use the same EDI partner profile for the inbound invoic, but we can't assign the same client and technical system with the same ALE Logical System in SLD for two different business systems.
Does anybody have any solution for this problem, SAP side or XI side?.
Thank you
Best regards
LuisHi!
In XI configuration - interface determination, you can specify more than one Inbound interface. If you identify more than one, you get a new column where you specify condition (xpath) for selecting between the different inbound interfaces.
In 4.6c, you can have more than one inbound invoic for the same EDI partner profile, if you separate between them using message function. Just add a new inbound parameter with a different message function, or copy the one you have and specify another message function, i,e. "DIFF".
Hope this helps.
Regards,
Oeystein -
Accessing container variables from ccBPM in Message Mapping?
Hello Friends,
I have created a ccBPM and require to send response messages to the sending system at different points as the message proceeds from one state to another. I do not want to create multiple message mapping stating different status in every message mapping. The message mapping remains the same only the status is changing. So I am thinking if I can access container elements in ccBPM at message mapping then I should be able to use only one message mapping. Is it possible at all?
Let me know if you have other solutions. Let me know if I am not clear?
Thanks & Regards,
Anand PatilHi Abhishek,
Your suggestion to use Parameterized Mapping did solve my issue. I was looking something like this. Thanks.
Now I have only one Message Mapping and it is used in multiple places. Thanks a lot
Best regards,
Anand Patil -
XI Configuration Design questions with multi-mapping message mapping object
Hello,
I'm having trouble designing a particular scenario for multi-mapping. Currently i'm working with a Vendor create and change. BPM is not being used.
This is what i need:
I need a CREMDM04 to turn into one or multiple ADRMAS/CREMAS IDocs and potentially a CLFMAS IDoc based on the values in the inbound CREMDM04 IDoc.
This is what i currently have:
A CREMDM04 inbound idoc is multi-mapped to a CREMDM03 (1...9999), another CREMDM03 (0...9999), and a CLFMAS01 (0...9999). At a minimum only the first CREMDM03 IDoc will be created and at a maximum all three will be created. The parameters on creating the second CREMDM03 IDoc and the CLFMAS01 IDoc are based on the values in the inbound CREMDM04 IDoc, whereas the first CREMDM03 IDoc will always be created and the values will just be converted/mapped from the inbound CREMDM04 IDoc. This multi-mapping is currently set-up via a graphical message map and works successfully in the test-tab of the mapping object. It has a main message and has sub-messages which are the IDocs. Im mapping the CREMDM04 to a CREMDM03 to then map it through an ABAP-Class and then to an XSL where the CREMDM03 inbound structure is expected to split into ADRMAS and CREMAS Outbound IDocs for Vendor Create/Change in the remote R/3 systems.
After the graphical map we have a necessary ABAP Class call that calls a BAPI to the remote system. This ABAP Class must come after the graphical map since the parameter for the BAPI is based on a converted value from the graphical multi-map.
After the ABAP Class call there is finally an XSL message split the CREMDM IDoc into an ADRMAS and CREMAS IDoc. There need to be two interface mappings (one per ADRMAS and CREMAS) since the ABAP classes and XSLs are specific to the ADRMAS and CREMAS.
The CLFMAS IDoc can go directly to the remote system, but since its within this one multi-map, Im not sure if is possible? Im not sure if it will fail once it tries entering the XSL mapping (this is the standard CREMDM message split offered from SAP).
There are three interface mapping scenarios I can think of, but cannot get to work:
CREMDM04 to ADRMAS02
CREMDM04 to CREMAS03
CREMDM04 to CLFMAS01
Currently I have the Interface Mapping structured as follows: (I cannot get this to activate as it appears it does not work)
Multi-Mapping ==> ABAP Class Call ==> Standard XSL Message Split
How should i design the interface mapping objects and the configuration objects for this scenario?
Any help is appreciated and I definitely will reward points (no need to include it in your response).Hi,
I suggest you may use multiple steps interface mapping. It's composited with 3 message mappings as step by step.
Mapping 1: One to one mapping. For the output schema, use a composition schema which includes those 3 IDOCs you want.
Mappign 2: ABAP Mapping. I am not sure the ABAP class you mentioned is an ABAP mapping or not. If it does, That's ok. If not,
call that ABAP class in your ABAP mapping and do corresponding change for your message. Return back the same structure as output.
Mapping 3: One to multiple mapping to split the message.
So basically as interface mapping, it's one to multiple mapping. And internally, you have 3 steps to realize the mapping.
And as my experience, for both one to multiple message mapping & multiple steps interface mapping, it works well in my project. And
in ID, you have to configure it via "advance" function in receiver determination or interface determination.
Let me know if any confusion.
Thanks
Nick -
Send Multiple field values to Single Target field in Message Mapping
Hi,
My Requirement is to Map Multiple fields to Single field in Target side.I have to send all the values concatenated and pass the same to target Field in Message Mapping.
We can use Concat function,but more that 15 fields are there.If using concat,the mapping will be complex.
Is there any way to simplify this requirement or we can use any UDF for this,kindly suggest.
Regards,
Madhu>>>We can use Concat function,but more that 15 fields are there.If using concat,the mapping will be complex.
I don't think it's complex but just that it occupies more mapping area
Just write a simple UDF - a one line code and pass all your input variables.
return var1+var2+var3+var4+...+var15; -
Interface Mapping with Multiple Message Mappings
Hi My Scenario is
File to Idoc.( Multiple records to Multiple idocs )
Due to Complexity of Mapping I split the Mapping step into 2.
My Source System does not provide Namspace when they are sending XML Data.
When I try 2 mappings individually both Mappings works fine.
However when I try test using Interface Mapping target messages are not generated.
Since 2nd Mapping invoves Mapping Split its expecting extra tags as shown here in the Targert Message generated from Message Mapping 1.
<i><ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1></i>
How can I solve this problem ?When I do Message Mapping:
From message Mapping 1 target Produced is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CostMaintenanceXI xmlns:ns0="http://test.xxx.com">
<CostMaintenanceXI>
<CostMaintenanceXI>
<Product>000000000000000023</Product>
<Plant>1401</Plant>
<Supplier>0000000001</Supplier>
<ValidityFrom>20021212</ValidityFrom>
<DIIndicator>ZFOB</DIIndicator>
<COGAmount></COGAmount>
<COGCurrency></COGCurrency>
<FreightAmount></FreightAmount>
<FreightCurrency></FreightCurrency>
<MISCAmount></MISCAmount>
<MISCCurrency></MISCCurrency>
<SPAAmount></SPAAmount>
<SPACurrency></SPACurrency>
<LandedCaseCost></LandedCaseCost>
<LandedCaseCurrency></LandedCaseCurrency>
<FrontLinePrice></FrontLinePrice>
<FrontLinePriceCurrency></FrontLinePriceCurrency>
</CostMaintenanceXI>
</CostMaintenanceXI>
</ns0:CostMaintenanceXI>
in 2nd Mapping I entered some details in the test tab and the generated source is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns1:CostMaintenanceXI xmlns:ns1="http://test.xxx.com">
<CostMaintenanceXI>
<CostMaintenanceXI>
<Product>1</Product>
<Plant>1</Plant>
<Supplier>2</Supplier>
<ValidityFrom>12212122</ValidityFrom>
<FOBIndicator/>
<DIIndicator>ZFOD</DIIndicator>
<COGAmount>10</COGAmount>
<COGCurrency/>
<FreightAmount>10</FreightAmount>
<FreightCurrency/>
<MISCAmount>10</MISCAmount>
<MISCCurrency/>
<SPAAmount>10</SPAAmount>
<SPACurrency/>
<LandedCaseCost/>
<LandedCaseCurrency/>
<FrontLinePrice/>
<FrontLinePriceCurrency/>
</CostMaintenanceXI>
</CostMaintenanceXI>
</ns1:CostMaintenanceXI>
</ns0:Message1>
</ns0:Messages>
As you can see both of the above structures differs in xmlns. I dont see anything else weird. -
Message Mapping for multiple item levels
Hi,
My query is regarding message mapping
Example of source data structure & Target data structure
Source data Structure
<item>
--<no>1</no>
--<address/>
--<ITEMS>
----<item>
------<Name>a</Name>
----<item>
------<Name>b</Name>
<item>
--<no>2</no>
--<address/>
--<ITEMS>
----<item>
------<Name>c</Name>
----<item>
------<Name>d</Name>
Expected Target data structure
<Item>
-- <no>1</no>
-- <name>a</name>
<Item>
-- <no>1</no>
-- <name>b</name>
<Item>
-- <no>2</no>
-- <name>c</name>
<Item>
-- <no>2</no>
-- <name>d</name>
How I can map the '<no>' field to target '<no>' field to repeat value until to second sub item level occurance complete ?
Thank you
SateeshHi Sateesh,
Please see the solution below.
The are 2 contect changes you need to do on field level. Right click and go to context and select your context you need.
Context on ITEMS - Should be on Root Structure(In my mapping it is MT_Multiple_Item_Level_Source)
Context on Name - Should be on Item (The first Item Tag)
Good Luck.
Regards,
Jannus Botha -
Output from JDBC Adapter mapped to multiple message types
Hi!
I face to a problem with the message mapping.. I do select with the JDBC adapter. This statement selects one field of clob type and it already contains a message - XML document. Depending of the type of this message will be done the message mapping and also the target message type depends on this XML document type. But when u define message mapping, there must be always a target message type... But in the design time, I don't know the exact type! It is dynamic...
And not just with the message, the same situation is also with the target interface...
Any ideas how to solve this?
Thanx, Peter
Message was edited by: Peter JarsunekHi,
I saw the weblog, but I think more important is the 'XI in action' mentioned in this one..
/people/ravikumar.allampallam/blog/2005/06/22/sap-xi-in-action
What I just can not understand from that blog is the step 2/4:
Receive XML file of any format and route to interface specific BPM..
How is it possible? On the output from the 1st BPM must be exact interface defined... How can different messages go out and than into the 2nd BPM?
Can you please write me, how the individual steps could follow after each other to achieve this?
Message was edited by: Peter Jarsunek -
In Idoc bundling ...message mapping not found
Hi XI Friends..
In my File to Idoc scenario..i want to send multiple IDOCs from the XI without a BPM .
I am following blog by Michal.
<a href="///people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change:///people/michal.krawczyk2/blog/2005/12/04/xi-idoc-bundling--the-trick-with-the-occurance-change
I have xsd for source ..so i created one external definition .and message interface for outbound.
following the above blog by michal..
i imported idoc ..and i exported that idoc into xsd and i changed the occurance of idoc to unbounded and again imported as external definition.
i created the message mapping between these two external definitions.and tested ..
As in michal 's blog..
In Interface mapping..i given source and target interface as standard idoc.and clicked on Read interface then i am not finding the message mapping created in previous step..
i refreshed cache also..
please guide me.....
regards
ramHi bavesh...
thank you so much for very your quick responses..
i got xsd as source..based on xsd i created external definition for source xsd and i created outbound interface based on source external deifinition <b>MI_OUT_WearUnits</b>.
and i imported Idoc and exported as xsd and changed occurance to unbounded and again imported as external definition.
i did mapping between these two external definitions.
and i selected standard idoc for source and target interface for interface mapping and given message mapping of previous step.
In ID
sender agreement :
sender service :BS_external
sender interface :<b>MI_OUT_WearUnits</b>
receiver agreement:
receiver service :R/3
receiver interface : standard Idoc
Interface determination:
sender service :BS_external
sender interface :<b>MI_OUT_WearUnits</b>
reciever service :R/3
and clicked create
inbound interface : Standard IDOc
i am not getting Interface mapping which i created in IR.
i tried Enhance interface determination also..
please guide me....
waiting for your help.
regards
ram -
Need Clarification on Looping in Message Mapping.
Hi All,
I'm trying to implement the Dynamic emailing as explained in the Michals blog.
/people/michal.krawczyk2/blog/2005/03/07/mail-adapter-xi--how-to-implement-dynamic-mail-address
I have this partially working for the scenario I have.
XI will be receiving a ORDRSP IDoc from an external system and XI needs to do the following.
1) Check the value of <b> E1EDP01-ABGRU </b> equals to Z2. If any of the E1EDP01-ABGRU has a value of Z2, it should do the following
a) Get the email address from the E1EDKA1-ILNNR and map it to the TO field as shown in the blog.
b) Get the values of BELNR-E1EDK01, MENEE, VPREI, POSEX, PEINH, ABGRT from the E1EDP01 segment and concatenate them all and map it to the Content tag as explained in Michals blog.
I have this process partially working. The XI interface is only mapping for the first occurrence of E1EDP01 and not the subsequent occurrences of E1EDP01 which matches the criteria ( E1EDP01-ABGRU = Z2)
Any help in getting fixing this problem??
ThanksMake sure to define multiple target messages in your message and interface mappings, for the mail package message definition (occurrence = 0...unbounded).
Also, in the logic of your message mapping, you need to create a new mail package message only if E1EDP01-ABGRU = 'Z2'. Use it like this:
ABGRU --- EqualS --- createIf --- Mail
Constant[Z2]
Regards,
Henrique. -
Query Error in Message Mapping
Hi everyone
I am working on a BPM, that BPM has a Message Mapping that makes a Query to a DB.
When I send a message with multiple details its working in the following way:
1.- If the first detail makes a query of a catalogue that exists on the DB, and the second detail makes a query to a cataloge that does not exists on the DB it finishes with error.
2.- If the first detail has the query of an unexisting catalogue on the DB, and the second detail has the query that exists on the DB it finishes correctly.
Can someone give me some light on whats happenning here?
Thanks in advancedEnded message
-
Hi,
1)I need some information regarding Message Mapping. I need to map the field TDLINE of segment E1EDKT2 of IDOC ORDERS05 to the target fields. But based upon the index number of the record of this segment, I must map it to different fields (eg.E1EDKT2[10], E1EDKT2[3]). How can I incorporate this in Message Mapping?
2)And one more scenario is as follows.Use PARTN if exists or use LIFNR to map to target and it must satisfythe conidtion PARVW = AG. Should we need Java code or can we achieve this using two 'If' conditions.
3)We are looping at a source segment and it has multiple occurances.How to create multiple segments in target based on condition.
Can anyone help me.
Thanks,
Srinivas> 1) I need to map the field TDLINE of segment E1EDKT2
> of IDOC ORDERS05 to the target fields. But based upon
> the index number of the record of this segment, I
> must map it to different fields (eg.E1EDKT2[10],
> E1EDKT2[3]). How can I incorporate this in Message
> Mapping?
You can use the index function (with SP13):
E1EDKT2* - index
equalS
constant(10) /
ifWithoutElse - target
TDLINE - removeContexts /
check the correct context
> 2)And one more scenario is as follows. Use PARTN if
> exists or use LIFNR to map to target and it must
> satisfy the conidtion PARVW = AG. Should we need Java
> code or can we achieve this using two 'If'
> conditions.
Sure you can chain if statements:
PARVW
equalS
constant(AG) /
ifWithoutElse
PARTN /
PARTN - exist - if - target
LIFNR
This mapping assumes, that PARVW = AG is available, when PARTN is available.
> 3)We are looping at a source segment and it has
> multiple occurances. How to create multiple
> segments in target based on condition.
Here is a pattern:
condition - createIf - target
condition has to be a queue of true and false with the same occurrency as source.
All sub nodes of source are now arranged correctly under the target node.
Regards
Stefan
Message was edited by: Stefan Grube -
Message Mapping(Display queue and Suppress Value)
Hi Experts,
In Message Mapping(graphical mapping), upon checking the properties of the nodes,there's one property display queue, in which suppress is there??
What does it mean?? Which queue it points and what value is suppressed??
Thanks & Regards,
SushamaHi Sushama,
SUPPRESS means no value.
suppose we are checking one condition (tdid = "RE" then pass tdline) based on the condition we will send one output. if the condition fails then suppress value goes to the target.
> What does it mean?? Which queue it points and what value is suppressed??
es: if(tdid.equals("WE") ifwithoutelse pass tdline value as output. [tdid is in E1EDKA1 segment and this segment occurance is multiple]
In this case if the condition is satisfied once and failed once (means E1EDKT1 segment comes 2 times) then first time it sends the corresponding tdline value and second time it sends the SUPPRESS value.
Regards
Ramesh -
Hierarchical structure message mapping in PI
Hello All,
I have a source and target structure in graphical message mapping
<?xml version="1.0" encoding="UTF-8"?>
<Material_MT>
<row> 0..unbounded
<MATERIAL_ID>1234</MATERIAL_ID>
<DEL_FLAG>
</row>
<row> 0..unbounded
<MATERIAL_ID>1234</MATERIAL_ID>
<DEL_FLAG>Y</DEL_FLAG>
</row>
<row>
<MATERIAL_ID>4567</MATERIAL_ID>
<DEL_FLAG>N</DEL_FLAG>
</row>
<row>
<MATERIAL_ID>1234</MATERIAL_ID>
<DEL_FLAG>N</DEL_FLAG>
</row>
</Material_MT
Materials can repeat in the source structure but their flags could be different
Target structure
<Mat> 1..1
<Mat_update> 0..unbounded
<Matid>
<Matreg>
<Matcomplete/>
<tuple>
<id/>
</tuple>
</Matreg>
</Matid>
<recordind>
<id>
</recordind>
</Mat_update>
Now, the requirement is
1) For each <MATERIAL_ID> in the source, map its corresponding flag <DEL_FLAG> value <Matcomplete/ field in the target ,
2) For each <MATERIAL_ID> in the source, take its corresponding value and make a soap lookup call in mdm to get tuple ids (mutiple value per material possible) and map each to <id> (under <tuple>)
3) For each <MATERIAL_ID> in the source, take its corresponding value and make a soap lookup call in mdm to get <recordind> (single value per material) and map to <id> under <recordind>
Now, I have done soap lookup for 2) and getting multiple tupleIDs for a single material
For 3) also, I am doing a lookup and getting a single ID back
Both 2) and 3) are achieved using udf soap lookup - 2) will return a resultlist and 3 a single string value
My main question is how to do message mapping for achieving step1, 2 and 3. Pls help...its needed badly
Thanks
mikeHi Mike,
Below is the logic as per my understanding.
1- Direct mapping from DEL_FLAG> value <Matcomplete/ field in the target
2- After lookup Map multiple Tuple Id's to Tuble node.
3-After lookup Map recordind to Id .
If you want it in detail let me know the sample output structure with values.
Regards,
Sudha
Maybe you are looking for
-
How do I get video to display on TV when using HDMI connector
It show a green screen but I get audio
-
Apple Mail OSX 10.6.4 (Snow Leopard) - Exchange Settings
Hi, I've been going through the forum for the last two hours and found a few posts with people reporting a similar / same problem as I am having. I'm trying to set up my RGU e-mail account using the Exchange 2007 option as I'd quite like both my addr
-
I received the upgrade OSX disc and did the upgrade. It appeared to go smooth but I got the login password issue and I can't seem to fix it. Does anyone know if with this disc I can do a total clean install? I can't seem to figure out how to do that.
-
Why use *31L in the following code?
Why use *31L in the following code? * {@inheritDoc} public int hashCode() return (int) ((long) getAreaCode() * 31L + getLocalNumber()); public class PhoneNumber implements PortableObject // ----- constructors -----------------------------
-
So there is a lot of white space at the top and bottom of the page when I print off poster. When I see the poster on the canvas on cs2 it looks how I want it to! I am confused! Help pls. Also I am new to photoshop. When I sent the finished poster