cancel
Showing results for 
Search instead for 
Did you mean: 

Upload flat file (Content Conversion Parameters)

Former Member
0 Kudos
194

Hello,

I am still trying to upload a flat text file to XI. Its a non separator file.

Here the error message from the XI adaper engine:

Sender Adapter v1508 for Party '', Service 'IXI_FileSystem_CSV':

Configured at 15:36:12 2005-08-03

Initialization error: Conversion initialization failed with java.lang.Exception: java.lang.Exception: java.lang.Exception: Error(s) in XML conversion parameters found: <b>

Mandatory parameter 'CONTROL.keyFieldValue': no value found</b>

Here all my settings:

Message protocol: File Content Conversion

Document name: CMA_FILEINPUT1

Document namespace: http://www.xyz/ogsd

Recordset name: RECORD

Recordset structure: CONTROL,1,SEGMENT,*

<b>Key Field Name: SEGMENT.DUMMYKEY</b>

Key Field Type: String (cs) -> default

Fields:

CONTROL.fieldNames:TABNAM,MANDT,DOCNUM,DOCREL,....

CONTROL.fieldFixedLengths:10,3,16,4,2,1,1,...

SEGMENT.fieldNames:DUMMYKEY,DUMMY,LOCATIONID,...

SEGMENT.fieldFixedLengths:12,51,10,18,4,10,

SEGMENT.keyFieldValue:E2BPBULOCM03 (string that occurs in the first field DUMMYKEY of SEGMENT)

The message type looks like this:

CMA_MSGTYP1                1:1
  RECORD                   1:1
    CONTROL                1:1
      TABNAM
      MANDT...
    SEGMENT                0:unbounded
      DUMMYKEY
      DUMMY
      LOCATIONID...

Why do i get that error message? How to fill Key field name correctly? In my opinion i dont need key fields for CONTROL because of the occurence of one.

Any idea?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hello Christian,

the key field settings for your CONTROL line is necessary since there is no "excluding" logic for reading the different lines (e.g. all lines with DUMMYKEY <> E2BPBULOCM03 are SEGMENT lines.). The file adapter looks for lines identified by a specific key and then converts these lines to xml fragments.

In your case you should look for a field that identifies your CONTROL lines and use this field as key field.

Best regards

Joachim

Former Member
0 Kudos

Thanks to all. So "Key Field Name" is just symbolic?

Here are my new settings:

Message protocol: File Content Conversion

Document name: CMA_FILEINPUT1

Document namespace: http://www.xyz.de/ogsd

Recordset name: RECORD

Recordset structure: CONTROL,1,SEGMENT,*

<b>Key Field Name: KF</b>

Key Field Type: String (cs) -> default

Fields:

CONTROL.fieldNames:TABNAM,MANDT,DOCNUM,DOCREL,....

CONTROL.fieldFixedLengths:10,3,16,4,2,1,1,...

SEGMENT.fieldNames:DUMMYKEY,DUMMY,LOCATIONID,...

SEGMENT.fieldFixedLengths:12,51,10,18,4,10,

<b>SEGMENT.keyFieldValue:E2BPBULOCM03 (from DUMMYKEY)

CONTROL.keyFieldValue: HRETZU (from TABNAM) </b>

Both key fields are the first entries in the substructures.

Now this error is coming up:

Sender Adapter v1508 for Party '', Service 'IXI_FileSystem_CSV':

Configured at 16:41:24 2005-08-03

Last message processing started 16:41:24 2005-08-03, Error: Conversion of complete file content to XML format failed around position 0 with java.lang.Exception: ERROR converting document line no. 2 according to structure 'SEGMENT':java.lang.Exception: Consistency error: field(s) missing - specify 'lastFieldsOptional' parameter to allow this

last retry interval started 16:41:24 2005-08-03

length 30,000 secs

What is that for a new parameter(lastFieldsOptional)?

Former Member
0 Kudos

The parameter lastFieldsOptional indicates that missing fields in the source CSV file are allowed.

Thanks to all. Points rewarded.

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi

Go thru this blog <b>How to send a flat file with various field lengths and variable substructures to XI 3.0</b>

/people/venkat.donela/blog/2005/06/08/how-to-send-a-flat-file-with-various-field-lengths-and-variable-substructures-to-xi-30

here the H1 record come once but keyFieldValue is defined for that.

So give the keyFieldValue for the <b>CONTROL</b> also.

Hope it helps.

Regards

Arpit Seth

Former Member
0 Kudos

Hi Christian,

Key Field value is:

<i>Specify the value of the key field for the structure. <b>This specification is mandatory if the key field name is set.</b> Otherwise, the specification is ignored.</i>

You are right you need not give the parameter keyFieldName and your problem will be solved.

Moreover,

KeyFieldName is:

<i>If you specified a variable number of substructures for Recordset Structure, in other words, at least one substructure has the value ‘*’, then the substructures must be identified by the parser from their content. This means that a key field must be set with different constants for the substructures. In this case, you must specify a key field and the field name must occur in all substructures.</i>

here in your case KeyFieldName should be SEGMENT. In this case you also need to give <b><i>KeyFieldValue</i></b> for SEGMENT.

I hope it helps,

Thanks & Regards,

Varun Joshi