Azure 逻辑应用中 X12 消息的 997 功能确认和错误代码
适用范围:Azure 逻辑应用(消耗型 + 标准型)
在 Azure 逻辑应用中使用 X12 操作时,可以创建工作流来处理用于电子数据交换 (EDI) 通信的 X12 消息。 在 EDI 消息传送中,确认会提供处理 EDI 交换的状态。 接收交换时,X12 解码操作可以根据启用的确认类型和指定的验证级别,向发送方返回一种或多种类型的确认。
例如,接收方将通过发送 997 功能确认 (ACK) 以及在处理过程中发生的每个错误,来报告在接收的 X12 编码消息中验证功能组标头 (GS) 和功能组尾部 (GE) 时确定的状态。 X12 解码操作始终生成符合 4010 的 997 ACK,而 X12 编码操作和 X12 解码操作都可以验证符合 5010 的 997 ACK 。
接收方在功能组标头 (GS) 和功能组尾部 (GE) 信封中发送 997 ACK。 但是,此 GS 和 GE 信封与任何其他事务集中的信封没有区别。
本主题简要概述了 X12 997,其中包括交换中的 997 ACK 段以及这些段中使用的错误代码。 若要了解其他相关信息,请查看以下文档:
- X12 TA1 技术确认和错误代码
- 交换用于 B2B 企业集成的 X12 消息
- 交换用于 B2B 企业集成的 EDIFACT 消息
- 什么是 Azure 逻辑应用
- 使用 Azure 逻辑应用和 Enterprise Integration Pack 的 B2B 企业集成解决方案
997 ACK 段
下表描述了交换中的 997 ACK 段,并使用以下定义:
- M = 必需
- O = 可选
位置 | 段 ID | 名称 | 是否需要指定 (Req. Des.) |
最大使用次数 | 循环重复 |
---|---|---|---|---|---|
010 | ST | 事务集标头(用于确认) | M | 1 | - |
020 | AK1 | 功能组响应标头 | M | 1 | - |
030 | AK2 | 事务集响应标头 | O | 1 | 999999 (循环 ID = AK2) |
040 | AK3 | 数据分段注释 | O | 1 | 999999 (循环 ID = AK2 或 AK3) |
050 | AK4 | 数据元素注释 | O | 9 9 | - |
060 | AK5 | 事务集响应尾部 | M | 1 | - |
070 | AK9 | 功能组响应尾部 | M | 1 | - |
080 | SE | 事务集尾部(用于确认) | M | 1 | - |
以下部分提供了有关每个 AK 段的详细信息。 在 AK2 到 AK5 循环中,段提供有关事务集的错误信息。
AK1
必需的 AK1 段使用以下数据元素标识要确认的功能组:
元素 | 说明 |
---|---|
AK101 | 必需,用于标识要确认的功能组的功能组 ID (GS01)。 |
AK102 | 必需,用于标识要确认的功能组的组控制编号(GS06 和 GE02)。 |
AK103 | 可选,用于标识原始事务的 GS08 中发送的 EDI 实现版本。 AK103 支持符合 5010 的入站 997 ACK。 |
AK2
可选的 AK2 段中包含对接收到的功能组中的事务集的确认。 如果存在多个 AK2 段,则这些段将作为一系列循环发送。 每个 AK2 循环都使用接收的顺序标识事务集。 如果事务集出错,AK2 循环将包含 AK3、AK4 和 AK5 段。 有关详细信息,请参阅本主题稍后的段说明。
AK2 段使用下列数据元素标识事务集:
元素 | 说明 |
---|---|
AK201 | 必需,用于标识要确认的事务集的事务集 ID (ST01)。 |
AK202 | 必需,用于标识要确认的事务集的事务集控制编号(ST02 和 SE02)。 |
AK203 | 可选,用于标识原始事务的 ST03 中发送的 EDI 实现版本。 AK203 支持符合 5010 的入站 997。 |
生成 AK2 段
可以指定是为所有事务集(无论是已接受的还是已拒绝的事务集)生成 AK2 段,还是仅为拒绝的事务集生成 AK2 段 。 否则,Azure 逻辑应用将仅为拒绝的事务集生成 AK2 循环。 如果没有为要响应的交换解析某个协议,则 997 生成设置将默认使用后备协议设置,并且不会为接受的事务集生成 AK2 段。
若要使 Azure 逻辑应用为接受的事务集(其中 AK501 == A)生成 AK2 段,请执行以下步骤:
在 Azure 门户中,打开集成帐户,然后打开 X12 贸易合作伙伴之间的 X12 协议项目。
打开“接收设置”窗格,确保“预期的 FA”处于选中状态 。 然后,可以选择“包括 AK2/IK2 循环”。
AK3
可选的 AK3 分段报告数据分段中的错误并标识数据分段的位置。 对于事务集内每个存在一个或多个错误的分段都会创建一个 AK3 分段。 如果存在多个 AK3 段,则这些段将作为一系列循环发送,其中每个循环包含一个段。 AK3 段使用以下数据元素,指明出错的每个段的位置,并报告在该位置找到的语法错误的类型:
元素 | 说明 |
---|---|
AK301 | 必需,用于使用 X12 段 ID(例如 NM1)来标识出错的段。 |
AK302 | 必需,用于标识出错段的段计数。 ST 段的计数是 1 ,其他每个段的计数按一递增。 |
AK303 | 必需,用于标识边界循环,该循环是循环启动 (LS) 段和循环结束 (LE) 段环绕的循环。 AK303 包含与存在错误的分段绑定的 LS 和 LE 分段的值。 |
AK304 | 可选,用于指明数据段中错误的代码。 尽管 AK304 是可选的,但当标识的段存在错误时,该元素是必需的。 有关 AK304 错误代码,请查看 997 ACK 错误代码 - 数据段注释。 |
AK4
可选的 AK4 分段报告数据元素或复合数据结构中的错误,并确定数据元素的位置。 AK304 数据元素为 "8", "Segment has data element errors"
并且在每个 AK3 段内可重复最多 99 次时,将发送 AK4 段。 AK4 段使用以下数据元素,指明存在错误的每个数据元素或复合数据结构的位置,并且会报告在该位置找到的语法错误的类型:
元素 | 说明 |
---|---|
AK401 | 必需,它是包含以下字段的复合数据元素:AK41.1、AK41.2 和 AK41.3 - AK401.1:使用数值计数标识出错的数据元素或复合数据结构。 例如,如果段中的第二个数据元素存在错误,则 AK401 等于 |
AK402 | 可选,用于标识存在错误的简单 X12 数据元素的编号。 例如,NM101 是简单的 X12 数据元素编号 98。 |
AK403 | 必需,用于报告已标识的元素中存在的错误。 有关 AK403 错误代码,请查看 997 ACK 错误代码 - 数据元素注释。 |
AK404 | 可选,包含存在错误的已标识数据元素的副本。 如果该错误指示存在无效字符,则将不使用 AK404。 |
AK5
AK5 分段报告是否接受在 AK2 分段中标识的事务集以及接受或拒绝的原因。 确认中包含可选 AK2 循环时,AK5 段是必需的。 AK4 段使用单个强制性数据元素指明事务集的状态,并根据事务集的语法编辑,使用一到五个可选数据元素提供错误代码。
元素 | 说明 |
---|---|
AK501 | 必需,用于指明已标识的事务集是已被接受还是已被拒绝。 有关 AK501 错误代码,请查看 997 ACK 错误代码 - 事务响应尾部。 |
AK502 - AK506 | 可选,用于指示错误的性质。 有关 AK502 错误代码,请查看 997 ACK 错误代码 - 事务集响应尾部。 |
AK9
必需的 AK9 分段指示是否接受在 AK1 分段中标识的功能组以及接受或拒绝的原因。 AK9 段使用四个必需的数据元素指明事务集的状态以及任何错误的性质。 段使用 1 到 5 个可选元素来指明任何已记录的错误。
元素 | 说明 |
---|---|
AK901 | 必需,用于指明已接受还是已拒绝在 AK1 中标识的功能组。 有关 AK901 错误代码,请查看 997 ACK 错误代码 - 功能组响应尾部。 |
AK902 | 必需,用于指明已标识的功能组尾部 (GE01) 中包括的事务集的数量。 |
AK903 | 必需,用于指明所接收的事务集的数量。 |
AK904 | 必需,用于指明在标识的功能组中接受的事务集的数量。 |
AK905 - AK909 | 可选,用于指示在标识的功能组中记录的一到五个错误。 有关 AK905 到 AK909 错误代码,请查看 997 ACK 错误代码 - 功能组响应尾部。 |
997 ACK 错误代码
本部分介绍 997 ACK 段中使用的错误代码。 每个表都列出了 Azure 逻辑应用中 X12 消息处理支持和不支持的错误代码(如 X12 规范中所定义)。
AK304 错误代码 - 数据段注释
下表列出了 AK3 段(数据段注释)的 AK304 数据元素中使用的错误代码:
错误代码 | 条件 | 是否支持? |
---|---|---|
1 | 无法识别的段 ID | 是 |
2 | 意外段 | 是 |
3 | 必需段缺失 | 是 |
4 | 循环次数超过最大次数 | 是 |
5 | 段超出了最大值使用 | 是 |
6 | 段不在已定义的事务集中 | 是 |
7 | 段不在正确的序列中 | 是 |
8 | 段包含数据元素错误 | 是 |
511 | 发现尾部分隔符(自定义代码) | 是 |
AK403 错误代码 - 数据元素注释
下表列出了 AK4 段(数据元素注释)的 AK403 数据元素中使用的错误代码:
错误代码 | 条件 | 是否支持? |
---|---|---|
1 | 必需数据元素缺失 | 是 |
2 | 条件性必需数据元素缺失 | 是 |
3 | 数据元素太多 | 是 |
4 | 数据元素太短 | 是 |
5 | 数据元素太长 | 是 |
6 | 数据元素中的字符无效 | 是 |
7 | 代码值无效 | 是 |
8 | 日期无效 | 是 |
9 | 无效时间 | 是 |
10 | 违反排除条件 | 是 |
AK501 错误代码 - 事务集响应尾部
下表列出了 AK5 段(事务集响应尾部)的 AK501 数据元素中使用的错误代码:
错误代码 | 条件 | 是否支持? |
---|---|---|
A | 已接受 | 是 |
E | 已被接受,但出现错误 | 是 注意:没有错误代码会导致状态 。 |
M | 已拒绝,消息身份验证代码 (MAC) 失败 | 否 |
P | 部分接受,但至少有一个事务集被拒绝 | 是 |
R | 已拒绝 | 是 |
W | 已拒绝,保证有效性测试失败 | 否 |
X | 已拒绝,无法分析解密后的内容 | 否 |
AK502 到 AK506 错误代码 - 事务集响应尾部
下表列出了 AK5 段(事务集响应尾部)的 AK502 到 AK506 数据元素中使用的错误代码:
错误代码 | 条件 | 支持或 与 AK501 相关? |
---|---|---|
1 | 不支持事务集 | 是,R |
2 | 事务集尾部缺失 | 是,R |
3 | 标头和尾部中的事务集控制编号不匹配 | 是,R |
4 | 包含的段数与实际计数不匹配 | 是,R |
5 | 有一个或多个段出错 | 是,R |
6 | 事务集标识符缺失或无效 | 是,R |
7 | 事务集控制编号缺失或无效(可能出现了重复的事务编号) | 是,R |
8 到 27 | - | 否 |
AK901 错误代码 - 功能组响应尾部
下表列出了 AK9 段(功能组响应尾部)的 AK901 数据元素中使用的错误代码:
错误代码 | 条件 | 支持或 与 AK501 相关? |
---|---|---|
A | 已接受 | 是 |
E | 接受,但出现错误 | 是 |
M | 已拒绝,消息身份验证代码 (MAC) 失败 | 否 |
P | 部分接受,但至少有一个事务集被拒绝 | 是 |
R | 已拒绝 | 是 |
W | 已拒绝,保证有效性测试失败 | 否 |
X | 已拒绝,无法分析解密后的内容 | 否 |
AK905 到 AK909 错误代码 - 功能组响应尾部
下表列出了 AK9 段(功能组响应尾部)的 AK905 到 AK909 数据元素中使用的错误代码:
错误代码 | 条件 | 支持或 与 AK501 相关? |
---|---|---|
1 | 不支持功能组 | 否 |
2 | 不支持功能组版本 | 否 |
3 | 功能组尾部缺失 | 是 |
4 | 功能组标头和尾部中的组控制编号不一致 | 是 |
5 | 包含的事务集数与实际计数不匹配 | 是 |
6 | 组控制编号违反语法(可能出现了重复的组控制编号) | 是 |
7 到 26 | - | 否 |