你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 逻辑应用中的 997 功能确认和 X12 消息的错误代码

适用范围: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 名称 所需的指定
(要求描述)
最大使用次数 循环重复
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 接受,但出现错误

注意:没有错误代码会导致状态 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 -

Next steps