【问题标题】:How many chars can numeric EDIFACT data elements be long?数字 EDIFACT 数据元素可以长多少个字符?
【发布时间】:2012-05-08 02:47:16
【问题描述】:

在 EDIFACT 中有数字数据元素,指定例如作为格式 n..5 - 我们希望将这些字段存储在数据库表中(带有字母数字字段,因此我们可以检查它们)。 db-fields 必须多长时间,这样我们才能确定存储所有可能的有效值?我知道它至少还有两个额外的字符(用于小数点(或逗号或其他),可能还有一个前导减号)。

我们是按照我们在消息中使用的 UN/EDIFACT 标准而不是所涉及的特定指南来构建我们的表格,因此我们希望能够存储符合该标准的所有内容。但是关于数字数据元素的文档并不是很简单(或者至少我找不到那部分)。

感谢您的帮助

【问题讨论】:

    标签: edi edifact


    【解决方案1】:

    我终于在UN/EDIFACT规则Part 4. UN/EDIFACT rules Chapter 2.2 Syntax Rules 的文档中找到了UNECE web site的信息。他们没有直接说出来,但是当你把所有部分放在一起时,你就明白了。请参阅 TOC 条目 10:数字数据元素值的表示

    它基本上是这样说的:

    10.1:十进制标记
    必须按照 UNA 中的规定传输小数点(如果需要)(逗号或点,始终放置一个字符)。计算数据元素的最大字段长度时,不计入值的一个字符。

    10.2:三元组分隔符
    三元组分隔符不得互换使用。

    10.3:签名
    [...] 如果一个值被指示为负数,它在传输中应紧跟在一个减号之前,例如-112。在计算数据元素的最大字段长度时,负号不应算作值的字符。但是,在传输和接收中必须考虑到字符。

    把它放在一起:
    除了数字本身之外,数字字段中只允许使用两个(可选)字符:十进制分隔符和减号(任何字符之间不允许有空格)。这两个额外的字符不计入字段中值的最大长度。

    因此,数字字段中的最大字符数是数字字段的最大长度加 2。如果您希望您的数据库能够存储在指定为 n..17 的字段中传输的每个语法正确的值,那么您的列必须是 19 个字符长(类似于 varchar(19))。在指定为n..17 的字段中,每个值超过19 个字符的EDIFACT 消息不需要存储在数据库中以进行语义检查,因为它已经在语法上错误并且可以被拒绝。

    【讨论】:

      【解决方案2】:

      我使用 Liaison 的 EDI Notepad 解决了类似的挑战。 https://liaison.com/products/integrate/edi/edi-notepad

      我建议任何关注 EDI 的人至少获得他们的免费(快速)版本的 EDI 记事本。

      他们产品的“高端”版本(EDI Notepad Productivity Suite)带有一个“字典查看器”工具,您可以导出元素的最小/最大长度以及类型。您可以从查看器工具将文档导出为 HTML。它也可以处理 ANSI X12。

      【讨论】:

      • 感谢您的提示 -- 但您需要在那里注册(即使是免费版),而且我不打算使用我公司的信息进行注册。
      • 你总是可以用虚假信息填写它。 :) 这只是为了进入下载页面。使用免费电子邮件地址填写表格后,您可以下载该软件。除非您愿意,否则无需与那里的任何人交谈。
      猜你喜欢
      • 2015-05-18
      • 2011-07-18
      • 2020-12-07
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 2015-08-22
      • 2015-11-26
      • 2014-02-13
      相关资源
      最近更新 更多