IDOC mapping requirment
Dear all,
I have a mapping requirment based on IDOC Segment to SOAP.
My IDOC Structue is like this:
Source Target
segement1:
itemA
itemB
itemC ID
itemD
Segement2:
itemD
itemE Description
itemF Value
Based on ItemF ,if its value is 00 then get itemC from Segement1 and itemE from Segement2 and map to target as ID and Desciption .
Please provide me the graphical mapping design.
Regards
Vsantosh
can u provide me some more information like
if ItemF value is 00 then ur trying to get the data from the two fields from the source side ,
what do u want to do with those two values (means u want concatnate or what) and
if itemf value is not queals to 00 then what to do .......
Similar Messages
-
Flat File to IDOC Mapping requirement to generate Multiple Segments
Hi Experts,
I got a requirement were i have 2 records in a file and i need to generate 2 IDOCs with multiple segments in it.
FILE :
10/01/2010 101 KRNA ic_quantity 30-0257 3526 1 1 ea 110000 10
10/01/2010 101 KRNA ic_quantity 90-0005 3526 1 2 ea 110000 10
Idoc should generate 2 IDOCs with multiple segments as shown below
I have imported the IDOC and changed the occurrence to " unbounded "
The Basic IDOC Type : WMMBID02
I need to generate Multiple segments of E1MBXY1
i.e.., First IDOC should contain two E1MBXY1 segments
Second IDOC should contain Four E1MBXY1 segments
IDOC1 : WMMBID02
Segment : E1MBXY1( 2 segments)
10/01/2010 101 KRNA ic_quantity 30-0257 3526 1 1 ea 110000 10
10/01/2010 101 KRNA ic_quantity 90-0005 3526 1 2 ea 110000 10
IDOC2 : WMMBID02
Segment : E1MBXY1 ( 4 segments)
10/01/2010 101 KRNA ic_quantity 30-0257 3526 1 1 ea 110000 10
10/01/2010 101 KRNA ic_quantity 30-0257 3521 1 1 ea 110000 10
10/01/2010 101 KRNA ic_quantity 90-0005 3526 1 2 ea 110000 10
10/01/2010 101 KRNA ic_quantity 90-0005 3521 1 2 ea 110000 10
Can anyone suggest me how to generate IDOCs with multiple segments
what are multiple ways of generating it
Whether it can be achieved using Multi-mapping or I need go for UDF
If any one has done has done this type of requirement ,please share the points.
Thanks
SaiBasically you need to generate idoc per record in the flat file. During fcc conversion you convert flat file to xml structure at the sender side. In the mapping use xml file structure source and idoc as receiver structure. You just export idoc and update the idoc segment 1 to unbounded. Please follow the michael blog for file to idoc multimapping without bpm. Yes without bpm it is possible.
see this link... This will answer your requirement.
https://wiki.sdn.sap.com/wiki/display/XI/File%20to%20Multiple%20IDOC%20Splitting%20without%20BPM
>Whether it can be achieved using Multi-mapping or I need go for UDF
you dont need udf for this. -
Inbound Invoice IDOC mapping Required fields
Hi All,
Please let me know what need to be mapped for the @begin , @segment , TABNAM , SNDPOR, SNDPRT etc like this elements in the IDOC structure.
In my scenarion i get Invoices in XML file so that i can pick that and process it into SAP R/3 by doing correct mapping with the inbound IDOC and post the same into R/3 . Please provide the sample mapping for processing Invoice IDOC.
Regards,
ReddyNanda,
@ Control records
>>>
You have two option. One is to fill the control records inside the mapping or else let XI fill it automatically.
In case you are filling the control records in the mapping, then you will have to enable the option to take those values in the IDOC receiver adapter.
See option (Apply Control Record Values from Payload) - http://help.sap.com/saphelp_nw04/helpdata/en/96/791c42375d5033e10000000a155106/content.htm
Control values - http://help.sap.com/saphelp_nw04/helpdata/en/13/95244269625633e10000000a155106/content.htm
@ Begin, Segment etc
>>
you can map any constant value to the same. -
Mapping Requirement for File to IDOC
Hi All,
I have a requirement related to Mapping and need your help on this. There is a financial posting Interface and the data is being fetched from database using strored procedure.
The source file is having structure like as shown below
<FIExport>
<resultset>
<row>
<headerid>12345</header id>
<field2>5</field2>
<field3>1</field3>
<field4>29</field4>
<field5>3</field5>
</row>
<row>
<headerid>12345</header id>
<field2>5</field2>
<field3>1</field3>
<field4>48</field4>
<field5>3</field5>
</row>
<row>
<headerid>12345</header id>
<field2>5</field2>
<field3>1</field3>
</field4>
<field5>3</field5>
</row>
<row>
<headerid>12346</header id>
<field2>5</field2>
<field3>1</field3>
<field4>2</field4>
<field5>3</field5>
</row>
<row>
<headerid>12347</header id>
<field2>5</field2>
<field3>1</field3>
<field4>2</field4>
<field5>3</field5>
</row>
</resultset>
</FIExport>
Condition:
For creating target structure follwoing conditions are required
1) IDOC at receiver side will be created as per unique header id therefore in the current source structure 3 Idocs will be created for 3 unique header id like 12345 , 12346 , 12347
2) Target EIFISEG which is line item will be created based on per row per unique header id under each IDOC and there has to be 2 SEGMENTS (2A & 2B ) per row based on the VAT amount presence and also two additional E1FISEG has to be created statically per idoc for BSCHL = 34
so for the above source structure the target should have number of EIFISEG as follows:
As there are 3 rows for header id 12345, therefore under IDOC1 the number of EIFISEG will be
since VAT Amount(field 4) is present therefore for 2rows of 12345 header id IDOC it will generate 2X2=4 , E1FISEG segments (each for 2A & 2B) and 1 E1FISEG for 3 row of header id IDOC 12345.
In addition to this 2 additional segment will be created for BSCHL=34( it's duplicate segment of E1FISEG, so no issues in this)
Total number of E1FISEG segments in IDOC for header id(12345) will be = 4 + 1 + 2 = 7 segments
Similarly for IDOC with header id (12346) the total number of EIFISEG will be = 2( 2A & 2B as vat amount (field 4) is present + 2(bschl =34) = 4 segments
Similarly for IDOC with header id(12347) the total number of E1FISEG will be = 2( 2A & 2B as vat amount (field 4) is present + 2(bschl =34) = 4 segments
So the target strcuture should look like:
Target Structure
IDOC1 for header id= 12345
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
E1FISEG5
field 2
E1FISEG6
field 2
E1FISEG7
field 2
IDOC1 for header id= 12346
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
IDOC1 for header id= 12347
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
Please help me to complete this mapping requirement as it seems to be complex.
Thanks & Regards
PrabhatHi,
There was one typo mistake, the TARGET structure will be
Target Structure
IDOC1 for header id= 12345
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
E1FISEG5
field 2
E1FISEG6
field 2
E1FISEG7
field 2
IDOC2 for header id= 12346
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
IDOC3 for header id= 12347
E1FIKPF
field 1
E1FISEG1
field 2
E1FISEG2
field 2
E1FISEG3
field 2
E1FISEG4
field 2
Thanks & Regards
Prabhat -
Hello everybody,
I have the next scenario Oracle DB-> XI-> Idoc PAYEXT, now the problem is that I get the error in the message mapping that Mapping not sufficiently defined, my strcutures look fine, so is there a way to know all the required fields for an Idoc, there is no fields in red as in other ocassions indicates mapping required, any suggestions????, thanks in advance.
Regards,
Julio CesarHi Julio,
As Aamir suggested, you can used TC :WE60 to check the idoc structure and mandatory fields.
Just in addition to Aamir, In most of the idocs when you assign constant to a idoc segment in order to generate segment you need to populate the mandatory fields of that segment as well. So you need to assign values to mandatory fields of segment only if you want to generate that particular segment ( By assigning constant / mapping input element value for repeatation.)
In you case can you please check if you are trying to generate some segment, but you havent mapped mandatory fields of that segment.
Hope this will help.
Let us know if you need more detals.
Nilesh -
Dear friends,
I have one scenario as below:
Sender system: Will have MATMAS05 IDoc structure with many segments.
Receiver Systems: There will be say 4 R/3 receiver systems.
The IDoc segments should be distributed to some (all R/3 Receiver system)
i.e Based on plant and Logical system some segments of the IDoc MATMAS04 from sndr system should move to particular receiver R/3 system and like wise some other segments to another Rcvr R/3 System and so on.
Could you please help me in this regard how to start with this..
Is BPM required for this scenario..?
If so then is BPM able to call the Table name which resides in the ABAP stack..?
then how to proceed for this ..?
Eagerly waiting for you valuable solutions/approach
Thank youHi Friend,
The Source structure MATMAS04.
I think we need target structure :Many MATMAS04 IDocs is required because some segments of the IDoc MATMAS04 from source system should move to particular receiver R/3 system and like wise some other segments to another Rcvr R/3 System and so on.
Can I go for Duplication subtree in the target or shall I have to go to message tab in the mapping editor andf enter the IDoc of required numbers...? so that I can have multiple say 4 IDoc structure( if receiver is four).
Please tell me how to distribute the source IDoc particular segment to particula receiver based on plant num and logical system details in ABAP stack.
If I map the control record EDIDC_40- RCVPOR of the target structure to the receiver (in the Constant standard function) will it work..?
Points will be awarded...
regards
Sampada -
Hi Friends,
I am again posting this thread in more ellaborated way since I did not got the solution...please give me the solution if any one knows...
I have one scenario as below:
Sender system: Will have MATMAS05 IDoc structure.
Receiver Systems: There will be say 4 R/3 receiver systems.
The IDoc segments should be distributed to some (all R/3 Receiver system)
i.e Based on plant and Logical system some segments of the IDoc MATMAS04 from sndr system should move to particular receiver R/3 system and like wise some other segments to another Rcvr R/3 System and so on.
Could you please help me in this regard how to start with this..
Is BPM required for this scenario..?
If so then is BPM able to call the Table name which resides in the ABAP stack..?
then how to proceed for this ..?
Eagerly waiting for you valuable solutions/approach
The Source structure MATMAS04.
I think we need target structure :Many MATMAS04 IDocs is required because some segments of the IDoc MATMAS04 from source system should move to particular receiver R/3 system and like wise some other segments to another Rcvr R/3 System and so on.
Can I go for Duplication subtree in the target or shall I have to go to message tab in the mapping editor andf enter the IDoc of required numbers...? so that I can have multiple say 4 IDoc structure( if receiver is four).
Please tell me how to distribute the source IDoc particular segment to particula receiver based on plant num and logical system details in ABAP stack.
If I map the control record EDIDC_40- RCVPOR of the target structure to the receiver (in the Constant standard function) will it work..?
Points will be awarded...
regards
SampadaSampada,
You do not need BPM in this case. You can just create different mapping for each receiver system with different segment.
and in configuration you can specify which mapping rule to be used for each receiver. This way it would be much faster. This is very easy.!!
Again you do not need BPM for this....
Let me know if you need more details.
Nilesh -
XSLT mapping requirement.. Only numbers need to be picked..!!
Hi ,
XSLT mapping requirement.
I will be getting the value as mix of numbers and alphabets like " 1343: -BIZ USA ".
I need to pick only number '1343' from the input field.
Is there any function in XSLT to pick only numbers and ignore alphabets?
Thanks
DeepthiHi There,
The below piece of code could cater your requirement, for flltering the non digit chars from your field,
<xsl:value-of select="translate(<your field name>, translate(<your field name>, '0123456789', ''), '')"/>
This would separate the non numeric chars from your field in mapping.
Let me know this works.
Regards,
Rajesh Kumar T -
Mapping requirement about grouping with restriction
Hi,experts:
There is a complex mapping requirement.
There are 2 document types(A and B) in the source records.
I need collect the amount with the document which is type A.
The source records are as follows:
Doc_No Doc_Type Doc_Itm_No Amount
0001 A 0010 3
0001 A 0020 4
0002 B 0010 5
0002 B 0020 6
0003 A 0010 11
0003 A 0020 22
The target records should be:
Doc_No Doc_Type Amount
0001 A 7
0003 A 33
The source and the target data type are the same as follows:
Documents 1...unbound
---Doc_No 1...1
---Doc_Type 1...1
---Doc_Itm_No 1...1
---Amount 1...1
Q1: How to create the target top node(Documents) with restriction(Doc_Type = 'A')?
Without the restriction,i can handle it well as follows:
removecontext(Doc_No)->sort->splitbyvalue(value changed)->collapsecontexts->Documents
Q2:How to collect the amount?
Regards
Minghi ming,
do this mapping
Q1: How to create the target top node(Documents) with restriction(Doc_Type = "A")?
Doc_type-->(if equals "A")>(remove context)-->(createif)----->Documents
q2. How to collect the amount?
Doc_type(Documents context) + Amount(Document's context)--->UDF1>(SplitByValue)->Doc_type
Doc_type(Documents context) + Amount(Document's context)--->UDF2>(SplitByValue)-->Amount
//****************************UDF1***********************//
public void get_batch_name(String[] Doc_type,String[] Amount,ResultList result,Container container){
//write your code here
Hashmap myHashmap=new Hashmap();
for(int i=0; Doc_type.length(), Amount.length())
if(myHashmap.get(Doc_type<i>==null))
{myHashmap.add(Doc_type<i>, Amount<i>);}
else
String amt= amt+myHashmap.get(Doc_type<i>);
myHashmap.put(Doc_type<i>,amt);
Set s=myHashmap.keySet();
Iterator i=s.iterator();
while(i.hasNext())
result.addValue(i.next());
//********************UDF2***************************//
public void get_batch_name(String[] Doc_type,String[] Amount,ResultList result,Container container){
//write your code here
Hashmap myHashmap=new Hashmap();
for(int i=0; Doc_type.length(), Amount.length())
if(myHashmap.get(Doc_type<i>==null))
{myHashmap.add(Doc_type<i>, Amount<i>);}
else
String amt= amt+myHashmap.get(Doc_type<i>);
myHashmap.put(Doc_type<i>,amt);
Arraylist s=myHashmap.values();
String array[]=s.toArray();
while(int i=0;i<array.length();i++)
result.addValue(array<i>);
Message was edited by: self
sudeep dhar -
Mapping requirment based on field value
Hi All,
I have a mapping requirement
where in the file i have a 2 AM records as shown
AM U 00000000000010000C
AM X 00000000000120000
Based on AM-03 field i..e,, AM-03 = 'C'
then to the target field i need to pass the value(00000000000120000) of next AM02 record.
so when ever AM03 filed is 'C' then i need to pass the value of next AM record.
can any body suggest me how i it can be acheived.
Thanks
Sai_SHAi am not sure whether i have understood ur req correctly or not..
but u can chk this UDF in ur mapping:
execution type: all values of a context
if(var1[0].equals("C"))
result.addValue(var2[1]);
filed3---removecontext
UDF----target
field2---removecontext -
IS Mapping required in JDBC to PROXY asynchronous scenario?
Hi,
I am working on JDBC to PROXY asynchronous scenario. The scheduled stored procedure fetches the data from database tables and stores them in staging table in the same database. XI will fetch the records via JDBC adapter. Now these records are to be posted into SAP custom table via proxy without any transformation. Now is Message mapping and Interface mapping required in this case?Hi
I assume that your source and traget structure will be different as you are using JDBC.
SO you will need to create message mapping and operation mapping.
-Deepak. -
Hello,
We'd like to store the idoc data extracted from EDI 852 inbound transaction in an infocube for DP. SAP Note 154604 suggests that trx <b>/sapapo/map_tser</b> can be used for specifying the infocube.
However, in SCM 4.1, this trx has a field for PA only, not infocube. I was wondering how to pull the data into infocube.
Any suggestions would be appreciated.
Thank you,
MalliHello,
I'm afraid that i can not help you.
I am witting you because i am trying to get information about VMI/ SMI implementation, for ex. IDOC mapping, best practices, etc.
I will be appreciate if you can provide me this information.
Thanks&Rgds
Angélica -
Need to generate 2 idoc"mapping issue"
Hi Experts,
When the Purchase_order_type is coming like HIGH,REGULAR,NEW,BOUNCED. In this case i need to generate 2 idoc, based on HIGH is one and Other than HIGH is one, even though if it's REGULAR,NEW,BOUNCED.
I can't generate. pl suggest
rgds
selvamHi,
Please make sure you will sort the data in your select query.
Now, you need to have two idocs in mapping. Click on Duplicate Subtree to have second IDOC. Now lets assume, your first IDOC represents mapping when ORDER TYPE is HIGH and your second IDOC represents mapping when your ORDER TYPE is not equal to HIGH that is NEW, BOUNCED, REGULAR etc.
I have defined Source and Target data type as follows.
Source Data Type:
SDN
<Row>
<CQ_NO/>
<ORDER_TYPE/>
<LINE_NO/>
</Row>
Target Data Type:
SDNTarget
<IDOC>
<Node>
<CQ_NO/>
<ORDER_TYPE/>
<ItemNode>
<LINENO/>
</ItemNode>
</Node>
</IDOC>
Mapping for IDOC 1:
IDOC:
Order Type -->Fix Values --> remove context
Fix Values (This should have default u201Cfalseu201D and HIGH = true)
Concatenate Output of point 1 with CQ_NO (Context of CQ_NO should be at SDN)
Output of point 3 --> Split by value (value changed) -->collapse context
Output of point 4 will be first input to u201CStart withu201D function and second input will be constant u201Ctrueu201D
Output of Point 5 --> create if --> IDOC
Node:
Map with constant
CQ_NO:
Order Type --> Fix Values --> remove context
Fix Values (This should have default u201Cfalseu201D and HIGH = true)
Concatenate Output of point 1 with CQ_NO (Context of CQ_NO should be at SDN)
Output of point 3 --> Split by value (value changed)
User Format By example. Pass CQ_NO (Context of CQ_NO should be at Row) as first input and second input should be output of point 4.
Pass Output of format by example that is point no 5, to collapse context --> Split by value (Each Value) --> CQ_NO
ORDER_TYPE
Order Type --> Fix Values --> remove context
Fix Values (This should have default u201Cfalseu201D and HIGH = true)
Concatenate Output of point 1 with CQ_NO (Context of CQ_NO should be at SDN)
Output of point 3 --> Split by value (value changed)
User Format By example. Pass ORDER_TYPE (Context of CQ_NO should be at Row) as first input and second input should be output of point 4.
Item Node:
Order Type --> Fix Values --> remove context
Fix Values (This should have default u201Cfalseu201D and HIGH = true)
Concatenate Output of point 1 with CQ_NO (Context of CQ_NO should be at SDN)
Output of point 3 --> Split by value (value changed)
Output of point 4 will be first input to u201CStart withu201D function and second input will be constant u201Ctrueu201D
Output of Point 5 --> create if --> IDOC -
Hi All,
I am having a mapping requirement. A comma separated string is coming in the source field and i have to split the value
and map the target fields.
For example:
Source:
<Row>123,BOFA,Success,True</Row>
Output
<Target>
<A>123</A>
<B>BOFA</B>
<C>Success</C>
<D>True</D>
</Target>
I am using UDF for the same but getting an exception.
Please help.
Thanks!!Hi,
Are there only one row or multiple rows in source XML? Then mapping the root is also necessary. Secondly if we look at this XML
<Target>
123 BOFA <C>Success</C>
<D>True</D>
</Target>
The value "123 BOFA" is expected to be within XML tag as shown below
<Target>
<A>123 BOFA</A>
<C>Success</C>
<D>True</D>
</Target>
Could you please kindly mention the version of PI you are working in.
Anyways you can use the following UDF to meet your requirements. For each field in target, u need separete UDF. The value of variable "i" is only to be altered for each target field.
public String UDF(String a,Container container)
String s[]=new String[3];
int i=0;
try
String tgt[]=a.split(",");
//first field value
s[0]=tgt[0]+" "+tgt[1];
//second field ("C") value
s[1]=tgt[2];
//third field ("D") value
s[2]=tgt[3];
catch(Exception e)
e.printStackTrace();
//value of i decides which field you want to populate for first field i=0 so on and so forth
i=0;
return s<i>;
Hope this solves your problem.
regards
Anupam -
"LUN Map requires repair" on re-start
All,
I have been having this problem for several months. I work in a facility where shutting down everything over the weekend is required. One of those devices is an XServe RAID. When it comes back up one side always fails with the message "LUN map requires repair". Additionally, the same controller that exhibits this issue is also unable to accept time updates, and displays an extremely odd date (e.g. 1/30/16). I have attempted re-seating the controller (nothing) and swapping controllers (the problem followed). Anyone have any ideas?
It's an XServe RAID running firmware 1.5.1/1.5.1c
Thanks.
Mac OS X (10.3.9) XServe RAID firmware 1.5.1/1.5.1cWhat's your "shut down" process? Are you turning off all attached computers, or at least unmounting the RAID volumes, and the shutting down the RAID using the RAID Admin tool?
Does the power get physically cut during this down time?
Why is shutting down necessary? And any chance of getting an exception?
=Tod
Maybe you are looking for
-
How to tell Windows to open photos in Lightroom?
I have Lightroom and Elements 12 on my computer (Windows Vista Home Premium). The computer automatically opens every photo in Elements 12. However, I want to open my photos in Lightroom. How can I change this setting? Thank you. June E.
-
Working with badge.swf and air.swf (browser api)
I basically want to install and run my app through the browser so ive been testing but can't manage to figure out how the air.swf api works. i am stuck at loading air.swf. the page below has a tutorial but a downloadable sample code would be perfect,
-
Hi Experts, When employee will apply a leave through standard ess/mss package that time in SAP backend i want to store the information in custom table with PERNR BEGDA ENDDA. How i can achive
-
Missing subVI NI_AALBase.lvlib:Mean.vi
This is a duplicate post, but the other was a response to a 4 year old posting. I have an application that was originally written in LV 8.x that I have just modified with LV2009. I am now getting the same error reported in this thread, that being "
-
Escape character while doing export and import
Hi, I am doing a typical exp and imp. Works fine except one table which has rows which has sql in it like SELECT NAME FROM EMPLOYEE E WHERE E.NAME=DEPARTMENT.NAME, SELECT CITY FROM EMPLOYEE E WHERE E.CITY=?. I am not able to import the second row but