on 05-03-2007 11:10 AM
Hi,
I need to send an IDoc (CRMXIF_ORDER_SAVE_M01) to SAP CRM. The trouble occur when having/wanting to use/send only the segments that apply to release 620.
In order to do that I have in my receiver IDoc adapter specified the value '620' in the Segment Version part.
As soon as having done this my IDocs fail in the adapter giving me the following error:
- <!-- Call Adapter
-->
- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
<SAP:Category>XIAdapter</SAP:Category>
<SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_IDOC_METADATA</SAP:Code>
<SAP:P1>Segment 'E101CRMXIF_ACTIVITY_X', segmentnumber '000001' not correct in structure CRMXIF_ORDER_SAVE_M01</SAP:P1>
<SAP:P2 />
<SAP:P3 />
<SAP:P4 />
<SAP:AdditionalText />
<SAP:ApplicationFaultMessage namespace="" />
<SAP:Stack>Error: Segment 'E101CRMXIF_ACTIVITY_X', segmentnumber '000001' not correct in structure CRMXIF_ORDER_SAVE_M01</SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
The segment specified in the above corresponds to the very fist sub-segment to the main segment (BUSTRANS). So if removing that segment the error jumps to the next segment (which would then be the first sub-segment).
Should be noted that I have no trouble sending IDocs if I've either not specified a Segment version (meaning latest version is automatically used) or if I explicitly request the latest by entering the latest segment release (700 in my case).
<Trace level="1" type="T">Convert one IDoc</Trace>
<Trace level="2" type="T">Convert Control Record</Trace>
<Trace level="2" type="T">Convert Data Records</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_BUSTRANS</Trace>
<Trace level="2" type="T">Ignore unknown Segment E101CRMXIF_BUSTRANS</Trace>
<Trace level="2" type="T">Ignore segment field: APPL_SNAME</Trace>
<Trace level="2" type="T">Ignore segment field: OBJECT_TASK</Trace>
<Trace level="2" type="T">Ignore segment field: OBJECT_GUID</Trace>
<Trace level="2" type="T">Ignore segment field: OBJECT_ID</Trace>
<Trace level="2" type="T">Ignore segment field: PROCESS_TYPE</Trace>
<Trace level="2" type="T">Ignore segment field: OBJECT_TYPE</Trace>
<Trace level="2" type="T">Ignore segment field: POSTING_DATE</Trace>
<Trace level="2" type="T">Ignore segment field: DESCR_LANGUAGE</Trace>
<Trace level="2" type="T">Ignore segment field: DESCR_LANGUAGE_ISO</Trace>
<Trace level="2" type="T">Ignore segment field: LOGICAL_SYSTEM</Trace>
<Trace level="2" type="T">Ignore segment field: CRM_RELEASE</Trace>
<Trace level="2" type="T">Ignore segment field: CLIENT</Trace>
<Trace level="2" type="T">Ignore segment field: CREATED_AT</Trace>
<Trace level="2" type="T">Ignore segment field: CREATED_BY</Trace>
<Trace level="2" type="T">Ignore segment field: CHANGED_AT</Trace>
<Trace level="2" type="T">Ignore segment field: CHANGED_BY</Trace>
<Trace level="2" type="T">Ignore segment field: LOCAL_TIMEZONE</Trace>
<Trace level="2" type="T">Ignore segment field: OBJECT_ID_OK</Trace>
<Trace level="2" type="T">Ignore segment field: HIGHEST_ITEM_NO</Trace>
<Trace level="2" type="T">Ignore segment field: CRM_CHANGED_AT</Trace>
<Trace level="2" type="T">Ignore segment field: CALC_SCHEMA</Trace>
<Trace level="2" type="T">Ignore segment field: SCENARIO</Trace>
<Trace level="2" type="T">Ignore segment field: VALID_FROM_EXT</Trace>
<Trace level="2" type="T">Ignore segment field: VERIFY_DATE</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ACTIVITY_X</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ACTIVITY</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ADDRESS</Trace>
<Trace level="3" type="T">Segment= E103CRMXIF_ADDRESS</Trace>
<Trace level="3" type="T">Segment= E107CRMXIF_ADDRESS</Trace>
<Trace level="2" type="T">Ignore unknown Segment E107CRMXIF_ADDRESS</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ADDRESS_F</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ACT_REASON</Trace>
<Trace level="3" type="T">Segment= E101CRMXIF_ACT_REASON_F</Trace>
...
Hope someone can help me so that I can succesfully limit the segment version used when sending Idocs.
Best regards,
Daniel
HI,
check the values for the below segment
E101CRMXIF_BUSTRANS and E107CRMXIF_ADDRESS , are there any mandatory fields in that segment and map the parent nodes of these two segments with empty constants
Regards
Chilla
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Daniel,
A few checkpoints,
1. Are all segments in the correct order? If using a Mapping like Java where you are creating the XML strcuutre, make sure that the Segements are in the same order.
2. Are you creayting a blank Segment , i.e, <SegmentName> </SegmentName> . As far as I know, a blank segment will trigger an error and so you need to have atleast one of the fields of the segment created in the target.
3. Make sure that all Segments have the attribute SEGMENT with value as 1.
Regards
Bhavesh
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Thanks for your quick reply.
The funny thing is that even if a try to post the exact same idoc (except for the EDI part) that I have received from CRM it still fails in XI with the before mentioned error.
But to answer your questions:
1. I'm not using java mapping but traditional message mapping (meta-data are up-to-date and structure is newly loaded).
2. No blank segments are being created
3. All segments have value 1 or blank (using blank works fine for me, that is when not trying to limit Segment version. But using 1 makes no difference)
Best Regards,
Daniel
User | Count |
---|---|
93 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.