Чтение EDI отформатированные файлы

Я плохо знаком с EDI, и у меня есть вопрос.

Я считал, что можно получить максимум от того, в чем Вы нуждаетесь о формате EDI путем рассмотрения последних 3 символов строки ISA. Это прекрасно, если каждый EDI использовал разрывы строки для разделения объектов, но я нашел, что многие - однострочные файлы с любым количеством символов, используемых в качестве повреждений. Я заметил, что Самый последний символ в каждом EDI, который я проанализировал, является символом прерывания. Я посмотрел на несколько сотен и не нашел исключений к этому. Если я сначала захватываю тот символ, и использование, что для получения последних 3 из строки ISA я должен обоснованно ожидать, что смогу проанализировать данные из EDI?

Я не знаю, помогает ли это, но EDI 'вводит' рассматриваемый, имеют тенденцию быть 850, 875. Я не уверен, является ли это стандартом или нет, но это может стоить упомянуть.

13
задан BQ. 3 March 2010 в 00:07
поделиться

1 ответ

Тип транзакции EDI не имеет значения (850 = порядок, 875 = продуктовый заказ). Приписав несколько парсеров EDI, вот несколько вещей, которые я нашел:

Вы должны быть в состоянии рассчитывать на ISA (и ISA), являюсь фиксированной шириной (105 символов, если служит память). отложить первые 105 символов. Все после этого и до первого возникновения «GS» - ваш линейный терминатор (это может быть что-нибудь, включать в себя 0x07 - звуковой сигнал - так что следить, если вы выводят на STDOUT для отладки или вы можете иметь кучу звуковых сигналов из оратора). Обычно это 1 или 2 символа, иногда это может быть больше (если лицо, отправив вам данные, добавляет дополнительный терминатор по какой-то причине). После того, как у вас есть линейный терминатор, вы можете получить разделитель сегмента (поля). Я обычно вытягиваю 3 символа линии GS и использую, хотя 4-й символ линии ISA также должен работать.

Также осознайте, что вы можете получить файл с несколькими ISA в нем. В этом случае вам не может , сосчитать на линии или полевых сепараторах, одинаковых в каждом ISA.

Другое дело .. Также возможно (опять не уверены, если его SPEC) для файла EDI имеет переменную длину ISA. Это очень редко, но я должен был вместить это. Если это произойдет, вы должны разбирать линию в свои поля. Последнее поле в ISA - это только символ, поэтому вы можете определить реальную длину ISA из него. Если бы это был я, я бы не беспокоился об этом, если вы не увидите, как это так. Это редкое происшествие.

То, что я сказал выше, может не быть в письме «спецификации» ... То есть я не уверен, что его законно иметь разные сепараторы линии в одном файле, но в другом ISAS, но это Технически возможен, и я вмещаю его, потому что я должен обработать файлы, которые проходят в этом порядке. Процессор EDI I использует процессы вверх 5000 файлов в день с более 3000 возможных источников данных (поэтому я вижу много странных вещей).

С наилучшими пожеланиями, Дон

14
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: