We have a 997 that generates an error when converted via the Java runtime converter, but succeeds from inside Stylus Studio.
Here is the error from the Stylus runtime JAR:
com.ddtek.xmlconverter.adapter.edi.EDIConverterException: [DDEF0009] FATAL ERROR Segment not supported in this position for this message (expected one of ISA,GS,GE)
Dialect: X12
Version: syntax=00401;table=004010
Segment: TA1 (line 2)
Native error: 7, in table: 720
com.ddtek.xmlconverter.adapter.edi.EDI.errorBuilder(EDI.java:1118)
com.ddtek.xmlconverter.adapter.edi.EDI.fatal(EDI.java:1001)
com.ddtek.xmlconverter.adapter.edi.EDI.fatal(EDI.java:989)
com.ddtek.xmlconverter.adapter.edi.Segment.position(Segment.java:1579)
com.ddtek.xmlconverter.adapter.edi.Segment.writeXML(Segment.java:2151)
com.ddtek.xmlconverter.adapter.edi.EDI.next(EDI.java:760)
com.ddtek.xmlconverter.adapter.AdapterBase.runToEnd(AdapterBase.java:221)
com.ddtek.xmlconverter.impl.Job.runConversionNow(Job.java:221)
com.ddtek.xmlconverter.impl.Job.RunToXml(Job.java:275)
com.ddtek.xmlconverter.impl.Job.<init>(Job.java:82)
com.ddtek.xmlconverter.impl.ConverterImpl.convert(ConverterImpl.java:175)
com.sbux.iconsole.common.ConverterBuddyWindow.convertWithUrl(ConverterBuddyWindow.java:117)
Here is the input 997 text:
ISA*00* *00* *08*9253070000 *ZZ*sbux_heb *100520*1042*U*00401*000000007*0*P*>~TA1*000365086*100520*0842*A*000~GS*FA*2102468507*sbux_heb*20100520*1042*1*T*004010UCS~ST*997*10001~AK1*GP*365086~AK2*880*558157~AK5*A~AK9*A*1*1*1~SE*6*10001~GE*1*1~IEA*1*000000007~
Here is the URL we're using for conversion:
converter:EDI:eol=no
We also tried "converter:EDI?" --- which is what Studio uses.
And, here's the base code that makes the Converter call:
ByteArrayInputStream input = new ByteArrayInputStream(
jtareaUrlContent.getText().getBytes(charset)
);
String url = "converter:EDI:eol=no";
ConverterFactory factory = new ConverterFactory();
Converter converter = factory.newConvertToXML(url);
OutputStream output = new ByteArrayOutputStream();
Source source = new StreamSource(input);
Result result = new StreamResult(output);
converter.convert(source, result);
output.close();
We are using version 3.2 of the Data Direct EDI/XML Converter JAR library.
Subject:edi converter - java fails Author:Tony Lavinio Date:22 May 2010 10:31 AM
First, the ISA segment is supposed to be exactly 106 characters long; those elements at the beginning should be padded out to their appropriate lengths. We are actually being very generous in attempting to parse the segment even though the elements aren't in the positions they are supposed to be.
Second, since all of the elements in the ISA segment are fixed length (and it's the only segment that used all fixed-length elements), the time is defined as four digits, not six.
The error message is inappropriate; possibly the older version of the converter doesn't handle this condition as well as it should -- but there still is a problem there. The converter will properly truncate the time to HHMM in accordance with the standard.
The lengths of the elements in the ISA header are:
position element length description
ISA01 I01 2 Authorization Information Qualifier
ISA02 I02 10 Authorization Information
ISA03 I03 2 Security Information Qualifier
ISA04 I04 10 Security Information
ISA05 I05 2 Interchange ID Qualifier
ISA06 I06 15 Interchange Sender ID
ISA07 I05 2 Interchange ID Qualifier
ISA08 I07 15 Interchange Receiver ID
ISA09 I08 6 Interchange Date
ISA10 I09 4 Interchange Time
ISA11 I10 1 Interchange Control Standards
ISA12 I11 5 Interchange Control Version
ISA13 I12 9 Interchange Control Number
ISA14 I13 1 Acknowledgment Requested
ISA15 I14 1 Test Indicator
ISA16 I15 1 Subelement Separator
Then this is followed by the first segment terminator.
Thanx for the response...unfortunately the forum's cut/paste function must have ruined the 997. There are no errors in length or content with this X12 997. Checked a couple in a better editor and inside of Stylus Studio - all things check out just fine.
Thanx anyhow. There is a bug in the 3.2 version of data direct w/ this TA1 segment - or something. Worked with support directly in the background to get us up to the latest release.
In the end - all my fault for not being on a much more current release.
The 3.2 version didn't support the TA1 segment, because it lived
outside of the envelope - it only supported segments inside of an
ISA/GS/ST...SE/GE/IEA set.
Posting may have ruined the 997, but there still must have been an error, otherwise how could there have been a 6-digit time in a space only 4 digits wide? That would have pushed all of the other elements off by two characters.