Mapping Problem in IDOC to XML scenario
hi,
In the target i have a tag which says:
Extrinsic 0..unbounded
name required
I have to map the above target to a source which comes from different IDOC segments.
E.g.
if E1EDP17.Qualf = '002' then map the E1EDP17.lktext to the "name"
if E1EDP17.Qualf = '001' then map the E1EDP17.lktext to the Extrinisc.
If data resides in other segments, how would i map those segments to the same output in xml.
Example:
<Extrinsic name="a">test</Extrinsic> -> this comes from E1EDP17 segment
<Extrinsic name="a">test</Extrinsic> -> comes from segment A
<Extrinsic name="a">test</Extrinsic> -> comes from segment B
How can i use a single Target to map from different sources if they are in different segments?
Any tips?
Thanks,
KP
Message was edited by: Tirumal Kumar Pappu
Tirumal,
U will have to use comination of node functions like <b>exists</b> and <b>mapWithDefault</b>.
Are you sure that, E1EDP17.Qualf will have the value '002' or '001'.
There are some very good blogs on mapping by Sravya. Go through them and also go through the following link.
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm">sap help for Mapping</a>
Please reward if helpful
Similar Messages
-
Mapping issue in idoc to JDBC scenario
mapping issue in idoc to JDBC scenario
source structure
E1KNB1M
BUKRS = 1000
E1KNB1M
BUKRS= 9000
E1KNB1M
BUKRS= 2000
THE NODE E1KNB1M is repeated many times and the field BUKRS is also repeated with E1KNB1M as above
TARGET field : ISFRANCHISE
if any where value of BUKRS =9000 we have to pass Y to the target filed, else N
if BUKRS = 9000 THEN ISFRANCHISE= Y
ELSE
ISFRANCHISE=N
I've done the mapping as below
BUKRS = 9000--> IF THEN Y ELSE N--
> ISFRANCHISE
BUT everry time the target value is N only
pl suggest
rgds
mojibmapped like this
BUKRS--->SORT---->
EQUALS --------IF---THEN Y
9000------------------------> ----------------->ISFRANCHISE
ELSE N
context of BUKRS set to parent node
its worked
thanks to all for valuable suggestions
rgds
mojib -
Regarding receiver determination problem in IDOC-XI-XML file scenario
Dear All ,
In IDOC-XI-xml file scenario , I have configured SLD , IR . But in ID , after file adapter , reciever agreement configuration when I am doing receiver determination configuration I am not able to insert mapping program in configuration overview of receiver determination as I am not getting "New Specific" option in mapping .
Can anybody suggest what could be the reason behind this .
Thanks in Advance
PrabhatHi PRabhat,
In RCVR determination, you need to select the party & service (as appropriate) save the obeject
then refresh the configuration overview of recr det.
then you can see the partner/service
then you can open it & add the necessary objects.
Regards
Vishnu -
hello all,
my scenario is idoc to xml file
E1EDKT1-------segment (1:n)
-TDID----
ele
-E1EDKT2----segment (1:n)
-TDLINE-----ele
When TDID value is X then all values in TDLINE of undeline sement E1EDKT2 needs to be cocatenated and passed to target elemnt A
if TDID value is Y then all values in TDLINE of undeline sement E1EDKT2 needs to be cocatenated and passed to target elemnt B
i have written java function(for all values in context) to conctenate TDLINE elements.
also the context of TDLINE is changed to E1EDKT1.
i am getting all the concatenaed values of TDLINE for TDID=X in target element A but i am not geting any value in target element B for TDID=Y
can any one suggest what could be the problem.
Regards,
SandipHi Sandip,
Map like this for target element A:
use simple if stament. and for If give TDID equals(text function) to constant X
and for then TDLINE-->concattdline(udf) --> output A
Map like this for target element B:
use simple if stament. and for If give TDID equals(text function) to constant Y
and for then TDLINE-->concattdline(udf) --> output B
concattdline udf:
Create a Context udf with one argument a and name it as concattdline.
Imports: java.*;
Add this code:
//write your code here
String value = "";
for(int j=0; j<a.length - 1; j++){
value += a[j] + "";
value += a[a.length - 1];
result.addValue(value);
I just tested this and it should work for you.
Regards,
---Satish -
FIle Content Conversion Problem in IDOC-XI-File Scenario
Dear All,
I am doing IDOC-XI-FILE scenario.
I am facing one problem related to File Content Coversion.My requirement was to generate a dynamic file like <b>%store_code%_%current_date%_sitemaster.xml</b> , I have completed the dynamic generation successfully .
Now there is slight change in the requirement ,<b>we have to suppress the current_date node of the xml content</b> . i have tried to suppress the current_date using these <b>DATE.fieldFixedLengths 0 , Date.fixedLengthTooShortHandling Cut</b> , But I am unable to suppress it Can some body provide me the details on this .
The output xml version generated by Reciever file adapter is as below :
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_SITE_MASTER xmlns:ns0="http://sample-xitest.com/sitemaster">
- <SITE_DATA>
<STORE_CODE>N002</STORE_CODE>
<TITLE_MEDI>Company</TITLE_MEDI>
<STORE_NAME>Mount Road</STORE_NAME>
<STREET>Chennai</STREET>
<COUNTRY>IN</COUNTRY>
<SALES_TAX_NO>12345678910</SALES_TAX_NO>
</SITE_DATA>
</ns0:MT_SITE_MASTER>
Plz provide me the code I have to write in the file content conversion .
Thanks in advance
Regards
PrabhatIf u see my earlier reply, I mentioned that u can not suppress the field from the one node.i.e Form SITE_DATA data type u can not suppress the field called CURRENT_DATE.
My suggestion is that , modify the Data type in such a way that you will be having two nodes as I have mentioned earlier. Then use the Suppress Logic for the Current Date.
So it will look like this-
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_SITE_MASTER xmlns:ns0="http://sample-xitest.com/sitemaster">
- <SITE_DATA>
<STORE_CODE>N002</STORE_CODE>
<TITLE_MEDI>Company</TITLE_MEDI>
<STORE_NAME>Mount Road</STORE_NAME>
<STREET>Chennai</STREET>
<COUNTRY>IN</COUNTRY>
<SALES_TAX_NO>12345678910</SALES_TAX_NO>
</SITE_DATA>
<CURR_DATE>
<CURRENT_DATE>20051105</CURRENT_DATE>
</CURR_DATE>
</ns0:MT_SITE_MASTER>
So ur SITE_DATA is not having a field called CURRENT_DATE. This field is in separate node (segment ) called CURR_DATE. Now u can use the Suppress Logic for the same like this.
CURR_DATE.fieldFixedLengths - 0
CURR_DATE.fixedLengthTooShortHanling - Cut
And in your Variable Substitution you can use the date from the other segment called CURR_DATE.
Hope this solves ur problem.
Regards,
Moorthy -
Problem in idoc to file scenario
hi
while creating the idoc to file scenario i am facing few problems.
1) My design time objects are working fine. i have checked my message mapping, message interface etc.. (all design time objects are in active mode).
2) In ID, i have tested my configuration in test configuration, its working fine there as well (in ID i am using 2 business service one for sender, one for receiver)
3) i am using my ecc6 training server as my sender and using my XI server as receiver.
4) i am sending idoc from ecc6 and converting it to file in XI server and saving it in XI server itself(my receiver in this case).
my error:
i send my idoc from we19 transaction, and i see a error message stating
that 'RCVR_DETERMINATION.NO_RECEIVER_CASE_ASYNC'
my doubts.
1) while sending the idoc from ecc6, is it mandatory to give process code in partner profile ( that is, assign an outbound function module to push the created idoc to the mentioned destination).
2) also is it mandatory to have a partner profile on the receiver side( XI in this case) along with inbound process code.
3) in my receiver adapter ( file adatper in this case ) i have used NFS protocal. is it rite?
kindly help me with this issue.
regards
manoharan>
manoj murugesan wrote:
> 1) while sending the idoc from ecc6, is it mandatory to give process code in partner profile ( that is, assign an outbound function module to push the created idoc to the mentioned destination).
>
> 2) also is it mandatory to have a partner profile on the receiver side( XI in this case) along with inbound process code.
>
> 3) in my receiver adapter ( file adatper in this case ) i have used NFS protocal. is it rite?
>
>
> kindly help me with this issue.
>
>
> regards
> manoharan
and to 1 & 2 ref. below,
Configuration steps required for posting idoc's(XI) -
/people/ravikumar.allampallam/blog/2005/02/23/configuration-steps-required-for-posting-idocsxi
ALE configuration for pushing idocs from SAP to XI -
/people/swaroopa.vishwanath/blog/2007/01/22/ale-configuration-for-pushing-idocs-from-sap-to-xi
3. NFS protocol is used to read/write files to the XI server itself. If you have to write to a local machine then use FTP -
Context handling in message mapping for an IDoc to File Scenario
Hi,
Can somebody help me with this issue. I have an Idoc to file scenario. heres my idoc structure. Its a custom Idoc
Header (1..1)
Detail (0..Unbounded)
DependentDetail (0...Unbounded) Note: This dependentdetail is a subelement of Detail
Trailer(1...1)
I created my target structrure the same way as the Idoc structure.
My output is a simple text file. I need the output in this format
Header
Detail1
Dependentdetail1
DependentDetail2
DependentDetail3
Detail2
DependentDetail1
Dependentdetail2
Detail3
Detail4
Trailer
Since the Detail and Dependent Detail records are unbounded .
But right now i m getting my output like this:
Header
Detail1
Detail2
Detail3
Detail4
Trailer
But the DependentDetail record in not showing up in the output file. I didnot do any context change in my mapping. So do I need to do any context handling??...If so can somebody explain me with this.
Thanks,
Adam
Edited by: hymanroth on Apr 29, 2011 11:11 PMThanks Kenneth foryour quick reply,
Yes, I see the payload for Dependent detail in SXMB_MONI. So as you said earlier there's a problem with my content conversion.
my content conversion is as follows:
Header.fieldNames
Header.fieldFixedLengths
Header.endSeparator
Detail.fieldNames
Detail.fieldFixedLengths
Detail.endSeparator
DependentDetail.fieldNames
DependentDetail.fieldFixedLengths
DependentDetail.endSeparator
Trailer.fieldNames
Trailer.fieldFixedLengths
Trailer.endSeparator
So As I told earlier. With the above content conversion. I am not able to get the Dependent detail record in my output file. So If there is a change in my content conversion can u check it and tell me where I went wrong.
Thanks,
Harsh
Edited by: hymanroth on May 2, 2011 7:03 PM -
Message mapping challenge in IDOC to EDI scenario
Dear PI message mapping experts,
I'm a newbie in PI and facing a mapping problem using graphical message mapping.
I'm in an IDOC (INVOIC.INVOICE02) to FILE (EDI) scenario.
Here after is the mapping i need to perform :
Source structure IDOC :
<E1EDKA1> (0..99)
<NAME1> A </NAME1> (0..1)
<NAME2> B </NAME2> (0..1)
<NAME3> C </NAME3> (0..1)
<NAME4> D </NAME4> (0..1)
</E1EDKA1>
Target structure :
<AccountingCustomerParty> (1..1)
<Party> (0..1)
<PartyName> (0..unbounded)
<Name>A</Name> (1..1)
</PartyName>
<PartyName>
<Name>B</Name>
</PartyName>
<PartyName>
<Name>C</Name>
</PartyName>
<PartyName>
<Name>D</Name>
</PartyName>
</Party>
</AccountingCustomerParty>
I know i have to play with context and queues with stanard function or UDF but cannot succeed to do it.
Could you please help me ?
Thanks in advance,
AlyseeOne approach out of available few ways to implement this:
NAME1 - Exists - CreateIf - PartyName[0]
NAME2 - Exists - CreateIf - PartyName[1] (Create deuplicate segment)
NAME3 - Exists - CreateIf - PartyName[2] (Create deuplicate segment)
NAME4 - Exists - CreateIf - PartyName[3] (Create deuplicate segment)
Srikanth Srinivasan -
Hi all,
In my scenario I need to map fields of IDOC XML to a v complex and generic Enevelope ( XML ) <b>As well as send the entire IDOC XML as a string to one of the fields of the target Envelope XML</b> </b> Now wht is the best approach for mapping :
Java / XSLT ?
Is there any better simpler method to achieve this requiremnet ?
Thanks and Regards,
KLKAttached is the code in Java Mapping
private InputStream payload ;
/* (non-Javadoc)
@see com.sap.aii.mapping.api.StreamTransformation#setParameter(java.util.Map)
public void setParameter(Map arg0) {
this.param = arg0;
if (param == null) {
this.param = new HashMap();
/* (non-Javadoc)
@see com.sap.aii.mapping.api.StreamTransformation#execute(java.io.InputStream, java.io.OutputStream)
public void execute(InputStream arg0, OutputStream arg1)
throws StreamTransformationException {
DefaultHandler handler = this;
try {
payload = arg0;
BufferedReader inp = new BufferedReader(new InputStreamReader(payload));
StringBuffer buffer = new StringBuffer();
String line="";
while ((line = inp.readLine()) != null) {
buffer.append(line);
source=buffer.toString();
if(source != null)
param.put("key1",source);
else
param.put("key1","Its Empty");
catch (Exception e){
e.printStackTrace(); -
Mapping Problem ORDERS Idoc to Edifact
Hi,
I have a mapping problem with the IDOC ORDERS:
I get the IDOC with several E1EDP01. Each E1EDP01 has several E1EDPT1, where i want only the first one (which I get over the TDID value). Each E1EDPT1 has min. 1 E1EDPT2.
Now I have to map each field TDLINE from first two E1EDPT2 of the first E1EDPT1 to the Edifact fields /LIST/S_UNB/S_UNH/G_SSG25/S_LIN/S_IMD[1]/C_C273/D_7008 (from the first E1EDPT2) and, if a second E1EDPT2 exists in /LIST/S_UNB/S_UNH/G_SSG25/S_LIN/S_IMD[1]/C_C273/D_7008_2.
I use following UDF:
//a = TDLINE
//b = Number of entry in the List
int pos =Integer.parseInt(b[0]);
if ( pos < a.length )
result.addValue(a[pos]);
else
result.addValue(ResultList.SUPPRESS);
Unfortunatly, I think becaus of the context problems (not every E1EDPT1 has two E1EDPT2), it's not working. Could somebody help me with this problem?
Thanks in advance
DominicDear Dominic ,
I had same problem when I was trying to do the same thing for FTX segment.
Your UDF is fine but you don't need else condition.
//a = TDLINE
//b = Number of entry in the List
int pos =Integer.parseInt(b[0]);
if ( pos < a.length )
result.addValue(a[pos]);
for C_C273 assigned contant value and
D_7008 assigned TDLINE but change the context to E1EDPT1
and for D_7008_2
TDLINE(context to E1EDPT1 )
====>UDF====>D_7008_2
Contant(=1)
It should work becasue my map is working fine. If not let me know error message.
Thanks
Shubhankar -
IDOC-XI-XML Scenario Questions
Hi everyone,
I am actually trying to configure a scenario starting from SAP and finishing creating a XML file.
R/3 IDOC -> XI -> XML file
The XI is receiving IDOCs from SAP correctly, but when it try to send to third party system, the monitor engine (SXMB_MONI) are showing the following error: HTTP_RESP_STATUS_CODE_NOT_OK.
I am currently using the File Adapter, please take a look at the config for the communication channel:
Adapter Type: File
http://sap.com/xi/XI/System
SAP BASIS 6.4
Transport Protocol: File Protocol(FTP)
Message Protocol: File
Adapter Engine: Integration Server
Target Directory: / (root)
File Name Scheme: mptest_xi_output.dat
File Construction: Create
Overwrite File: X
File type: Binary
Adapter Status: Active
Regards,
Gabriel SantanaIf you have enough authorization, then click on the last button which is change button.
Otherwise, open two windows of SAP and try to do the above step and when you get the authorization error, go to the second window and enter transaction /nSU53. Send that info to your security team.
Once you have authorization you should be fine.
One other thing, in which client you are doing this ?
Do not use DDIC user to change it.
regards
Shravan -
Problem in IDOC to SOAP Scenario
Hi All,
we have an IDOC to SOAP scenario in which we have got WSDL from the client for the targets.. Please let us know the WSDL would be the message type and we need to create interface for it . Also the SOAP header is not appearing in the target xml.
ThanksHi ,
This means when the data is sent to the webservice it will contain the SOAP header just that we cannot see it in Moni . Also
What about the acknowledgement . Our message is successfull but with message that awaiting acknowledgement.
What we basically need a synchronous scenario of IDOC to SOAP but the response not going back to SAP-R3 . We recieve the response only in SAP-PI. Saw some blogs but the message is going back to SAP-R3. Please help us on this
Thanks
Edited by: vishal gadkari on Aug 22, 2009 4:15 PM -
Problem with IDOC TO FILE Scenario
Hi Experts,
I am doing IDOC TO FILE Scenario.
I have done all the configuration.I have cretaed RFC,PORT,LS and Partner profile at both R/3 and
XI Side.
when I am trying to generate IDOC using we19 and I put the r/3 port,partner in sender and XI
port and partner in receiver it gives me error as "Port 'SAPCU6_100' does not exist in the table
of port descriptions.
Please help me.....
RegardsHI Saras,
Please go through the below weblog which has all the stpes which is required for ur scenario...I think screen by screen help u to debug ur problem and it will help u to find out the msitake which u have made.
File To IDOC - Part1 (SLD and Design):
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/profile/2007/05/11/fileToIDOC&
File To IDOC - Part2 (Configuration):
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/profile/2007/05/11/fileToIDOC-Part2+(Configuration)&
File To IDOC - Part3 (Steps required in XI and R3):
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/profile/2007/05/11/fileToIDOC-Part3(StepsrequiredinXIandR3)&
Thnx
Chirag -
Problem in Idoc to JDBC scenario(uses BPM)
Hi
I have a IDoc to JDBC scenario which also uses BPM.
The JDBC adapter has to execute a Stored procedure on Sybase database.
I work on XI3.0 SP14.
When I am sending IDoc to XI it is failing in CALL adapter step.
The error message is "Unable to convert sender service TruckLiftAccountUpdate to an ALE logical system".
However this scenario is working in Production with same settings.But it is not working in Quality and it is giving the above error.
Can any one help me in this.
Thanks in advance.
KPThanks for your quick reply..
All the settings are in place.
Here the Idoc is coming to BPM and BPM cant able to execute the stored procedure.and we are getting the error from BPM to target system.
Here error is unable to convert the sender service(from BPM service) to ALE
logical system.
same settings are there in Production but it is not working in QA.
Thanks in adavnce,
KP -
Message mapping issue in idoc to jdbc scenario
We have a scenario of idoc->XI-JDBC
the below given segment may get repeated , as shown below ,
E1EDP19[2]--idoc segment
QUALF---003
IDTNR---01000123(Bar Code No)
E1EDP19[3]--idoc segment
QUALF---003
IDTNR---20500000000034(EAN No)
Reqd mapping
if QUALF=003
THEN IDTNR----->Bar_code_Number_EAN
Now IDTNR has to be mapped with Bar_code_Number_EAN for the segment which comes last
Pl suggest how to map using graphical mapping for the above scenario.Hi Raj ,
The current mapping works fine if the parent segment E1EDP01 is only one but if that gets repeated then the last value of IDTNR is getting populated in the target side, very clearly i m giving the source and target structure and the mapping done using the UDF
Source structure
E1EDP01
E1EDP19[1]--idoc segment
QUALF---002
IDTNR---01000123(Bar Code No)
E1EDP19[2]--idoc segment
QUALF---003
IDTNR---01000123(Bar Code No)
E1EDP19[3]--idoc segment
QUALF---003
IDTNR---20500000000030(EAN No)
E1EDP01
E1EDP19[1]--idoc segment
QUALF---002
IDTNR---01000123(Bar Code No)
E1EDP19[2]--idoc segment
QUALF---003
IDTNR---01000123(Bar Code No)
E1EDP19[3]--idoc segment
QUALF---003
IDTNR---20500000000031(EAN No)
E1EDP01
E1EDP19[1]--idoc segment
QUALF---002
IDTNR---01000123(Bar Code No)
E1EDP19[2]--idoc segment
QUALF---003
IDTNR---01000123(Bar Code No)
E1EDP19[3]--idoc segment
QUALF---003
IDTNR---20500000000032(EAN No)
Target mapping
if QUALF=002
THEN IDTNR--->Article_No this is the direct mapping so , no issues
if QUALF=003
THEN IDTNR----->Bar_code_Number_EAN, now this IDTNR should get repeated every time the segment E1EDP01 gets repeated , currently only the last value form all the IDTNR is coming to the target side.
The current mapping works fine if the parent segment E1EDP01 is only one
Target structure
Access1
IDTNR--> Bar_code_Number_EAN( value is 20500000000030)
Access2
IDTNR--> Bar_code_Number_EAN( value is 20500000000031)
Access3
IDTNR--> Bar_code_Number_EAN( value is 20500000000032)
Current mapping
If QUALF = 003
Then QUALF ---->
mapBarCodeEAN---->Bar_code_Num_EAN
If QUALF = 003
Then IDTNR ---->
Context of QUALF is set to E1EDP01
Context of IDTNR is set to E1EDP01
thanks for your personalised help
rgds
mojib
Edited by: mohammad mojib ur rahman on Apr 9, 2010 1:30 PM
Maybe you are looking for
-
Bridge not supported for 4K displays
Fortunately Adobe upgrade the main players such as Photoshop, Illustrator and InDesign to support 4K displays like mine. But unfortunately, Bridge (and the Creative Cloud app itself!) are not, making it literally impossible to use, as everything is e
-
I'm about to order a Blu-Ray internal burner for my Mac tower. I heard a rumour that Apple is not necessarily friendly to Blu-Ray. Maybe I've heard wrong. What app would you recommend for creating Blu-Ray disks? What is the official Blu-Ray codec, an
-
Getting star(*) as the value of the column
Dear All, i have created a report on the cube which will display the country wise Expected sales Volume and Weighted sales volume. for all country i am getting the correct value but for the country which are NOT ASSIGNED i am getting Star(*) as the v
-
Using FCE HD with a 200 gb HDD 4200-rpm drives
I am thinking of getting a 15 inch mac bok pro with the 200 gb hard drive Is the disc speed of 4200 fast enough to run Final Cut Express HD? I will get 3 gb of RAM as well with the system. Thanks Jerry
-
Restrict AFP to use a certain network service?
I'm working with a client who has two new (Early 2008) Mac Pro systems, and we'd like to set it up so that internet is accessed over one slower connection (100Base-T), and really large video files are shared via another connection, like Gigabit Ether