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 段以及这些段中使用的错误代码。 若要了解其他相关信息,请查看以下文档:

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 段,请执行以下步骤:

  1. 在 Azure 门户中,打开集成帐户,然后打开 X12 贸易合作伙伴之间的 X12 协议项目。

  2. 打开“接收设置”窗格,确保“预期的 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 等于 2
AK401.2:标识复合数据结构中存在错误的组件数据元素的数值计数。 当 AK401 报告非复合数据结构的错误时,不会向 AK401.2 赋值。
- AK41.3:可选,此字段是重复数据元素位置。 AK41.3 支持符合 5010 的入站 997。

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 -

后续步骤