IDOC value with Mapping
Hi,
i have a segment that will hold n number of occurences. Ex: E1BPE1MARAEXTRT. Field name called field1.
i need to pass the occurence value to target field and the same value should not repeat in target .
Ex:
field1 value 1000------target- Outputfield-1000
field1 value 1000-----target - i should not send.
field1 value 1001-----target - i should send to target field.
i have an idea how to find the second occurences. i don't know how to check the value which i receive from idoc and the prior idoc value.
Please Suggest..
create advanced user defined function with 1 parameter and cache entire queue option ticked in the mapping editor and map as follows.
field1-advanced user function-target output field.
result.addvalue(a[0)).
This should solve ur problem and make the occurence of ur output field to 1.
Similar Messages
-
How to map IDoc segment with qualifiers
Hi everyone!
I have the following problem: In an IDoc of type DESADV01 there can be several segments of type E2EDS01. Each segment has a different qualifier, which is the value of the field SUMID in this case. My target structure (type EDIFACT) now has several segments, each again with a sort of qualifier. Now I have to map the values of certain source segments to the respective target segments.
Exaple (in XML format):
Source
<E1EDS01 SEGMENT="1">
<SUMID>021</SUMID>
<SUMME>0000000001.000</SUMME>
<SUNIT>KGM</SUNIT>
</E1EDS01>
<E1EDS01 SEGMENT="1">
<SUMID>022</SUMID>
<SUMME>0000000001.000</SUMME>
<SUNIT>KGM</SUNIT>
</E1EDS01>
Target
<S_MEA>
<C_C502>
<D_6313>N</D_6313>
</C_C502>
<C_C174>
<D_6411>KGM</D_6411>
<D_6314>1</D_6314>
</C_C174>
</S_MEA>
<S_MEA>
<C_C502>
<D_6313>G</D_6313>
</C_C502>
<C_C174>
<D_6411>KGM</D_6411>
<D_6314>1</D_6314>
</C_C174>
</S_MEA>
(i have omitted several details here, but I'm only interested in the general procedure anyway).
So in general the source segment with qualifier "021" should be mapped to a target structure with qualifier "N" etc.
How can this be done using standard XI mapping techniques?
Regards, JoergHi everyone!
Thanks for your input data - unfortunately this wasn't quite what I was looking for. However I thik I solved my original problem and I just wanted to share this solution with you - maybe it helps others, maybe some of you have suggestions what I could do differently.
To sum up the requirement: There can be multiple input segments, each with a certain qualifier. These input segments have to be mapped to the target segments, respectively - however, the qualifiers change. There can be several segments with qualifiers that do not match the requirement, and required segments might be missing.
So here's what I came up with:
Use the qualifier of the source segments as an input to a <b>FixValues</b> function. In this function, map the desired qualifiers to the value <b>true</b>, use <b>false</b> as the default value. Map the output of the <b>FixValues</b> function to a <b>createIf</b> function and use this to create the desired output segment. This way, for each of the required segments, one target segment will be created. All other segments (with unwanted qualifiers) will be removed.
So far, this technique worked for me - do you have improvements/suggestions?
Regards, Joerg -
How to map Idoc fields with external file
Hi All,
How to map Idoc fields with external file.
I want to check the settings where Idoc fields are mapped with external file.
Thanks in advance.
Regards,
Govind.If you have configured a fileport where on trigger of IDOC you are creating the file, you can look at the message type documentation and get the offset values for each field in each segment
-
I have SSRS parametarized report in that one data set have repeated values with query parameter . but while am mapping that query
parameter to report parameter i need to pass distinct values. How can i resolve thisHi nancharaiah,
If I understand correctly, you want to pass distinct values to report parameter. In Reporting Service, there are only three methods for parameter's Available Values:
None
Specify values
Get values from a query
If we utilize the third option that get values from a dataset query, then the all available values are from the returns of the dataset. So if we want to pass distinct values from a dataset, we need to make the dataset returns distinct values. The following
sample is for your reference:
Select distinct field_name from table_name
If you have any other questions, please feel free to ask.
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
File to multiple IDOCs scenario with the same receiver system
Hi guys,
I have to design and implement the following scenario:
I will receive one file with many lines (Records) with data for materials, quantities, operations etc..
Based on the values of some fields of each line, I will have to create an IDOC for each material.
For example:
if operation type = "INSERT", and Labor = 001 then create 3 Idocs of type MBGMCR with movement types=101, 261,311 that have to be posted one after the other to the same receiver system.
else if operation type = "INSERT", and Labor <> 001 then create an Idoc MBGMCR with movement type=311 and plant = 1001.
else if operation type = "Delete", and Labor = 001 the created 3 Idocs MBGMCR with movement type=312, 262 1002 and post them serially to the same receiver system.
else if operation type = "Delete", and Labor <> 001 the created 1 Idoc MBGMCR with movement type=312.
All IDOCS are posted to the same SAP R/3 system. We do not care about the sequence, except for the cases where 3 IDOCS are created.
I am trying to think of a good design in performance terms.
It is obvious that I will need BPM for sure.
I am thinking of creating a mapping program that will produce 4 message types for the different cases from the initial file and then create a different message mapping for each case from the message type to the IDOC.
I am asking you if I have to include everything (mappings) in BPM with a "fork" step?
Or shall I produce only the 4 message types and then post them to R/3 and execute the mappings in R/3?
Best Regards
Evaggeloshi,
>>I am thinking of creating a mapping program that will produce 4 message types for the different cases from the initial file and then create a different message mapping for each case from the message type to the IDOC.
To me this seems to be the right solution.
here u will create different message mappings and write them sequentially in interface determination. the multi mapping will then be utilised in transformation step in BPM.
thus if this is the only requirement there is no need of using a fork step.
[reward if helpful]
regards,
latika. -
Problems with mapping after bundling messages into one XML-file
Hi all,
Case 1: one DebMas IDoc ==> XI ==> one XML-file : no problems with mapping.
Case 2: several DebMas IDoc's ==> XI ==> one XML-file : problems with mapping.
Explanation:
Incoming DebMas IDoc's:
Businesspartner 1 : no Customer Master Partner Functions (E1KNVPM).
Businesspartner 2 : Customer Master Partner Functions (E1KNVPM).
Businesspartner 3 : Customer Master Partner Functions (E1KNVPM).
Businesspartner 4 : Customer Master Partner Functions (E1KNVPM).
After bundling into one XML-file:
Businesspartner 1 : no Customer Master Partner Functions (E1KNVPM).
Businesspartner 2 : no Customer Master Partner Functions (E1KNVPM) !!!!
Businesspartner 3 : Customer Master Partner Functions of Bp 2 (E1KNVPM) !!!!.
Businesspartner 4 : Customer Master Partner Functions of Bp 3 (E1KNVPM) !!!!.
All the payloads of the IDoc's are correct.
In the message mapping we use a Container for the Partner Functions (shown as below)
Is this a serious bug in the mapping of SAP XI ?
Does anyone knows how to solve this serious problem.
E1KNVVM -
> Partner_Container
E1KNVPM -
> Partner
PARVW -
> ParnerRole
KUNN2 -
> PartnerNumber
Regards,
Theo PijlmanHi,
Example:
Input idoc has field F1 with occurence 0..unbnd
My input values for field F1 is
1
none
2
3
Say, I have a mapping, F1---->TargetF1
In the target only 3 TargetF1s will be created for the values 1,2,3 and nothing will be created for the field F1 with no value.
To overcome this, use collapse contexts.
F1->collapsecontexts>TargetF1
This way, the TargetF1 fields created will have the following values:
1
blank
2
3
Collapse contexts makes sure that a target is created, even if there is a context change specified at the source.
Hope this is clear.
Regards,
Smitha. -
Difference in idoc adapter header mapping between SP14 and SP19
Hi All,
i have a very strange problem.......i have 2 XI systems : XI-sandbox and XI-dev.....
XI-sandbox is on XI3.0 SP19 whereas XI-dev is on XI3.0 SP14...........
I have a file->XI->idoc scenario which is same on both XI-sandbox and XI-dev....
in receiver idoc adapter, i am using header mapping for sender service and in the sender service i am using XPATH of a field of control rec of idoc.........
this scenario works fine on XI-sandbox which is on SP19 and the idocs are sent to SAP R/3 sandbox...........but this scenario on XI-dev gives error in SXMB_MONI in XI-dev of Call adapter - "No party conversion found".........
So my question is that is there any difference in idoc adapter header mapping between SP14 and SP19.........
Thanks,
Rajeev Gupta
Message was edited by:
RAJEEV GUPTA><i>so i cant use apply control rec values from payload.........</i>
rajeev,
I know this has nothing to do with the original problem but please do bear.
If I undertood you posts correct, the Sender Partner Name is set in the Idoc Control record in the field SNDPRN in the mapping using some mapping logic.
Now, this is the partner name with which the idoc is to be posted to thge R3 system.
if yes, then like I have pointed above, using "Take Sender From Payload" in the Receivcer Idoc Adapter is a better option as pointed in the SAP help as well.
As you are already populating the idoc control ecord with SNDPRN just make the SNDPRT as LS and then select "Take Sender from Payload" in the receiver Idoc adapter and the Sender Partner Name will not be taken from SDNPRN just as you want.
This is different from "Apply Control Records From Payload" .
Regards
Bhavesh
PS : you can ignore this reply if the situatios is too late to make this change and thanks for the patience. -
Hi,
I am doing a flat file to idoc scenario from ftp server to SAP and in mapping I had disabled EDI_DC40 mapping and it is populated all the fields correctly except the sender partner no. field. It is populating the value as XXXFTPDEV whereas I need the logical system name of XI system to be populated. Do I have to enable EDI_DC40 mapping and map just the sender partner field with my value or in that case case I will have to map other control fields also. Is there any other way by which I can overwrite just the sender partner no. field value?
Thanks,
JassiIt seems SNDPRN is not populated from the values in mapping but it takes default values from IDOC adapter. I have tested this and it is mentioned in this blog also.
/people/michal.krawczyk2/blog/2005/09/01/xi-idoc-adapter--edidc40--demystified
Is there any other way to populate sender partner no. field other than changing the logical system name in SLD?
Thanks,
Jassi -
If a class method exporting a value with the generic type 'data'.
Then how can I get the information?
For exmple.
cl_my_clss->get_value( exporting ev_data = .... ) .
ev_data is a type of data.
I can not use DATA : lv_mine type data. because generic data should be used in formal parameter, however , if I use a field symbol, how to assign value with out knowing the data type?
Best regards,Hi Blake,
As per my understanding,
You are getting the data type from the database table....
You want to use the same data type....
Lets say for example:
You have a db table x with field y having data type Z.
What you do is that, while declaring the data type for the attribute in the method use the reference as table_name-field_name(x-y).
Or....
use ANY. This will give you a chance to map any field type to this method....
Note: Using ANY will limit the syntax that you can use within the method......
Regards,
Kunjal -
IDoc failed with the error massaeg "Instance of object type could not be ch
Hi All
I am getting IDoc failed with the error massaeg "Instance of object type could not be changed"
Message type :PORDCR
Basic type : PORDCR05
Message no. BAPI003
Status : 51
All POs are get uploaded in SAP during Cut over activities only.
Please suggest on this.It will be a great help.
Thanks
AjitHi
After uploading POs into SAP we are changing quantity and value in PO in Legacy system, and for this all IDocs are failed, subsequently these changes are not triggering to ECC.
Please help
Thanks
Ajit -
JDBC to IDoc ( error when mapping multiple JDBC records to IDoc)
Hi,
I am working on JDBC to IDoc scenario, I have declared row as 0 to unbounded and by default the IDoc structure is 1..1.
Inorder to map multiple rows from JDBC to get multiple IDoc's, I have changed the occurrence of IDoc in "Messages" tab of Message mapping to 0 to unbounded.
I have mapped "row" to "IDoc".
When I test the mapping, it works fine, giving the same number of IDoc's with that of row.
When I test end to end, in SXMB_MONI, it gives me following error:
<SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_RUNTIME</SAP:Code>
<SAP:P1>MSGGUID 54A3A64E895D48EC3F20C69FEFE2E82B: Tag found instead of tag IDOC BEGIN=</SAP:P1>
can any one help me out with this.
Thanks in advance.Hi Jwalith,
Check this blog from Michel
The specified item was not found.
Make sure that you changed occurance as per this blog.
hope this is helpful
regards,
Venkat. -
Hi Everyone,
I have a problem with mapping. My Scneario is Idoc to RFC.
Eg. Sender: GSVERF03
->IDOC
E1EDP01 (Occ. 0 to n)
...Field_A
...Field_B
...E1EDP02 (Occ 0 to 25)
...... Field_C
...... Field_D
...... Field_E
Receiver: ZRFC
->T_DELVRY
... ->item
........ Field_1
........ Field_2
........ Field_3
Conditions:
If Field_A = 001, then Field_B = Field_3.
If Field_A = 001,
then
If Field_C = 001, then Field_D = Field_1.
If Field_C = 001, then Field_E = Field_2.
As per my business requirement, i wont get more than one E1EDP02 segment.
How to do this mapping using Graphical mapping.
Rgds,
¬NavField_3
+If Field_A = 001, then Field_B = Field_3
>
This can be achieved by IfWithoutElse
Check your condition using If and give Field_B as second parameter
Field_1
If Field_A = 001,
then
If Field_C = 001, then Field_D = Field_1.
If Field_C = 001, then Field_E = Field_2.
>
here check Field_A condition , 2nd input of this IfWithoutElse check for conditions on FIeld_C
Similar would be for Field_2
You will have to check with context. try by setting context of Field_C,Field_D,Field_E to
E1EDP01 -
Idoc to idoc scenario with idoc tunneling
IN idoc to idoc scenario with idoc tunneling the XML_CONVERSION parameter to value 2 is set whish means An IDoc is converted to IDoc-XML if requested by the service
I want to know where we specify this and how we specify?1. /people/michal.krawczyk2/blog/2005/11/21/xi-idoc-to-idoc-tunneling--how-fast-and-easy-can-you-get
2. /people/alessandro.guarneri/blog/2006/03/05/managing-bulky-flat-messages-with-sap-xi-tunneling-once-again--updated
ref these weblogs.
It is given under;
<i>TCODE - SXMB_ADM
- Integration Engine configuration
- set the XML_CONVERSION parameter to value 2</i> -
Exception setting property value with CGLIB ( in hibernate)
My hbm.xml file is:
<hibernate-mapping>
<class name="com.dst.fourx.model.codeModel.CodeGroupDisplay" table="CODE_GROUP_DISPAY1">
<composite-id name="codeGroupDisplayKey" class="com.dst.fourx.model.codeModel.CodeGroupDisplayKey">
<key-property name="nlsLanguage" type="java.lang.String" column="LANG_CD" />
<key-many-to-one name="codeGroupCode" class="com.dst.fourx.model.codeModel.CodesGroup" column="CD_GRP_CD" />
</composite-id>
<property name="createDate" column="CREATE_DT" type="java.util.Date" not-null="true"/>
<property name="createUserCode" column="CREATE_USER_CD" type="java.lang.String" not-null="true"/>
<property name="updateDate" column="LAST_MOD_DT" type="java.util.Date"/>
<property name="updateUserCode" column="LAST_MOD_USER_CD" type="java.lang.String"/>
<property name="displayText" column="DISPLAY_TXT" type="java.lang.String" not-null="true"/>
</class>
<query name="findAllEditableCodeGroups">
<![CDATA[from CodeGroupDisplay]]>
</query>
</hibernate-mapping>
I m getting the following error while running the above query:
org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.dst.fourx.model.codeModel.CodeGroupDisplayKey.setCodeGroupCode
at org.hibernate.tuple.PojoComponentTuplizer.setPropertyValues(PojoComponentTuplizer.java:63)
at org.hibernate.type.ComponentType.setPropertyValues(ComponentType.java:262)
at org.hibernate.type.ComponentType.resolve(ComponentType.java:447)
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:182)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:759)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:292)
at org.hibernate.loader.Loader.doQuery(Loader.java:412)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at com.dst.fourx.core.impl.ao.dao.actions.HibernateNamedQueryAction.execute(HibernateNamedQueryAction.java:79)
at com.dst.fourx.core.impl.ao.dao.BaseDAOHibernate.execute(BaseDAOHibernate.java:129)
at com.dst.fourx.core.impl.ao.dao.AddEditCodeDAO.getAllFundingTypes(AddEditCodeDAO.java:47)
at com.dst.fourx.core.impl.ao.dao.AddEditDAOTest.testGetCreditBankAccts(AddEditDAOTest.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: net.sf.cglib.beans.BulkBeanException: com.dst.fourx.model.codeModel.CodesGroup$$EnhancerByCGLIB$$fd9c7e4e
at com.dst.fourx.model.codeModel.CodeGroupDisplayKey$$BulkBeanByCGLIB$$ae2c0401_2.setPropertyValues(<generated>)
at org.hibernate.tuple.PojoComponentTuplizer.setPropertyValues(PojoComponentTuplizer.java:59)
... 32 more
Caused by: java.lang.ClassCastException: com.dst.fourx.model.codeModel.CodesGroup$$EnhancerByCGLIB$$fd9c7e4e
... 34 morecheck the setter method for the property LANG_CD in com.dst.fourx.model.codeModel.CodeGroupDisplay.
it must be like -
setNlsLanguage(CodesGroup xyz) { ... }
The paremeters must be objects, not the type of the database column. We can specify the actual field in CodesGroup which acts as the foreign key in CodeGroupDisplay in the "property-ref" attribute of <many-to-one> element in the mapping file for CodeGroupDisplay.
This worked for me. Hope it works for you too. -
IDoc to IDoc Scenario with High Volumes
We have requirement to load around 2.4 million idocs using XI from source SAP to target SAP system in ~8 hours. It's a IDoc to IDoc scenario with simple mapping involved.
I Have looked at various weblogs with the design optons such as BPM collect pattern, collect pattern using IDoc XML file and IDoc Packaging.
I am looking for inputs from real time experiences on such scenarios...i.e performanace statstics, best practices to handle such scenarios, hardware, XI basis tuning etc...
Please share any experiences on the same...
Regrads
AnandThanks Michal and Chandra...
Chandra,
I have looked into the weblog mentioned( option 2 - collecting idocs using IDoc XML port).
I undersatnd that performance would also depened on hardware,tuning, idoc size, mapping complexity etc, but just get a rough idea and to decide on the design I was looking for stats, approaches followed in other projects and past experiences in such scenarios.
Michal,
I cannot avoid collection of idocs as sending idoc's individually from source to target will have performance problems.
I can avoid BPM by using IDoc XML port collection ( option 2).
2.4 million idocs in 8 hours would mean that XI needs to process 300K idocs per hour. I guess I need to try option 2 and check the performance.
Regards
Anand
Maybe you are looking for
-
Short dump while PO creation with Tax Code
we are facing problem while creation PO, while providing the Tax code(Example V0), its going for short dump, check the below the program SAPLV61Z and The exception must either be prevented, caught within the procedure "SEL_KONDTAB" "(FORM)", or decla
-
How can I set the Corporate Logo instead of Oracle Discoverer logo in 10g
Hi, How can I set the corporate logo/corporate welcom html file instead of oracle discoverer logo in oracle discoverer plus for olap reports version 10.1.2.48.18. while loading the d4o sessions. Exactly what are all the steps that I need to follow .
-
reset/restore my iphone. It is disabled and stuck in lost mode and erased from my iCloud. I need to know how to reset the phone. So far nothimy I have looked up can help. Not even recovery mode.
-
No .bash_profile in 10.6?
Hi all, I need to edit my .bash_profile to install/run some software. Unfortunately, it's not in my home directory like it should be -- I've checked via terminal, turned on invisible files, etc. Can I simply create a basic text file and call it .bash
-
Hi, I downloaded the latest J2EE SDK and I wish to use it in Eclipse IDE. Trying to compile a servlets (a my own one) a javax.servlet cannot be resolved to a type error occurs (shouldn't this package be part of the Sun AS provided within the SDK?). S