2012-07-02 2 views
6

우리는 XML 인터페이스와 같은 최신 기술을 사용하는 현대적인 회사이지만 많은 고객은 D96A와 같은 EDIFACT 형식의 전자 인보이스를 원합니다.예를 들어 D96A와 같은 EDIFACT를 처리하는 정말 간단한 방법이 있습니까?

Navision 소프트웨어가 사용하는 C/AL 프로그래밍 언어로 작성되지 않았기 때문에 기존 라이브러리를 사용할 수 없습니다.

그래서 C/AL에서 구문 분석하려면 해당 사양을 이해해야합니다. 그러나 그것은 매우 어려워 보이고 복잡합니다.

그래서 누군가가 나에게 D96A에 대한 해석 방법과 해석 방법에 대한 개요를 줄 수 있습니까?

답변

0

나는이 질문이 더 오래되었음을 알고 있지만 고객의 프로젝트를 위해 약간의 연구를해야했다. Dynamics NAV에는 여러 가지 유용한 부가 기능이 있습니다. 예를 들어 Anveo EDI Connect을 살펴본 결과 그들은 NAV에서 직접 EDIFACT (및 더 많은 형식)의 가져 오기 및 내보내기를 구현했습니다. 다른 솔루션은 BMI, Yaveon, Lanham 및 기타 여러 회사에서 제공됩니다. 또한 데이터를 처리하는 여러 서비스 공급자가 있으며 간단한 XML 또는 파일 기반 구조로 동의합니다.

2

나는 GitHub 또는 SourceForge repos를 통해 검색하고 정독하는 것이 좋습니다. 키워드가 포함 된 빠른 검색 : + EDIFACT + D96A에서 선택할 수있는 여러 라이브러리를 제공했습니다. 이 사건에 대한 약속 같은데 사실 :

당신은 항상 평가하고 오라클 SOA 스위트 11gR1의 일부입니다 오라클 B2B 11g의 체크 아웃 수 : - 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?.

건배!

9

구문 분석 EDIFACT는 실제로 그렇게 복잡하지 않습니다. 그냥 sytax 문자에서 분할 : 첫 번째 '에서 세그먼트를 얻으려면보다 +에서 해당 세그먼트의 데이터 요소를 얻으려면 :에서 개별 구성 요소를 얻으십시오. 물론 이스케이프 처리 된 분리 문자를 처리해야합니다. 여기에 사용 된 문자는 기본값 뿐이므로 옵션 UNA 세그먼트로 메시지 시작 부분에서 변경할 수 있습니다. 사실 EDIFACT의 wikipedia article은 꽤 좋은 (그러나 간략한) 소개를 제공합니다. 형식은 UN's UNECE site (자세한 내용은 읽기 어렵습니다)에 자세히 설명되어 있습니다.

까다로운 부분은 정보를 응용 프로그램에서 가져와 (그리고 유효한지 확인하고 좋은 오류 메시지를 만드는 것입니다). 모든 언어로 된 모든 것에 대해 comlete 파서를 쓸 계획이라면 다음과 같이하십시오. 아니요, 쉬운 방법은 없습니다. 다른 유연한 데이터 표현을 위해 존재하지도 않습니다. 그 이고 어려운 작업이 항상있을 것입니다.

하지만 여기에 대한 생각이 있습니다. XML을 많이 사용하면 (또는 다른 "현대 기술"이라고 부르는 것처럼 ...). EDIFACT 메시지를 통일 된 XML-EDIFACT-Format으로 변환하는 프로그램을 작성하는 것은 비교적 쉬운 일이 될 것입니다 (이것은 매우 끔찍한 일이며, 아마도 나를 놀라게 할 것입니다). 당신은 아마 다음과 같이 하나 개의 XML 태그에 모든 EDIFACT 세그먼트를 변환 할 수 있습니다 XML에서

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

:

<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- 핸드북에 따라받는 메시지에 대한 구체적인 평가 프로그램/스키마/whatevers를 만들어야합니다.

관련 문제