有一个非常简单的方法来处理,例如D96A EDIFACT?(Is there a really si

2019-09-18 23:36发布

我们是利用现代技术,如XML接口,一个现代化的公司,但我们的许多客户希望从我们像一个D96A EDIFACT格式例如电子发票。

不,我们已经不能用现有的库,因为他们没有在我们的Navision的软件采用C / AL编程语言编写的。

因此,为了解析它在C / AL我需要了解它的规范。 但它看起来非常困难和复杂。

因此,有人可以给我一个概述如何解释说D96A以及如何解析呢?

Answer 1:

我知道这个问题是旧的,但我不得不这样做对客户的项目有一点研究。 有几个很好的附加组件Dynamics NAV的。 具有例如看看Anveo EDI连接 ,他们实施的进口和EDIFACT(以及更多格式)的出口直接在NAV。 其它解决方案可从BMI,Yaveon,拉纳姆和其他几家公司。 也有处理数据的多个服务提供商和你在一个简单的XML文件或基于结构同意他们的观点。



Answer 2:

解析EDIFACT其实并不复杂。 刚分割在字符的语法时才:首先在'以获得片段,比在+来获取片段的数据元素和在:得到的各个组件。 你需要采取逃脱分隔符字符的照顾,当然。 这里使用的字符只有默认的,他们可以在邮件的开头由可选UNA段被改变。 实际上, 维基百科条目上EDIFACT给出了一个相当不错的(但简单)介绍说。 并且该格式记录与详细联合国欧洲经济委员会的网站 (是的,这是一个很大,很难读)。

最棘手的部分是要得到信息的是和你的应用程序(并验证它是有效的,先不谈创造良好的错误消息)。 如果你真的打算写一comlete解析出任何语言无关的一切,然后:没有,有没有简单的方法来做到这一点。 也没有任何其他灵活的数据表示。 这一个艰巨的任务,而且将永远是。

但这里有一个想法:如果你是为XML那么多(或任何其他“现代科技”为你喜欢称呼它...)。 这将是一个相对容易的任务编写一些程序,EDIFACT报文转换成一些统一的XML-EDIFACT格式的(这是一个非常可怕的事情,很可能会吓坏我了)。 你可以每EDIFACT段转换成一个XML标签,也许是这样的:

ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'

在XML:

<segment qualifier="ERC">
    <element>
        <component>A7V</component>
        <component>1</component>
        <component>AMD<component>
    </element>
</segment>
<segment qualifier="IFT">
   <element>
       <component>3</component>
   </element>
   <element>
       <component>NO MORE FLIGHTS</component>
   </element>
</segment>

然后你就可以发挥它的你的XML工具和库电源,以验证/评估。

你也可以这样做更具体的,是这样的:

<segment_ERC>
    <element>
        <component>A7V</component>
        <component>1</component>
        <component>AMD<component>
    </element>
</segment_ERC>
<segment_IFT>
   <element>
       <component>3</component>
   </element>
   <element>
       <component>NO MORE FLIGHTS</component>
   </element>
</segment_IFT>

这可以通过XSD更容易做出验证。 你可以,当然,只要你想用这次谈话的,但你迟早会来到一个点,在那里你需要把你的当前分析消息的结构信息进入转换器(因为它是不平凡的知道哪段嵌套到其他段对它们进行分组。这里不只是UNGUNH等,但也有一些段组,你不能直接看到)。

不过,你必须创建一个特定的评估程序/模式/你收到的邮件凡是,根据EDIFACT,手册,你应该得到的文档。



Answer 3:

我建议搜索和通过GitHub的或SourceForge上回购细读。 快速搜索关键字:+ EDIFACT + D96A提供的几个库可供选择。 事实上,这看起来很有希望为您的情况:

  • 机器人开源EDI翻译, http://sourceforge.net/projects/bots/ 。 项目的描述说,这是EDI(电子数据交换)一个完整的翻译。

你可以不断的评估和检查的Oracle B2B11克这是Oracle SOA套件11gR1中的一部分: - http://www.oracle.com/technetwork/middleware/soasuite/downloads/downloads-085394.html#11g 。 它有UN / EDIFACT OTD库,我想你可以使用至少解析。

通常最好的办法是在数据流入您的NAV数据库拿起现有库,要么将它移植到资产净值,或通过外部接口使用。 如果你能调用.NET代码,那么现有的库过多应该存在,只是通过引用组件让你那里。 正如我不熟悉的NAV的发展,而且使用某种REST / JSON的任何数据传输对象调用机制是应该可以 - 在您的成分B执行繁重的工作和NAV组件通过再换解析UN / EDIFACT报文的XML接口。

还有一个类似的问题和答案夫妇,以及可能适合你以及: 有没有在Java中有什么好的开源EDIFACT分析器? 。

EDIFACT Navision的 X12 XML EDI D96A

干杯!



Answer 4:

我一直在使用了Talend开放工作室(TOS)偶尔它是一个功能丰富的ETL工具,让您直观地构建数据转换工作。 然后,当一切正常您可以根据需要工作导出为.bat或sh文件。 最酷的是,这个工具支持EDIFACT开箱。 所以,你可以建立一个批处理文件,它接受一个EDI文件名作为参数,并生成您所定义的任何输出。

https://help.talend.com/reader/hCrOzogIwKfuR3mPf~LydA/1qBCcoArBu0cDLAgdrMyMA



文章来源: Is there a really simple way to process EDIFACT for example D96A?
标签: edifact