我们是一家使用现代技术(如XML接口)的现代化公司,但我们的许多客户都想要我们的电子发票,例如D96A等EDIFACT格式。
不,我们不能使用现有的库,因为它们不是用我们的Navision软件使用的C / AL编程语言编写的。
因此,为了在C / AL中解析它,我需要了解它的规范。但它看起来非常困难和复杂。
那么有人可以给我一个概述如何解释说D96A以及如何解析它吗?
答案 0 :(得分:10)
解析EDIFACT实际上并不复杂。只需在sytax字符处进行拆分:首先在'
获取细分,而不是在+
获取细分的数据元素,而在:
获取各个组件。当然,你需要照顾逃脱的分离者字符。这里使用的字符只是默认值,可以通过可选的UNA段在消息开头更改。实际上,EDIFACT上的wikipedia article给出了相当不错(但简短)的介绍。并且UN's UNECE site详细记录了格式(是的,这很多,很难阅读)。
棘手的部分是从中获取信息并将其传入您的应用程序(并验证它是否有效,留下创建良好的错误消息)。如果你真的打算用任何语言为所有语言编写一个comlete解析器,那么:不,没有简单的方法可以做到这一点。也没有任何其他灵活的数据表示。 是一项艰巨的任务,而且永远都是。
但是这里有一个想法:如果你对XML这么多(或者你喜欢称之为任何其他“现代技术”......)。编写一些将EDIFACT消息转换为统一的XML-EDIFACT-Format(这是一件非常可怕的事情并且很可能会让我感到震惊)的程序将是一项相对容易的任务。您可以将每个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手册,您必须为收到的信息创建特定的评估程序/模式/模板。
答案 1 :(得分:2)
我建议通过GitHub或SourceForge repos进行搜索和阅读。快速搜索 关键字:+ EDIFACT + D96A提供了多个库供您选择。 事实上,这看起来很有希望:
您始终可以评估并查看Oracle SOA 11g,它是Oracle SOA Suite 11gR1的一部分: - http://www.oracle.com/technetwork/middleware/soasuite/downloads/downloads-085394.html#11g。 它有UN / EDIFACT OTD库,我想你至少可以用它来解析。
通常,您最好的选择是选择现有的库并将其移植到NAV或使用 外部接口,数据流入您的NAV数据库。如果你能够调用.NET代码,那么应该存在大量的现有库,只需通过引用程序集就可以实现。因为我不熟悉NAV开发,但是使用某种REST / JSON,无论你的数据传输对象调用机制是什么都应该是可能的 - 你的组件B执行繁重的工作,你的NAV组件通过你的解析UN / EDIFACT消息XML接口。
还有另一个类似的问题和几个答案也适合你: Is there any good open source EDIFACT parser in Java?
edifact navision x12 xml edi d96a
干杯!
答案 2 :(得分:0)
我知道这个问题比较老,但我不得不为客户的项目做一些研究。 Dynamics NAV有几个很好的附加组件。例如,看看Anveo EDI Connect他们直接在NAV中实现了EDIFACT(以及更多格式)的导入和导出。其他解决方案可从BMI,Yaveon,Lanham和其他几家公司获得。还有一些服务提供商处理数据,您同意它们是基于简单的XML或基于文件的结构。
答案 3 :(得分:0)
我偶尔使用Talend Open Studio(TOS),它是功能丰富的ETL工具,可让您直观地构建数据转换作业。然后,当一切正常运行时,您可以将作业导出为.bat或.sh文件。很棒的事情是该工具开箱即用地支持EDIFACT。因此,您可以构建一个批处理文件,该批处理文件将EDI文件名作为参数并生成您定义的任何输出。
https://help.talend.com/reader/hCrOzogIwKfuR3mPf~LydA/1qBCcoArBu0cDLAgdrMyMA