在入站格式错误的X12文件时,BizTalk中是否可能缺少TA1和999?

时间:2016-04-19 19:38:57

标签: biztalk edi biztalk-2013 x12

这是我第一次见到这个。

通常我们收到入站X12文件。将始终生成999(通过BizTalk中的配置),并且在发生交换级别错误的情况下,将创建TA1。

但是今天我得到了一个带有一些格式错误的X12文件,BizTalk中的错误弹出窗口是:

 Delimiters are not unique, field and component seperator are the same.
 The sequence number of the suspended message is 1. 

我希望生成999或TA1来拒绝入站文件。但这两个文件都没有创建。

我的问题:

  • 我希望为此类错误创建哪个文件? 999或 TA1?
  • 这是BizTalk的错误或正常行为吗?
  • 如果这是正常的,那么捕获此错误的最佳机制是什么 回复贸易伙伴。

1 个答案:

答案 0 :(得分:2)

您绝对不应该期望999(特定于事务集),因为此错误会阻止BizTalk解析事务集 - 它没有可靠的方法来确定它是什么类型的事务。

TA1可能是合适的,但这似乎是一个灰色地带 - 可能值得联系微软的支持。 documentation表示无效的ISA会导致TA1为负,但error codes for TA1不会将此特定情况列为支持(或根本不支持)的情况。

可能的解决方法是捕获此类消息,为其生成TA1,并将其路由回TP。但是,使用非唯一分隔符可能无法从消息本身确定TP,即使您可以从上下文中确定它(但如果多个贸易伙伴使用相同的端口/位置,则可能不会)。我的猜测是BizTalk没有正确处理它的原因。说实话,除非这种情况经常发生,否则在人为干预的例外情况下处理它可能更容易/更可行。

就捕获消息而言,我认为您需要一个自定义管道组件 - 甚至可能会对EdiDisassembler进行子类化,以便您可以捕获此特定异常并处理它。