此前的文章如何在 EDI 系统中查询文件? 中,我们介绍了在 EDI 系统中查询文件的几种方法。今天的文章主要针对以往客户遇到的实际用例为大家展开介绍。
通过EDI传输业务数据的过程中,当交易伙伴发出文件后,会写邮件提供发出文件的 message id,询问 A 公司是否收到该文件。
对 A 公司而言,每天都有几千条数据,通过 EDI 系统接收。业务人员如果手动逐一查询 message id ,工作量很大,并且会耗费大量时间。您可能会疑惑,为什么需要使用 message id 来查询文件而不是文件名呢?企业间通过 EDI 系统传输的业务文件,其文件名并不唯一,会出现文件名重复的情况,因此使用文件名来查询文件是否收到就不是很客观了。而 message id具有唯一性,每个文件的 message id 都不同。
假设A公司的交易伙伴现将文件名称为 test_data_1.edi 的文件发送给A 公司,通过交易伙伴的AS2端口发出时其 message id 为:
AS2_IN-20220923-164042904-8z3L@AS2_IN_AS2_OUT
要求A 公司通过此 message id 查询文件是否已成功接收。A公司的业务人员查文件的时候很不方便,需要把 MDN 下载下来,找到 message id 进行核对,确认当前接收文件的 message id 与交易伙伴发出的文件是否一致。
如上图所示,经 AS2 端口接收后,文件 test_data_1.edi 的 message id 需要下载对应 EDI 文件的 MDN 文件方可查询。如果文件数量庞大,仅是下载查询就会占据很大一部分的人力成本。
如何通过知行之桥 EDI 解决这个问题呢?
知行之桥 EDI 系统可以进行如下操作:将文件的 message id 写入文件头部,并进行简单配置,即可在状态页面进行搜索即可检索到我们需要查询的 EDI 文件。具体操作如下:
1.在 AS2 端口的 事件 选项卡下的 接收后(After Receive) 中写脚本把收到文件的 message id 写在 header 中;
脚本:
1 2 |
<arc:set attr="out.header:AS2-Message-Id" value="[AS2MessageId]"/> <arc:call op="portSetMessageHeader" in="out"/> |
2.点击页面右上角 齿轮 图标,在 高级设置 选项卡下的 高级设置 中,找到 可检索标题,配置为:as2-message-id。如图所示:
3.配置好以上两步之后,
模拟A公司交易伙伴发出文件:test_data_2.edi,A公司的AS2端口接收到新文件:test_data_2.edi。如图:
如上图所示,我们已将 message id 写入了消息头部,因此可以看到当前AS2 端口接收到的 test_data_2.edi 的 as2-message-id 为 AS2_IN-20220922-152509062-w1i9@AS2_IN_AS2_OUT。
4.在 状态 页面根据客户提供的 message id 进行搜索,就可以找到原始的文件。
在搜索框输入as2-message-id:AS2_IN-20220922-152509062-w1i9@AS2_IN_AS2_OUT。
查询结果如图所示:
成功查询到一条AS2端口接收的,message id 与原始文件相匹配的文件,表明该文件已成功被 A 公司接收。
检查文件是否成功收到的其他方法
除了检查AS2、OFTP等传输端口的message id 之外,还可以检查X12、EDIFACT等格式转换端口。具体如何操作呢?
以X12端口为例,如果您发现我们收到来自交易伙伴发送的X12报文如图所示:
接收文件如下:
856.x12
855.x12
850.x12
810.x12
经格式转换后得到的文件如下:
856_000000004.xml
855_000000003.xml
850_000000002.xml
810_000000001.xml
对比接收到的文件经X12端口转换前后的文件名称我们可以发现:
经X12端口转换后,文件名中增加了一串9位的数字。这里的9位数字我们将其成为ICN#。ICN# 取自文件内部的 EDI 字段:ISA13。我们可以判断出交易伙伴当前ICN# 的命名规则。以810_000000001.xml文件为例:
如图所示,810_000000001.xml文件中 ISA13字段值为000000001,会根据接收到的文件依次递增。
因此,我们在检查批量文件是否漏传的时候,可以在X12端口的输出选项卡下查看文件名,如果文件名是连续的数字,则说明文件均已被转换。如果出现数字断层,则需要引起重视,检查是哪些文件没有被成功转换或者可能接收失败。
以上方法仅限于ISA13值依次递增的情况。需要注意,不是所有交易伙伴发来的文件都会按照这个模式给ICN# 赋值,ICN# 也有可能会是一个9位的随机数,只要确保在规定的时间内不会重复即可。
其他查询方法
如果按照以上步骤未能成功查询到源文件可以参考这种方法:
AS2 传输分为两个方向,发送文件和接收文件。
发送文件时
当我们发送文件成功并收到交易伙伴的MDN回执,但对方反馈未收到文件时,如果文件是EDI标准报文,可以提供ICN#(即control number,对应X12报文的ISA13字段或EDIFACT报文的UNB5字段)进行确认。如果是其他类型的文件(如XML或JSON),则需要提供Message ID供交易伙伴查询。以下为详细步骤:
1.进入AS2端口的“ 输入”页面,点击已发送文件记录前的小加号,展开详细信息。
2.在详细信息中查找并提供“消息ID”(Message ID),该ID对应对方MDN回执中的Original-Message-ID。
接收文件时
当交易伙伴发送文件成功并收到我们返回的MDN回执,但我们在业务系统中未找到该数据时,需要对方提供文件的Message ID以便核查。对方提供的Message ID通常就是我们在MDN中返回的Original-Message-ID,如下图。
如果直接在“日志”->“消息”页面搜索Original-Message-ID,可能无法获得结果。此时的解决方案如下:
1.启用AS2-Message-Id跟踪:
点击知行之桥EDI平台右上角的“齿轮”图标,进入“高级设置”页面,设置“AS2-Message-Id”作为跟踪标题。
2.配置HTTP头Message-Id:
在AS2端口的高级设置页面,配置HTTP头为Message-Id。
3.根据Message ID查询:
配置完成后,在“日志”->“消息”页面,选择“根据跟踪消息头过滤”,并选择“AS2-Message-Id”。使用对方提供的Message ID,即我们MDN回执中的Original-Message-ID进行搜索。
例如,如果Message ID为:AS2_VM_Test-20240926-122342471-Sg_f@AS2_VM_ID_AS2_LOCAL_ID,输入该ID进行查询。
注意
上述查询方式适用于知行之桥20.0.7843.0及之后的所有版本,且需要在完成步骤1和2后再接收到的新文件上使用。
更多EDI信息,请参阅: EDI 是什么?
注:文案部分图片及内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。