2012-07-02 24 views
6

Siamo un'azienda moderna che utilizza tecnologie moderne come le interfacce XML, ma molti dei nostri clienti vogliono ad esempio fatture elettroniche da noi in un formato EDIFACT come D96A.Esiste un modo molto semplice per elaborare EDIFACT ad esempio D96A?

No, non è possibile utilizzare librerie già esistenti, poiché non sono scritte nel linguaggio di programmazione C/AL utilizzato dal software Navision.

Quindi per analizzarlo in C/AL devo capirne le specifiche. Ma sembra estremamente difficile e complicato.

Così qualcuno può darmi una panoramica di come interpretare D96A e come analizzarlo?

risposta

0

So che questa domanda è più vecchia, ma ho dovuto fare una piccola ricerca per il progetto di un cliente. Esistono diversi buoni componenti aggiuntivi per Dynamics NAV. Per esempio, dare un'occhiata a Anveo EDI Connect hanno implementato l'importazione e l'esportazione di EDIFACT (e molti altri formati) direttamente nel NAV. Altre soluzioni sono disponibili da BMI, Yaveon, Lanham e molte altre aziende. Esistono anche diversi fornitori di servizi che elaborano i dati e concordano con loro su una semplice struttura basata su file o XML.

2

Suggerisco di cercare e esaminare attraverso GitHub o repository SourceForge. Una ricerca rapida con parole chiave: + EDIFACT + D96A ha fornito diverse librerie tra cui scegliere. In realtà questo sembra essere molto promettente per il vostro caso:

  • Motori di ricerca open source edi traduttore, http://sourceforge.net/projects/bots/. La descrizione del progetto dice che è un traduttore completo per EDI (Electronic Data Interchange).

Si può sempre valutare e controllare Oracle 11g B2B che fa parte di Oracle SOA Suite 11gR1: - http://www.oracle.com/technetwork/middleware/soasuite/downloads/downloads-085394.html#11g. Ha una libreria OTD UN/EDIFACT che credo si possa usare almeno per l'analisi.

Generalmente la soluzione migliore è quella di raccogliere la libreria esistente e portarla sul NAV o utilizzare tramite l'interfaccia esterna in cui i dati confluiscono nel database NAV. Se sei in grado di chiamare il codice .NET, allora dovrebbe esistere una pletora di librerie esistenti e semplicemente facendo riferimento all'assembly puoi farti arrivare lì. Dato che non ho familiarità con lo sviluppo di NAV ma usando una sorta di REST/JSON qualunque sia il meccanismo di chiamata dell'oggetto di trasferimento dati dovrebbe essere possibile - dove il componente B fa il lavoro pesante e il tuo componente NAV tira i messaggi UN/EDIFACT analizzati attraverso il tuo Interfaccia XML

C'era un'altra domanda simile e anche risposte di coppia che potrebbero essere adatte a voi: Is there any good open source EDIFACT parser in Java?.

Cheers!

9

L'analisi di EDIFACT non è in realtà così complicata. Basta dividere i caratteri di sytax: prima a ' per ottenere i segmenti, che a + per ottenere elementi di dati di tali segmenti e a : per ottenere i singoli componenti. Hai bisogno di prendersi cura dei caratteri separati di seperator, naturalmente. I caratteri utilizzati qui sono solo predefiniti, possono essere modificati all'inizio del messaggio dal segmento UNA facoltativo. In realtà lo wikipedia article su EDIFACT offre un'introduzione piuttosto buona (ma breve) a questo. E il formato è documentato con dettagli sul UN's UNECE site (sì, è molto difficile da leggere).

La parte difficile è ottenere le informazioni da questo e all'interno dell'applicazione (e verificando che sia valido, non creare messaggi di errore validi). Se hai davvero intenzione di scrivere un parser comlete dal nulla per tutto ciò che in qualsiasi lingua, allora: No, non c'è un modo semplice per farlo. Né esiste alcuna altra rappresentazione flessibile dei dati. Che è un compito difficile e lo sarà sempre.

Ma ecco un'idea: se siete in XML tanto (o qualsiasi altra "tecnologia moderna" come volete chiamarla ...). Sarebbe un compito relativamente facile scrivere un programma che converta i messaggi EDIFACT in un formato XML-EDIFACT unificato (che è una cosa piuttosto orribile e molto probabilmente mi farebbe impazzire). È possibile convertire tutti i segmenti EDIFACT in un tag XML, forse in questo modo:

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

In 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> 

Quindi è possibile scatenare la potenza dei vostri strumenti XML e librerie su di esso per validare/valutare esso.

Si potrebbe anche farlo in modo più specifico, come questo:

<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> 

Ciò potrebbe rendere la validazione tramite XSD più facile. Ovviamente puoi ottenere tutto ciò che vuoi con questa conversazione, ma prima o poi arriveresti a un punto, nel quale dovresti mettere le informazioni sulla struttura del tuo messaggio correntemente sintetizzato nel convertitore (poiché non è banale sapere quali segmenti sono nidificati in altri segmenti che li raggruppano.Non ci sono solo UNG, UNH e così, ma anche alcuni gruppi di segmenti che non vedi direttamente).

Ancora, dovrai creare programmi di valutazione/schemi/whatevers specifici per i messaggi che ricevi, secondo i manuali EDIFACT che dovresti ottenere come documentazione.

Problemi correlati