Changing source/target structure without recreating mapping
Hi Experts,
There is a requirement where we need to add one field in target structure of an interface. Based on my limited knowledge, I know that if source or target structures are changed then the entire mapping has to be recreated from scrach. Is my understanding correct? If not, how do I go about this change?
Thanks,
Dhawal
In any version of XI/ PI you can insert the new fields/ nodes at the end of the parent segment....if done in this manner then the mapping wont be lost:
Old:
<SRC>
<Name>
<First>
</Name>
</SRC>
New
<SRC>
<Name>
<First>
<Last>
</Name>
</SRC>
In this case the mapping wont be lost....however if you add a new node somewhere in middle or at the top of the existsing nodes then mapping will be lost:
<SRC>
<Name>
<Last>
<First>
</Name>
</SRC>
In short the sequencce of apperance of nodes should not change
Regards,
Abhishek.
Similar Messages
-
Same source structure and different target structure without BPM
Hi Experts,
I am using PI 7.11.My requirement is at sender side the source structure is same.Basically invoice data coming from ECC to PI as a proxy message.
Receiver side adapter is JMS.At target side ,PI has to send the invoice data to 2 receiver systems.Payment node is coming in source XML,which always comes from ECC.For one of the business system ,Payment node should be sent.For the other BS,this node should be supressed.how to achieve this with single mapping?Payload based routing is not possible in my case as i dont have any field which differentiate the receiving system name.
Regards,
KarthigaHi,
In receiver determination, just input the two receivers (no conditions). In message mapping, you can use the constant function called receiver to suppress or create the node. You can only test it by editing the parameters in test tab e.g
At runtime, this value (receiver) will be filled out by the entries in receiver determination. So only one mapping is needed.
Hope this helps,
Mark -
Changing source location within a single mapping
Is above possible in owb11g, please read the following example.
I have three source module and three source location defined DEV, TEST and PROD, there is a table oe_order_lines_all that exists in all three places.
I have defined a mapping m_load_order_line in WH_SALES module (Target Module).
I developed the mapping using source location DEV, I deployed the code and executed i
t successfully against DEV source.
Now I want to configure that same mapping to point to TEST, by changing the location information to TSET, but while configu
ring the mapping I see only one source location (DEV) in the drop down list box.
I am assuming that I should somehow see the TEST and PROD location too, so I the second time, I can change it to TEST and re deploy my code to, so I can no
w use the same mapping to pull data from TEST.
Hope the above example will give you better understanding of my issue.
Thanks,
RaviHi David,
Some how the data locations tab is blanck in 11g, I have raised a ticket for Oracle support, they are still investigating why that is blanck, are you using 11g ? I can send you the screen shot if you want to have a look. Are you in US ?
Thanks,
Ravi -
How to change target structure order
Hi Guys,
I am having the problem for changing the target structure order,
I am dealing the fixed length files using the sender file adopter I am getting the order what ever I want. example below mention.
created the data type message type and every thing my own and also used sender file adopter with file content conversion.
Source
STRU1
STRU2
STRU3
STRU1
Where as I got the XSD from the vendor for the target and used external definition. When I am doing the message mapping I am getting different order.
I want the target as below mention
Target
STRU1
STRU2
STRU3
STRU1
But I am getting as :
Target
STRU1
STRU1
STRU2
STRU3.
Can you guys please help to get order what ever I want....
Thank
BabuSarvesh,
Those are like STRU1, STRU2 STRU3 structures not fields, every structure has n number fileds.
When I configure my sender file adopter I got the order what ever i need, but when I am doing message mapping structure level mapping like
STRU1 -
> STRU1
STRU2 -
> STRU2
STRU3 -
> STRU3
Since STRU1 has 2 occurrences in source first and last.
when I did above mapping the STRU1 is comming 2 times as a first, Which I do not want.
I hope you understand ..
can you please help me how to get order in target..
Thanks
Babu -
Target structure while creating amapping template
Hi,
I have a message mapping in which target structure is a External definition. When i try to create template based on mapping, i am having this message
Selected target element must be assigned a data type or a complex type.
Seems like i have to change the target structure as mapping templates can be defined only by using Complex type in external Definition.
Should i change the External definition structure , if so what needs to be changed?
Edited by: kalyan golla on Apr 11, 2011 5:56 AMHI Kalyan,
How to create Mapping Template for External Definitions
Change root tag in graphical mapping
Article on Mapping template:
http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/50171256-1ee2-2a10-3f84-ddecf098f724
Thanks,
Bhupesh -
Issue in OWB mapping - when changing source and target database
Hi,
I need help for resolution of the issue I am facing when moving mapping from development environment to QA.
Here is situation,
We develop ETL using one source, one staging and one target database.
In development we use one control_center for Source to staging and another control center staging to target.
All works fine in development.
Now I have created new runtime repository and imported all OWB projects (with full dependencies, exact replica of development). Now I need to change source and staging and target as different database.
I have created new database location connections and defined/attached DB connectors with stage and target location.
Now issues are
1. Two Staging mapping are not able to bound with source table (giving different error
a. One mapping show error for source synonym translation no longer valid when deploying this mapping , but validation comes without any issue)
b. Other mapping show error for source table/object not bound to repository
2. All the target mapping show validation successful, but when deploying says “table or view does not exist”. But tables are exists on source stage and target. (also permission are set correctly for target user to read from staging tables).
Not sure how to proceed from here.
I have recreated new repository and re-imported all project/mappings and defined all connection but still same issue.
Thanks in advance,
Vipin1. Two Staging mapping are not able to bound with source table (giving different error
a. One mapping show error for source synonym translation no longer valid when deploying this mapping , but validation comes without any issue)
b. Other mapping show error for source table/object not bound to repository
The above error were resolved when re-synchronized the table (for few I have to reimport the table) and mapping.
2. All the target mapping show validation successful, but when deploying says “table or view does not exist”. But tables are exists on source stage and target. (also permission are set correctly for target user to read from staging tables).
The above error still pending. My target mapping are not able to deployed/compiled.
For the above I have defined one Staging location to one target target location and target location have connector to staging (not sure if I have to define connector name same as staging location, as I have created DB connector with different name but reference database is same as staging location).
Mapping are assoicated with desired data locatoin and meta data.
control center is also have that data location.
Mapping are configured for the desired location. -
Source of xslt mapping and XSD/ XMT target structures for standard Idocs
Hi,
I am working on R/3 - XI - ICH scenario. I need xslt mapping and XSD/ XML target structures for standard IDoc like PROACT01,DELFOR01, DELVRY03. I tried to search it on marketplace but couldn't find it there. As per configuration document, these things are shipped with XI mapping content in live cache CD. But I don't have this CD with me. Can anybody tell me the source for these target structures and mapping program. ( Please share marketplace, site link or send me across the mail [email protected])
Thank you in advance.
Anand More.Anand the other option is to import the corresponding idocs into your integration repository and then you can view the generated XSD there.
As regards XSLT mapping, you need to basically first identify as to what form you want to transform your source idoc into.
For some help on XSLT mapping check the following threads,
https://www.sdn.sap.com/sdn/collaboration.sdn?contenttype=url&content=https%3A//forums.sdn.sap.com/topusers.jspa%3FforumID%3D44
https://www.sdn.sap.com/sdn/collaboration.sdn?node=linkFnode1-6&contenttype=url&content=https://Process Integration (PI) & SOA Middleware
Also have a look at my code samples,
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/generic xslt mapping in sap xi, part i.pdf
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9692eb84-0601-0010-5ca0-923b4fb8674a
cheers
Sameer -
How to map multiple source structures to single target structure
Hi all,
I have the scenario of 2 input files so i am using BPM for it. I have created the message types of the 3 input files. I have to finally generate an XML file which will contain the data of all the 2 files. That is i have to do 3:1 mapping.
Source Structure of File 1:
<b>DT_PWC_Customer</b>
<i>RECORDSET</i>
<u>CUSTOMER</u>
<i><b>REF_NO</b></i>
<i><b>CUSTOMER_NO</b></i>
Source Structure of File 2:
<b>DT_PWC_Customer</b>
<i>RECORDSET</i>
<u>METER</u>
<i><b>REF_NO
METER_NO</b></i>
Target Structure of Final Output File:
<b>DT_PWC_CustomerMeterData</b>
<i>RECORDSET</i>
<u>CUSTOMER_METER</u>
<i><b>REF_NO
CUSTOMER_NO
METER_NO</b></i>
Above nodes i have shown in a heirarchical order..nodes with same indentation are at same level.
Can anybody tell me how to do this mapping in IR in graphical editor.
RAJEEV GUPTAHi,
To elaborate my requirement, I want to tell that since i will be having 2 input files- one for Customer & one for Meter. I want to finally generate one XML file which will have data from both these 2 input files. That is, if Customer file has 3 records(3 REF_NO, 3 CUSTOMER_NO) and Meter file has 4 records(4 REF_NO, 4 METER_NO), the final output XML file will have 7 records(7 REF_NO, 3 CUSTOMER_NO,4 METER_NO).
Thanks,
Rajeev Gupta -
Message mapping---1 source structure and n target structures
I would like to know how many message mappings we need if we are mapping one source structure to 3 different target structures of a single receiver. I am assuming its just one message mapping.
Depending on the above answer how many interface mappings do we need.Kalyan,
you need multi-mapping that maps one source structure to multiple target structures. Just search multi mapping in SDN and you will find many good posts.
Basically, in MM editor, go to signature tab and in the target messages add additional message types. Simple. --> Only one MM and one IM
Jayson -
Idoc to jdbc mapping duplicate source node to target structure
Dear all,
I am working on PI 7.1
My sceniro
IDOC to JDBC [sap to mssql ] where the target is a table structure shown below: I execute a stored procedure to insert the below message type into sql table.
<ns0:MT_SP_LFBK xmlns:ns0="http://test.com">
- <Statement_Name>
- <storedProcedureName action="EXECUTE">
<table>spr_test</table>
<BANKS type="Char">BOA</BANKS>
<BANKL type="char">122207</BANKL>
<BANKN type="char">4555--0</BANKN>
<LIFNR type="char">1100000218</LIFNR>
<KOINH type="char">varchar</KOINH>
<BKONT type="char">01</BKONT>
<BANKA type="varchar">S.A.</BANKA>
</storedProcedureName>
</Statement_Name>
</ns0:MT_SP_LFBK>
The mapping is between source CREMAS02 and the above target structure. Everything works fine.
The problem is when the vendor has more than one bank account number the IDOC CREMAS02 replicates the below segment E1LFBKM for each BANK account information. Since target and source are mapped one to one how can i map the second bank account information to the same target structure or genereate a new target Message type for the second bank account information and send it to sql ?
<E1LFBKM SEGMENT="1">
<MSGFN>005</MSGFN>
<LIFNR>110000021</LIFNR>
<BANKS>BOA</BANKS>
<BANKL>122207</BANKL>
<BANKN>4555-0</BANKN>
<BKONT>02</BKONT>
<BANKA>S.A.</BANKA>
<BNKLZ>3000000</BNKLZ>
</E1LFBKM>
Thank you ,
TeresaHi Teresa,
which segment have you mapped with <storedProcedureName action="EXECUTE"> ?
Because according to me , if you send <E1LFBKM> to <storedProcedureName action="EXECUTE">
, you will be able to use your stored procedure several times, in fact each times that you have a <E1LFBKM>.
Reminds: inside <Statement_Name> you can do several SQL actions like execute one or several stored procedures (could be different).
Of course, after that your table should accept to have several bank account for a same customer.
So to have something like that:
<Statement_Name>
<storedProcedureName action="EXECUTE">
</storedProcedureName>
<storedProcedureName action="EXECUTE">
</storedProcedureName>
<storedProcedureName action="EXECUTE">
</storedProcedureName>
</Statement_Name>
regards
mickael -
I have source and target structures like thais how to map
source structure: name
id
addr
description
details
dept
target structure: name
id
addr
deptsource structure: target structure:
1...1
name _____________ name
1...1
id _____________ id
1...1
addr _____________ addr
description <no mapping>
details <no mapping>
1.....1
dept _____________ dept
Thanks,
Varun -
How to handle 1 Source Structure and N ( multiple Target Structure
Hi I have One source structure , Which is Source1 and mulitple target structure which Target1 , Target2 and Target3
I need Map this Source1 to Target1 and Target2 and Target3 based on the condition of one field of source1
ianyone please tell me how to do it
Thanking you
SridharHi Sridhar,
Yes Multimapping is possible without BPM from SP14 and above. But there are certain limitation on that as well. You can do only 1:N multi mapping and N:1 is not possible without BPM. In the case of 1:N mapping you would need to go for Enhanced Interface Determination and you will have a full advantage of that mapping if you use a adapter other than IDOC, HTTP and XI. In otherwords this holds good for adapters that runs on Adapter framework and not on Integration Engine.
BPM involved:
/people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
/people/narendra.jain/blog/2005/12/30/various-multi-mappings-and-optimizing-their-implementation-in-integration-processes-bpm-in-xi
Without BPM:
http://help.sap.com/saphelp_nw04/helpdata/en/42/f3b31d48fb1bc8e10000000a11466f/content.htm
/people/jin.shin/blog/2006/02/07/multi-mapping-without-bpm--yes-it146s-possible
Thanks
Ravi -
Searching a Field In Source or Target Message in Message Mapping
Hey Guys,
I came accross this peculiar behaviour and it keeps bugging me , I could search any field in source or target message in message mapping in PI 7.0 by copying the path( /ns1:MaestroAcreedores/Acreedores/ClaveDeGrupo or any idoc field /FIDCCP02/IDOC/E1FIKPF/BUDAT ) but in PI 7.1 i cant , its giving me an error String /ns1:MaestroAcreedores/Acreedores/ClaveDeGrupo not found , i can only search the field independently.Can anyone please help me out in this.Hi
I am not sure whether it worked in 7.0 or not, but having checked myself i can confirm that it is not working in 7.1 in my system also.
For alternative, you can check by changing into source text view where it will display as xml. Here when you search the keyword, it would display you the hierarchy better than normal view.
I dont think there is any other alternative. although I would say in the worst case scenario you would not have more than 10-15 occurrences of same element in an idoc.
Regards
Krish -
Message Mapping : content based target structure generation
Hi Team,
As per my requirement , mapping should generate target structure based on one "field" value in source srtucture.i.e target structure should generate for some of the custid values , not for all cust id's . also I dont want empty files .
Source:
MT_SOURCE
-Custid
-CustName
Target:
MT_TARGET
-Custid
-CustName
But I want to generate Target structure MT_TARGET only for custid values' 001,002,003 ; for remaining values I dont want to generate target structure MT_TARGET . Is it possible using graphical mapping.I think UDF is correct oprtion. can you provide sample code for this requirement.
Thanks.
DrumiBut I want to generate Target structure MT_TARGET only for custid values' 001,002,003 ; for remaining values I dont want to generate target structure MT_TARGET . Is it possible using graphical mapping.I think UDF is correct oprtion. can you provide sample code for this requirement.
might be it is helpful for ur requirement:
Custid + constant(001) +equals ->(first) if
Custid->then
Custid + constant(002) +equals-> else
First if ending -> Second if
Custid->then
Custid + constant(003) +equals-> Second else ->target Custid -
Losing source-target mapping from a data flow diagram process
Hi,
When I reload a model design from an xml repository, I am losing source-target mappings from a data flow diagram process. I wonder why.
The way it goes is:
- I define a data flow diagram with information stores, processes, and flows.
- Information structures are defined from the flows and the information trickles down to processes and information stores.
- In a process, I define Source-Target Mapping by selecting a target element and then selecting the source element(s).
- I save the whole model.
- So far, the Source-Target Mapping keeps the association between target and source elements.
- If I exit from Data Modeler, the next time I reload the saved model, the Source-Target Mapping target to source elements associations are lost!?
Does anyone have the same issue or would know how to resolve it?
Thanks,
/MarioI am still having problems getting my source to target mappings to save after I apply the fix described in this thread. Any thoughts?
From my TargetElement.xml
<?xml version = '1.0' encoding = 'UTF-8'?>
<oracle.dbtools.crest.model.design.process.TargetElement parentClass="java.lang.Object">
<property name="objectID" dataType="java.lang.String" readOnly="true" defaultValue="" xmlName="id" xmlType="attribute" getter="getObjectID" setter="setObjectID" reffered="false"/>
<property name="target" dataType="oracle.dbtools.crest.model.design.DesignObject" defaultValue="" xmlName="target" xmlType="element" getter="getTarget" setter="setTarget" reffered="true"/>
<property name="description" dataType="java.lang.String" defaultValue="" xmlName="description" xmlType="element" getter="getDescription" setter="setDescription" reffered="false"/>
<property name="name" dataType="java.lang.String" readOnly="true" defaultValue="" xmlName="name" xmlType="attribute" getter="getName" setter="setName" reffered="false"/>
<property name="transformationType" dataType="java.lang.String" defaultValue="" xmlName="transformationType" xmlType="element" getter="getTransformationType" setter="setTransformationType" reffered="false"/>
<collection name="sources" dataType="java.util.List" xmlName="sources" itemXmlName="sourceRef" getter="getSources" itemIsRef="true" refsXMLName="sourceRefs" addItem="addSource" getItemByID="getSourceByID" nativeList="true" orderTheList="true"/>
<roproperty name="sources" dataType="interface java.util.List" getter="getSources"/>
</oracle.dbtools.crest.model.design.process.TargetElement>
Process.xml:
<?xml version="1.0" encoding="UTF-8" ?>
- <oracle.dbtools.crest.model.design.process.Process parentClass="oracle.dbtools.crest.model.design.process.Transformation">
<property name="type" dataType="int" defaultValue="0" xmlName="type" xmlType="element" getter="getType" setter="setType" reffered="false" />
<property name="batchMinimumTransactions" dataType="int" defaultValue="" xmlName="batchMinimumTransactions" xmlType="element" getter="getBatchMinimumTransactions" setter="setBatchMinimumTransactions" reffered="false" />
<property name="batchTimeUnit" dataType="java.lang.String" defaultValue="" xmlName="batchTimeUnit" xmlType="element" getter="getBatchTimeUnit" setter="setBatchTimeUnit" reffered="false" />
<property name="diagram" dataType="oracle.dbtools.crest.model.design.process.DataFlowDesign" defaultValue="" xmlName="diagram" xmlType="element" getter="getDiagram" setter="setDiagram" reffered="true" />
<property name="footNote" dataType="java.lang.String" defaultValue="" xmlName="footNote" xmlType="element" getter="getFootNote" setter="setFootNote" reffered="false" />
<property name="frequencyTimeUnit" dataType="java.lang.String" defaultValue="" xmlName="frequencyTimeUnit" xmlType="element" getter="getFrequencyTimeUnit" setter="setFrequencyTimeUnit" reffered="false" />
<property name="frequencyTimes" dataType="int" defaultValue="" xmlName="frequencyTimes" xmlType="element" getter="getFrequencyTimes" setter="setFrequencyTimes" reffered="false" />
<property name="interactiveLongestResponseTime" dataType="int" defaultValue="" xmlName="interactiveLongestResponseTime" xmlType="element" getter="getInteractiveLongestResponseTime" setter="setInteractiveLongestResponseTime" reffered="false" />
<property name="interactiveResponseTimeUnit" dataType="java.lang.String" defaultValue="" xmlName="interactiveResponseTimeUnit" xmlType="element" getter="getInteractiveResponseTimeUnit" setter="setInteractiveResponseTimeUnit" reffered="false" />
<property name="mode" dataType="java.lang.String" defaultValue="" xmlName="mode" xmlType="element" getter="getMode" setter="setMode" reffered="false" />
<property name="paramsWrappersString" dataType="java.lang.String" defaultValue="" xmlName="paramsWrappersString" xmlType="element" getter="getParamsWrappersString" setter="setParamsWrappersString" reffered="false" />
<property name="priority" dataType="java.lang.String" defaultValue="" xmlName="priority" xmlType="element" getter="getPriority" setter="setPriority" reffered="false" />
<property name="transformationtask" dataType="oracle.dbtools.crest.model.design.process.TransformationTask" defaultValue="" xmlName="transformationtask" xmlType="element" getter="getTransformationTask" setter="setTransformationTask" reffered="true" />
<property name="peakPeriodsString" dataType="java.lang.String" defaultValue="" xmlName="peakPeriodsString" xmlType="element" getter="getPeakPeriodsString" setter="setPeakPeriodsString" reffered="false" />
<collection name="events" dataType="java.util.List" xmlName="events" itemXmlName="eventRef" getter="getEvents" itemIsRef="true" refsXMLName="eventRefs" removeItem="removeEvent" addItem="addEvent" getItemByID="getPartyByID" nativeList="true" orderTheList="true" />
<collection name="targetMappings" dataType="java.util.List" xmlName="targetMappings" itemXmlName="targetMapping" getter="getTargetElements" createItem="createTargetElement" removeItem="removeEvent" addItem="addTargetElement" getItemByID="getPartyByID" nativeList="true" orderTheList="true" />
<roproperty name="componentFlowsFor" dataType="interface java.util.Collection" getter="getComponentFlowsFor" />
<roproperty name="events" dataType="interface java.util.List" getter="getEvents" />
<roproperty name="flowEvents" dataType="interface java.util.List" getter="getFlowEvents" />
<roproperty name="paramMapping" dataType="oracle.dbtools.crest.model.design.DesignObject" getter="getParamMapping" />
<roproperty name="paramsWrappers" dataType="interface java.util.List" getter="getParamsWrappers" />
<roproperty name="parentprocess" dataType="oracle.dbtools.crest.model.design.process.Process" getter="getParentProcess" />
<roproperty name="parentprocessInDFD" dataType="oracle.dbtools.crest.model.design.process.Process" getter="getParentProcessInDFD" />
<roproperty name="peakperiods" dataType="[Z" getter="getPeakPeriods" />
<roproperty name="processedAttributesAndFlows" dataType="interface java.util.List" getter="getProcessedAttributesAndFlows" />
<roproperty name="processedEntitiesAndFlows" dataType="interface java.util.List" getter="getProcessedEntitiesAndFlows" />
</oracle.dbtools.crest.model.design.process.Process>
Maybe you are looking for
-
I have had this ipod touch for about a year now and up until now it has been working perfectly. I bought it prior to the app store coming out so i had to pay for the 2 separate software updates to make this do what they designed it for. I paid. it wo
-
Error with this Alien-RFID-Tag-List kind of tag format in flex 1.5
Hi all I am trying to display the following XML file which i am getiing from RFID reader when i send the command to reader. I am using flex 1.5. <Alien-RFID-Tag-List> <Alien-RFID-Tag> <TagID>1000 0000 0000 0000</TagID> <DiscoveryTime>2006/07/14 12:28
-
Problem with PT8 NEO Y VGA ATI SAPHIRE 9250SE
problem with PT8 NEO Y VGA ATI SAPHIRE 9250SE
-
Ok, so I accidently ended up restoring my Iphone today (good news, I had backed it up to Icloud shortly before this, so all was not lost). however, now that it is putting stuff back on the phone, not all of my photos are there. It said "syncing - of
-
Photos missing from backup?
Well I just got my replacement iPhone 4 from Apple. I did a backup to my computer before sending the faulty one off. Did a restore and I was sure it would give me back my photos too but they aren't on my new phone now. Are they gone forever? I never