Pregunta

EDIFACT de análisis puede ser una tarea desalentadora. ¿Hay alguna buena biblioteca de código abierto que ayuda lata?

¿Fue útil?

Solución

www.smooks.org - Un programa de análisis de texto basado en la plantilla. Tienen Ejemplos EDI adecuados que yo estaba buscando a utilizar para poner en práctica para 810S Walmart antes de que se vierten mis productos.

Otros consejos

intento: http://bots.sourceforge.net No es tanto una biblioteca, pero se traduce edifact al formato XML prefiere .... .... .... etc csv

EDIFACT de análisis es fácil. Usted puede encontrar muchas bibliotecas para hacerlo. Por ejemplo,

http://code.google.com/p/edicoder/

Todas estas bibliotecas simplemente se rompen los mensajes en segmentos.

La parte difícil con EDIFACT es transformar el mensaje en algunos objetos significativos. Esto es específico aplicación muy y dudo encontrará ninguna biblioteca. Incluso si usted encuentra uno, que será específica a un estrecho campo, como reserva de hotel.

Hemos implementado 834 EDI a XML utilizando Java + Smooks 1.6. Es impresionante!

<?xml version="1.0" encoding="UTF-8"?>

<medi:description name="834 EDI TO XML" version="1.0" />

<medi:delimiters segment="&#10;" field="*" component="^"
    sub-component="#" escape="~"/>

<medi:segments xmltag="FILE">

    <medi:segment segcode="ISA" xmltag="ISAHeader">
        <medi:field xmltag="AuthorziationInformationQualifier" />
        <medi:field xmltag="AuthorziationInformation" />
        <medi:field xmltag="SecurityInformationQualifier" />
        <medi:field xmltag="InterchangeIDQualifier" />
        <medi:field xmltag="InterchangeSenderID" />
        <medi:field xmltag="InterchangeIDQualifier" />
        <medi:field xmltag="InterchangeReceiverID" />
        <medi:field xmltag="InterchangeDate" />
        <medi:field xmltag="InterchangeTime" />
        <medi:field xmltag="RepetitionSeparator" />
        <medi:field xmltag="InterchangeControlVersionNumber" />
        <medi:field xmltag="InterchangeControlNumber" />
        <medi:field xmltag="AcknowledgmentRequested" />
        <medi:field xmltag="InterchangeUsageIndicator" />
        <medi:field xmltag="ComponentElementSeparator" />
    </medi:segment>

    <medi:segmentGroup xmltag="BenefitEnrollmentRequest" maxOccurs="-1">
        <medi:segment minOccurs="0" maxOccurs="-1" segcode="GS" xmltag="BenefitEnrollmentRequestHeader">
            <medi:field xmltag="FunctionalIDCode" />
           <medi:field xmltag="ApplicationSendsCode" />
           <medi:field xmltag="ApplicationRecsCode" />
           <medi:field xmltag="Date" />
           <medi:field xmltag="Time" />
           <medi:field xmltag="GroupCtrlNumber" />
           <medi:field xmltag="ResponsibleAgencyCode" />
           <medi:field xmltag="ReleaseIDCode" />
            </medi:segment>

        <medi:segmentGroup xmltag="BenefitEnrollmentMaintenance" maxOccurs="-1">
                <medi:segment minOccurs="0" maxOccurs="-1" segcode="ST" xmltag="BenefitEnrollmentMaintenanceHeader">
                        <medi:field xmltag="TransactionSetIdentifierCode" />
                        <medi:field xmltag="TransactionSetControlNumber" />
                        <medi:field xmltag="ImplementationConventionReference" />
                </medi:segment>
            <medi:segment minOccurs="0" segcode="BGN" xmltag="Begin" ignoreUnmappedFields="true">
                  <medi:field xmltag="TSPurposeCode" />
                  <medi:field xmltag="ReferenceIdent" />
                  <medi:field xmltag="Date" />
                  <medi:field xmltag="Time" />
                  <medi:field xmltag="TimeCode" />
                  <medi:field xmltag="ReferenceIdent" />
                  <medi:field xmltag="TransactionTypeCode" />
                  <medi:field xmltag="ActionCode" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="REF" xmltag="Ref_38" ignoreUnmappedFields="true">
                  <medi:field xmltag="ReferenceIdentQual" />
                  <medi:field xmltag="ReferenceIdent" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="DTP" xmltag="Dtp_007" ignoreUnmappedFields="true">
                  <medi:field xmltag="DateTimeQualifier" />
                  <medi:field xmltag="DateTimePeriodFormatQualifier" />
                   <medi:field xmltag="DateTimePeriod" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="QTY" xmltag="To" ignoreUnmappedFields="true">
                  <medi:field xmltag="QuantityQualifier" />
                  <medi:field xmltag="Quantity" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor" ignoreUnmappedFields="true">
                  <medi:field xmltag="EntityIDCode" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="N1" xmltag="Issuer" ignoreUnmappedFields="true">
                  <medi:field xmltag="EntityIDCode" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
            </medi:segment>

             <medi:segment minOccurs="0" segcode="N1" xmltag="Agent" ignoreUnmappedFields="true">
                  <medi:field xmltag="EntityIDCode" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
                  <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true">
                  <medi:field xmltag="AccountNumber" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
                  <medi:field xmltag="AcctNumberQualifier" />
                  <medi:field xmltag="AccountNumber" />
            </medi:segment>
            </medi:segment>
             <medi:segment minOccurs="0" segcode="N1" xmltag="Broker" ignoreUnmappedFields="true">
                  <medi:field xmltag="EntityIDCode" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
                  <medi:segment minOccurs="0" segcode="ACT" xmltag="Act" ignoreUnmappedFields="true">
                  <medi:field xmltag="AccountNumber" />
                  <medi:field xmltag="Name" />
                  <medi:field xmltag="IDCodeQualifier" />
                  <medi:field xmltag="IDCode" />
                  <medi:field xmltag="AcctNumberQualifier" />
                  <medi:field xmltag="AccountNumber" />
            </medi:segment>
            </medi:segment>

            <!--  
            <medi:segment minOccurs="0" segcode="N1" xmltag="Sponsor">
                  <medi:field xmltag="Name" />
            </medi:segment>
            <medi:segmentGroup xmltag="Member" maxOccurs="-1">
                <medi:segment minOccurs="0" maxOccurs="-1" segcode="INS"    xmltag="MemberHeader">
                        <medi:field xmltag="HeaderName" />
                        </medi:segment>

                <medi:segment minOccurs="0" segcode="DTP" xmltag="DOB">
                  <medi:field xmltag="Month" />
            </medi:segment>
                <medi:segment minOccurs="0" maxOccurs="-1" segcode="LE" xmltag="MemberFooter" ignoreUnmappedFields="true">
                        <medi:field xmltag="FooterName"/>
                        </medi:segment>
            </medi:segmentGroup>-->

            <medi:segment minOccurs="0" segcode="SE" xmltag="BenefitEnrollmentMaintenanceFooter">
            <medi:field xmltag="TransactionSetIdentifierCode" />
                        <medi:field xmltag="TransactionSetControlNumber" />
            </medi:segment>
        </medi:segmentGroup>

        <medi:segment minOccurs="0" segcode="GE" xmltag="BenefitEnrollmentRequestFooter">
            <medi:field xmltag="ZFA" />
            </medi:segment>
    </medi:segmentGroup>

    <medi:segment segcode="IEA" xmltag="ISAFooter">
         <medi:field xmltag="CCC" />
         </medi:segment>
</medi:segments>

Hay una buena en http://x12parser.codeplex.com . Se dará salida a ninguna 810 como XML, HTML o volver al texto con espacios en blanco para la inspección fácil. Las pruebas de unidad incluye una muestra de la Walmart 810 desde el sitio: http://www.jobisez.com/edi/tp/guide.aspx?doc=/edi-igs/Walmart/810Invoice5010.pdf .

El texto con formato sería el siguiente:

ISA*00*          *00*          *16*102096559TEST  *14*PARTNERTEST    *071214*1406*U*00040*810000263*1*T*>
  GS*IN*102096559TEST*PARTNER*20071214*1406*810000263*X*004010
    ST*810*0001
      BIG*20050205*6463367*20050202*3376103367
      REF*IA*123456170
      REF*DP*00017
      REF*MR*0020
      N1*SU*SUPPLIER NAME
      N1*ST*WAL-MART 100*UL*0078742000992
        N3*406 SOUTH WALTON BLVD
        N4*BENTONVILLE*AR*72712 
      ITD*05*15*****45
      DTM*011*20050205
      FOB*CC
      IT1**1080*EA*3.61**IN*001719653*UP*022108955228*UK*00221089552284 
        PID*F****ITEM DESCRIPTION
        SAC*A*I410***2350*******02
      TDS*387530
      CAD*T***RDWT*ROADWAY**BM*123456789
      ISS*1080*EA*100*LB
      CTT*1
    SE*19*0001
  GE*1*810000263
IEA*1*810000263
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top