我们是利用现代技术,如XML接口,一个现代化的公司,但我们的许多客户希望从我们像一个D96A EDIFACT格式例如电子发票。
不,我们已经不能用现有的库,因为他们没有在我们的Navision的软件采用C / AL编程语言编写的。
因此,为了解析它在C / AL我需要了解它的规范。 但它看起来非常困难和复杂。
因此,有人可以给我一个概述如何解释说D96A以及如何解析呢?
我们是利用现代技术,如XML接口,一个现代化的公司,但我们的许多客户希望从我们像一个D96A EDIFACT格式例如电子发票。
不,我们已经不能用现有的库,因为他们没有在我们的Navision的软件采用C / AL编程语言编写的。
因此,为了解析它在C / AL我需要了解它的规范。 但它看起来非常困难和复杂。
因此,有人可以给我一个概述如何解释说D96A以及如何解析呢?
我知道这个问题是旧的,但我不得不这样做对客户的项目有一点研究。 有几个很好的附加组件Dynamics NAV的。 具有例如看看Anveo EDI连接 ,他们实施的进口和EDIFACT(以及更多格式)的出口直接在NAV。 其它解决方案可从BMI,Yaveon,拉纳姆和其他几家公司。 也有处理数据的多个服务提供商和你在一个简单的XML文件或基于结构同意他们的观点。
解析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更容易做出验证。 你可以,当然,只要你想用这次谈话的,但你迟早会来到一个点,在那里你需要把你的当前分析消息的结构信息进入转换器(因为它是不平凡的知道哪段嵌套到其他段对它们进行分组。这里不只是UNG
, UNH
等,但也有一些段组,你不能直接看到)。
不过,你必须创建一个特定的评估程序/模式/你收到的邮件凡是,根据EDIFACT,手册,你应该得到的文档。
我建议搜索和通过GitHub的或SourceForge上回购细读。 快速搜索关键字:+ EDIFACT + D96A提供的几个库可供选择。 事实上,这看起来很有希望为您的情况:
你可以不断的评估和检查的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
干杯!
我一直在使用了Talend开放工作室(TOS)偶尔它是一个功能丰富的ETL工具,让您直观地构建数据转换工作。 然后,当一切正常您可以根据需要工作导出为.bat或sh文件。 最酷的是,这个工具支持EDIFACT开箱。 所以,你可以建立一个批处理文件,它接受一个EDI文件名作为参数,并生成您所定义的任何输出。
https://help.talend.com/reader/hCrOzogIwKfuR3mPf~LydA/1qBCcoArBu0cDLAgdrMyMA