From 9a985e7eca0ed15675243bf474531675e9920866 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Mon, 1 Jun 2020 23:14:01 +0200 Subject: [PATCH 01/12] Improved docu about What is EDIFACT --- docu/README.md | 4 ++ docu/what-is-edifact.md | 96 ++++++++++++++++++++++++++++++++--------- 2 files changed, 80 insertions(+), 20 deletions(-) create mode 100644 docu/README.md diff --git a/docu/README.md b/docu/README.md new file mode 100644 index 0000000..0d88577 --- /dev/null +++ b/docu/README.md @@ -0,0 +1,4 @@ +# EDIFACT + +* [What is EDIFACT?](what-is-edifact.md) +* [What are segments in EDIFACT](segments.md) diff --git a/docu/what-is-edifact.md b/docu/what-is-edifact.md index 783e2cf..6fc5bab 100644 --- a/docu/what-is-edifact.md +++ b/docu/what-is-edifact.md @@ -2,18 +2,62 @@ ## What is EDIFACT? -The information below will provide a brief introduction to the EDIFACT EDI standard. +The UN/EDIFACT Syntax Rules were approved in 1987 as the "ISO 9735" by the +International Organization for Standardization. -EDIFACT stands for Electronic Data Interchange For Administration, Commerce and Transport. EDIFACT is accepted as -the international EDI standard that has been adopted by organisations wishing to trade in a global context. A standard -set of syntax rules have been ratified by the United Nations. The EDIFACT standards cover transaction sets (the business -documents that you wish to transmit), data element directories and syntax rules which cover delimiter characters etc. +`EDIFACT` stands for "Electronic Data Interchange For Administration, Commerce and Transport". -An EDIFACT electronic transmission consists of one or more Interchanges. Each Interchange may consist of one or more -Messages. These Messages contain segments of data relating to the business transaction. At each level, a series of -enveloping data pairs keep track of the exchange structure. +The `EDIFACT` standard provides: -Example `EDIFACT EDI Purchase Order`: +* a set of syntax rules to structure data +* an interactive exchange protocol (I-EDI) +* standard messages which allow multi-country and multi-industry exchange + +The `EDIFACT` standards cover transaction sets (the business documents that you wish to transmit), +data element directories and syntax rules which cover delimiter characters etc. + +* An `EDIFACT` electronic transmission consists of one or more Interchanges. +* Each Interchange may consist of one or more Messages. +* These Messages contain segments of data relating to the business transaction. +* At each level, a series of enveloping data pairs keep track of the exchange structure. + +## Service Segments + +All of these `EDIFACT` messages have the same basic structure, consisting of a sequence of segments: + +``` +UNA – separators, delimiters and special characters are defined for the interpreting software +UNB – file header (with the file end "UNZ" this makes up the envelope, containing basic information) +UNG – group start +UNH – message header +UNT – message end +UNE – group end +UNZ – file end +``` + +You can also visualize these lines as something like: + +``` + |_Service String Advice UNA Optional + |____Interchange Header UNB Mandatory + : |___Functional Group Header UNG Conditional + : : |___Message Header UNH Mandatory + : : : |__ User Data Segments As required + : : |__ Message Trailer UNT Mandatory + : |__ Functional Group Trailer UNE Conditional + |___ Interchange Trailer UNZ Mandatory +``` + +## Structure + +`EDIFACT` has a hierarchical structure where the **top level is referred to as an interchange**, +and **lower levels contain multiple messages which consist of [segments](segments.md)**, which in turn consist +of composites. The final iteration is an element which is derived from the United Nations Trade +Data Element Directory (UNTDED); these are normalised throughout the `EDIFACT` standard. + +### Examples + +* An EDIFACT EDI Purchase Order [(source)](https://www.edi-plus.com/resources/message-formats/edifact/) ``` UNB+UNOA:1+US::US+50138::THEM+140531:0305+001934++ORDERS' @@ -35,19 +79,31 @@ UNT+15+1' UNZ+1+001934' ``` -## Service Segments - -Are used to keep track of the transmission. The most common set is shown below. +* Used to answer a flight ticket (FRA-JFK-MIA) availability request [(source)](https://en.wikipedia.org/wiki/EDIFACT) ``` -UNB - Start of Interchange -UNG - Start of Group -UNH - Start of Message -UNT - End of Message -UNE - End of Group -UNZ - End of Interchange +UNA:+.? ' +UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1' +UNH+1+PAORES:93:1:IA' +MSG+1:45' +IFT+3+XYZCOMPANY AVAILABILITY' +ERC+A7V:1:AMD' +IFT+3+NO MORE FLIGHTS' +ODI' +TVL+240493:1000::1220+FRA+JFK+DL+400+C' +PDI++C:3+Y::3+F::1' +APD+74C:0:::6++++++6X' +TVL+240493:1740::2030+JFK+MIA+DL+081+C' +PDI++C:4' +APD+EM2:0:1630::6+++++++DA' +UNT+13+1' +UNZ+1+1' ``` -### References +## References -* [Edi-plus](https://www.edi-plus.com/resources/message-formats/edifact/) +* [EDIFACT | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) +* [Message formats | Edi-plus](https://www.edi-plus.com/resources/message-formats/edifact/) +* [Edifile formats explained | ecosio](https://ecosio.com/en/blog/edi-file-formats-explained/) +* [Structure of an Edifact file | unece](https://ecosio.com/en/blog/edi-standards-overview-structure-of-an-edifact-file/) +* [Syntax Rules | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm) From d0c8003ad4cac9ed39654a052fe93e5e089a5edb Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Mon, 1 Jun 2020 23:44:15 +0200 Subject: [PATCH 02/12] Improved docu about segments --- docu/segments.md | 142 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 115 insertions(+), 27 deletions(-) diff --git a/docu/segments.md b/docu/segments.md index c5006d2..d8fa4b8 100644 --- a/docu/segments.md +++ b/docu/segments.md @@ -2,48 +2,136 @@ ## EDIFACT Segment Definition -EDIFACT Segment is a collection of logically-related data elements in a fixed, defined sequence. Today’s post gives -deeper understanding of a segment. As we have spoken before, EDIFACT provides a hierarchical structure for messages. -EDIFACT messages begin with the Message Header (UNH) Segment and end with the Message Trailer (UNT) Segment. These two -segments are the first, and innermost, level of the three levels of “electronic envelopes” within EDIFACT. +EDIFACT Segment is a collection of logically-related data elements in a fixed, defined sequence. + +### EDIFACT provides a hierarchical structure for messages + +EDIFACT messages begin with the `Message Header Segment` (UNH) and end with the` Message Trailer Segment` (UNT). +These two segments are the first, and innermost, level of the three levels of “electronic envelopes” within EDIFACT. EDIFACT Segment contains: -* A three-character alphanumeric code that identifies the segment. This is called the segment tag. +* A **three-character alphanumeric** code that identifies the segment. This is called the segment tag. * Variable length data elements. These can be either simple or composite. -Segments must be separated by a data element separator (data element delimiter), which is normally + and :, and -terminated by a segment terminator, normally ‘. +Segments must be separated by a **data element separator/delimiter**, which is normally `+` and `:`, and +terminated by a segment terminator, normally `'`. + +Good to know: -Each EDIFACT Segment is fully documented in the United Nations Trade Data Interchange Directory (UNTDID). These tables -list the segment position, segment tag and segment name. EDIFACT Segment tables also specify if a segment must appear -in a message using the requirements designator M (Mandatory) or C (Conditional), and how many times a particular segment - may repeat (repetition field). +> Each EDIFACT Segment is fully documented in the "United Nations Trade Data Interchange Directory" (UNTDID). +These tables list the segment position, segment tag and segment name. +EDIFACT Segment tables also specify if a segment must appear in a message using the requirements' designator +`M` (Mandatory) or `C` (Conditional), and how many times a particular segment may repeat (repetition field). -#### In EDIFACT, there are two kinds of segments +### There are two kinds of segments * Service Segments * Generic Segments -#### Service Segments are: +#### Service Segments -* Envelopes (UNB-UNZ, UNG-UNE, UNH-UNT) -* Delimiter String Advice (UNA) -* Section Separator (UNS) +* Envelopes (`UNB`-`UNZ`, `UNG`-`UNE`, `UNH`-`UNT`) +* Delimiter String Advice (`UNA`) +* Section Separator (`UNS`) -#### Generic Segments are: +#### Generic Segments -* DOC to identify and specify documents -* MOA for monetary amounts -* DTM for dates and times -* NAD for name and address data. +* `DOC` to identify and specify documents +* `MOA` for monetary amounts +* `DTM` for dates and times +* `NAD` for name and address data +* And others... #### EDIFACT Segment Terminators and Delimiters -The end of each segment is determined by the Data Segment Terminator. In EDIFACT the standard data segment terminator is - `'`. Optional or conditional data elements that are not used must be accounted for by their position within the segment. - However, optional or conditional data elements without data that appear at the end of a data segment do not need - additional data element separators to correctly position the data. +The end of each segment is determined by the Data Segment Terminator. +In EDIFACT the standard data segment terminator is `'`. + +--- + +An interchange consists of: + +``` + Service String Advice UNA Conditional + _____ Interchange Header UNB Mandatory + | ___ Functional Group Header UNG Conditional + | | _ Message Header UNH Mandatory + | | | User Data Segments As required + | | |_ Message Trailer UNT Mandatory + | |___ Functional Group Trailer UNE Conditional + |_____ Interchange Trailer UNZ Mandatory + +In addition to the above service segments, the service +segment UNS can, when required, be used to divide a message +into sections. See annex B. + + +----------------------------------------- +|Establishment |CONNECTION| Termination | A CONNECTION contains one +--------------------|-------------------- or more interchanges. The + | technical protocols for + | for establishment + | maintenance and + | termination etc.are not ++-------------------+-------------------+ part of this standard. +| | +----------------------------------------- +|Interchange |INTERCHANGE |Interchange | An INTERCHANGE contains: +-------------------|--------------------- - UNA, Service string advice, if used + | - UNB, Interchange header + | - Either only Functional groups, + | if used, or only Messages + | +.....--------------+--------------------+ - UNZ, Interchange trailer +. | | +----------------------------------------- +|UNA|UNB|'| Either |or only |UNZ|'| A FUNCTIONAL GROUP contains +| | | |FUNCTION.GRPS|MESSAGES | | | - UNG, Functional group +-----------------|----------.------------ header + | . - Messages of the same + | . type ++----------------+----------.-----------+ - UNE, Functional group +| +........+..+ | trailer +| . . | +----------------------------------------- +|UNG |'|Message |MESSAGE |Message |UNE|'| A MESSAGE contains: +--------------------|-------------------- - UNH, Message header + | - Data segments ++-------------------+-------------------+ - UNT, Message trailer +| | +----------------------------------------- +|UNH |'|Data |DATA |Data |UNT|'| A SEGMENT contains: +| | |segment |SEGMENT |segment | | | - A Segment TAG +-------------------|--------------------- - Simple data elements or + | - Composite data elements ++------------------+-------------------+ or both as applicable +| | +---------------------------------------- +|TAG |+|SIMPLE |+|COMPOSITE |'| A SEGMENT TAG contains: +| | |DATA ELEMENT | |DATA ELEMENT | | - A segment code and, +---|--------------|----------|-----|---- if explicit indication, + | | | | repeating and nesting + | | | | value(s). + | | | | + | | | | A SIMPLE DATA ELEMENT contains +-------------- ------- ------------- - A single data element +|Code|:|Value| |Value| |COMP|:|COMP| value +-------------- ------- |D/E | |D/E | A COMPOSITE DATA ELEMENT + | | | | contains: + --|------|--- - Component data elements + | | + ------- ------- A COMPONENT DATA ELEMENT + | | | | contains: + |Value| |Value| - A single data element + ------- ------- value + + --.-- --|-- + . means alternative to | +``` + +## References -### References -* [Ediacademy](https://ediacademy.com/blog/edifact-segment/) +* [EDIFACT | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) +* [Edifact Segment | Ediacademy](https://ediacademy.com/blog/edifact-segment/) +* [Structures | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) From bce06b1809c59b2dd916fa11e63860abe9467c37 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 2 Jun 2020 00:05:15 +0200 Subject: [PATCH 03/12] Added service segments spec --- docu/README.md | 10 ++- docu/service-segments-spec/README.md | 53 +++++++++++++++ docu/service-segments-spec/txt.md | 26 ++++++++ docu/service-segments-spec/una.md | 32 +++++++++ docu/service-segments-spec/unb.md | 93 ++++++++++++++++++++++++++ docu/service-segments-spec/une.md | 18 +++++ docu/service-segments-spec/unh.md | 60 +++++++++++++++++ docu/service-segments-spec/uns.md | 21 ++++++ docu/service-segments-spec/unt.md | 17 +++++ docu/service-segments-spec/unz.md | 99 ++++++++++++++++++++++++++++ 10 files changed, 428 insertions(+), 1 deletion(-) create mode 100644 docu/service-segments-spec/README.md create mode 100644 docu/service-segments-spec/txt.md create mode 100644 docu/service-segments-spec/una.md create mode 100644 docu/service-segments-spec/unb.md create mode 100644 docu/service-segments-spec/une.md create mode 100644 docu/service-segments-spec/unh.md create mode 100644 docu/service-segments-spec/uns.md create mode 100644 docu/service-segments-spec/unt.md create mode 100644 docu/service-segments-spec/unz.md diff --git a/docu/README.md b/docu/README.md index 0d88577..cce4da5 100644 --- a/docu/README.md +++ b/docu/README.md @@ -1,4 +1,12 @@ # EDIFACT * [What is EDIFACT?](what-is-edifact.md) -* [What are segments in EDIFACT](segments.md) +* [Segments in EDIFACT?](segments.md) +* [Service Segments Specification](service-segments-spec/README.md) + * [UNA](service-segments-spec/una.md) (separators, delimiters...) + * [UNB](service-segments-spec/unb.md) (file header) + * [UNG](service-segments-spec/ung.md) (group start) + * [UNH](service-segments-spec/unh.md) (message header) + * [UNT](service-segments-spec/unt.md) (message end) + * [UNE](service-segments-spec/une.md) (group end) + * [UNZ](service-segments-spec/unz.md) (file end) diff --git a/docu/service-segments-spec/README.md b/docu/service-segments-spec/README.md new file mode 100644 index 0000000..69c0a96 --- /dev/null +++ b/docu/service-segments-spec/README.md @@ -0,0 +1,53 @@ +# Service Segments Specifications + +The full description of the data elements in the service +segments is part of ISO 7372 Trade Data Elements Directory +(UNTDED). + +* [UNA](service-segments-spec/una.md) (separators, delimiters...) +* [UNB](service-segments-spec/unb.md) (file header) +* [UNG](service-segments-spec/ung.md) (group start) +* [UNH](service-segments-spec/unh.md) (message header) +* [UNT](service-segments-spec/unt.md) (message end) +* [UNE](service-segments-spec/une.md) (group end) +* [UNZ](service-segments-spec/unz.md) (file end) +* [UNS](service-segments-spec/uns.md) (section control) +* [TXT](service-segments-spec/txt.md) (additional info) + + +Legend: + +``` +Ref. The numeric reference tag for the data element as + stated in ISO 7372/UNTDED and, when preceded by S, + reference for a composite data element used in service + segments + +Name Name of COMPOSITE DATA ELEMENT in capital letters + Name of DATA ELEMENT in capital letters + Name of Component data element in small letters + +Repr. Data value representation: + a alphabetic characters + n numeric characters + an alpha-numeric characters + a3 3 alphabetic characters, fixed length + n3 3 numeric characters, fixed length + an3 3 alpha-numeric characters, fixed length + a..3 up to 3 alphabetic characters + n..3 up to 3 numeric characters + an..3 up to 3 alpha-numeric characters + + M Mandatory element + C Conditional element. + + Note that a mandatory component data element in a + conditional composite data element must appear when the + composite data element is used + + +Remarks IA Interchange Agreement between interchanging + partners +``` + +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/txt.md b/docu/service-segments-spec/txt.md new file mode 100644 index 0000000..b9520c5 --- /dev/null +++ b/docu/service-segments-spec/txt.md @@ -0,0 +1,26 @@ +# TXT, Text + +###Function + +To give information in addition to that in other segments +in the service message, as required + +> NOTE: Can not be machine processed. Should be avoided if not +necessarily required. Normally a conditional segment. It may repeat +up to the number of times indicated in the message specification +which may not be higher than 5. +``` + Ref. Repr. Name Remarks + + 0077 an3 C TEXT REFERENCE CODE Qualifies and + identifies the + purpose and function + of the segment + if indicated in the + message specification + ___________________________________________________________________ + + 0078 an..70 M FREE FORM TEXT Not machine-processable + information +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/una.md b/docu/service-segments-spec/una.md new file mode 100644 index 0000000..cd479d2 --- /dev/null +++ b/docu/service-segments-spec/una.md @@ -0,0 +1,32 @@ +# UNA, Service String advice + +### Function + +To define the characters selected for use +as delimiters and indicators in the rest of the +interchange that follows: + +* The specifications in the Service string advice take +precedence over the specifications for delimiters etc. in +segment UNB. + +* When transmitted, the Service string advice must appear +immediately before the Interchange Header (UNB) segment and +begin with the upper case characters UNA immediately followed +by the six characters selected by the sender to indicate, in +sequence, the following functions: + +``` +Repr. Name Remarks + +an1 M COMPONENT DATA + ELEMENT SEPARATOR +an1 M DATA ELEMENT SEPARATOR +an1 M DECIMAL NOTATION Comma or full stop +an1 M RELEASE INDICATOR If not used, insert + space character +an1 M Reserved for future Insert space character + use +an1 M SEGMENT TERMINATOR +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/unb.md b/docu/service-segments-spec/unb.md new file mode 100644 index 0000000..7b1b102 --- /dev/null +++ b/docu/service-segments-spec/unb.md @@ -0,0 +1,93 @@ +# UNB, Interchange Header + +### Function + +To start, identify and specify an interchange + +``` + Ref. Repr. Name Remarks + + S001 M SYNTAX IDENTIFIER + 0001 a4 M Syntax identifier a3, upper case + Controlling Agency (e.g. + UNO=UN/ECE) and a1 stating + level (e.g. A) (which + together give UNOA) + 0002 n1 M Syntax version number Increments 1 for each new + version. Shall be 2 to + indicate this version + ___________________________________________________________________ + + S002 M INTERCHANGE SENDER + 0004 an..35 M Sender identification Code or name as specified + in IA + 0007 an..4 C Partner identification Used with sender + code qualifier identification code + 0008 an..14 C Address for reverse + routing + ___________________________________________________________________ + + S003 M INTERCHANGE RECIPIENT + 0010 an..35 M Recipient Identification Code or name as + specified in IA + 0007 an..4 C Partner identification Used with recipient + code qualifier identification code + 0014 an..14 C Routing address If used, normally coded + sub-address for onward + routing + ___________________________________________________________________ + + S004 M DATE/TIME OF PREPARATION + 0017 n6 M Date YYMMDD + 0019 n4 M Time HHMM + ___________________________________________________________________ + + 0020 an..14 M INTERCHANGE CONTROL Unique reference + REFERENCE assigned by sender + ___________________________________________________________________ + + S005 C RECIPIENTS REFERENCE, + PASSWORD + 0022 an..14 M Recipient's reference/ As specified in IA. May + password be password to + recipient's system or to + third party network + 0025 an2 C Recipient's reference/ If specified in IA + password qualifier + ___________________________________________________________________ + + 0026 an..14 C APPLICATION REFERENCE Optionally message + identification if the + interchange contains + only one type of + message + ___________________________________________________________________ + + 0029 a1 C PROCESSING PRIORITY CODE Used if specified in + IA + ___________________________________________________________________ + + 0031 n1 C ACKNOWLEDGEMENT REQUEST Set = 1 if sender + requests + acknowledgement, i.e. + UNB and UNZ + segments received + and identified + ___________________________________________________________________ + + 0032 an..35 C COMMUNICATIONS AGREEMENT If used, to identify + ID type of communication + agreement controlling + the interchange, + e.g. Customs or ECE + agreement. Code or + name as specified in + IA + ___________________________________________________________________ + + 0035 n1 C TEST INDICATOR Set = 1 if the + interchange is a test. + Otherwise not used + used +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/une.md b/docu/service-segments-spec/une.md new file mode 100644 index 0000000..b90c791 --- /dev/null +++ b/docu/service-segments-spec/une.md @@ -0,0 +1,18 @@ +#UNE, Functional Group Trailer + +### Function + +To end and check the completeness of a Functional Group + +``` + Ref. Repr. Name Remarks + + 0060 n..6 M NUMBER OF MESSAGES The count of the number + of messages in the + functional group + ___________________________________________________________________ + + 0048 an..14 M FUNCTIONAL GROUP Shall be identical to + REFERENCE NUMBER 0048 in UNG +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/unh.md b/docu/service-segments-spec/unh.md new file mode 100644 index 0000000..86e1729 --- /dev/null +++ b/docu/service-segments-spec/unh.md @@ -0,0 +1,60 @@ +# UNH, Message Header + +### Function + +To head, identify and specify a Message + +``` + Ref. Repr. Name Remarks + + 0062 an..14 M MESSAGE REFERENCE NUMBER A sender's unique + message reference + ___________________________________________________________________ + + S009 M MESSAGE IDENTIFIER + 0065 an..6 M Message type Type of message being + transmitted + 0052 an..3 M Message version number Version number of the + message type. If UNG is + used, 0052 shall be + identical + 0054 an..3 M Message release number Release number within + current version number + 0051 an..2 M Controlling agency Code to identify the + agency controlling the + specification, + maintenance and + publication of the + message type + 0057 an..6 C Association assigned A code assigned + code by the association + responsible for the + design and maintenance + of the message type + ___________________________________________________________________ + + 0068 an..35 C COMMON ACCESS REFERENCE Key to relate all + subsequent transfers of + data to the same + business case of + file. Within the + 35 characters the + IA may specify + component elements + ___________________________________________________________________ + + S010 C STATUS OF THE TRANSFER + 0070 n..2 M Sequence of transfers Starts at 1 and is + incremented by 1 for + each transfer + 0073 a1 C First and last transfer C = Creation, must be + present for first + transfer if more than + one foreseen + F = Final, must be + present for last + transfer + + *) Not required if provided in UNG +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/uns.md b/docu/service-segments-spec/uns.md new file mode 100644 index 0000000..92071fc --- /dev/null +++ b/docu/service-segments-spec/uns.md @@ -0,0 +1,21 @@ +# UNS, Section Control + +### Function + +To separate Header, Detail and Summary sections of a message + +> NOTE: To be used by message designers when required to avoid +ambiguities. Mandatory only if specified for the type of message +concerned. +``` + Ref. Repr. Name Remarks + + 0081 a1 M SECTION IDENTIFICATION Separates sections in + a message by one of + the following codes: + D separates the header + and detail sections + S separates the detail + and summary sections +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/unt.md b/docu/service-segments-spec/unt.md new file mode 100644 index 0000000..2eebfc6 --- /dev/null +++ b/docu/service-segments-spec/unt.md @@ -0,0 +1,17 @@ +# UNT, Message Trailer + +### Function + +To end and check the completeness of a Message + +``` + Ref. Repr. Name Remarks + + 0074 n..6 M NUMBER OF SEGMENTS IN THE Control count + MESSAGE including UNH and UNT + ___________________________________________________________________ + + 0062 an..14 M MESSAGE REFERENCE NUMBER Shall be identical to + 0062 in UNH +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/unz.md b/docu/service-segments-spec/unz.md new file mode 100644 index 0000000..7ecc80c --- /dev/null +++ b/docu/service-segments-spec/unz.md @@ -0,0 +1,99 @@ +# UNZ, Interchange Trailer + +### Function + +To end and check the completeness of an interchange + +``` + Ref. Repr. Name Remarks + + 0036 n..6 M INTERCHANGE CONTROL COUNT The count of the number + of messages or, if + used, the number of + functional groups in + the interchange. + One of these counts + shall appear. + ___________________________________________________________________ + + 0020 an..14 M INTERCHANGE CONTROL Shall be identical to + REFERENCE 0020 in UNB + + + + Segment: UNG, Functional Group Header + + Function: To head, identify and specify a Functional Group + + Ref. Repr. Name Remarks + + 0038 an..6 M FUNCTIONAL GROUP Identifies the one + IDENTIFICATION message type in the + functional group + ___________________________________________________________________ + + S006 M APPLICATION SENDER'S + IDENTIFICATION + 0040 an..35 M Application sender's Code or name identifying + identification the division, department + etc. within the + originating sender's + organization + 0007 an..4 C Partner identification May be used if sender + code qualifier identification is a code + ___________________________________________________________________ + + S007 M APPLICATION RECIPIENTS + IDENTIFICATION + 0044 an..35 M Recipient's Code or name + identification identifying + the division,department + etc. within the + recipients organization + for which the group of + messages is intended + 0007 an..4 C Recipients May be used if + identification qualifer recipient + identification is + a code + ___________________________________________________________________ + + S004 M DATE/TIME OF PREPARATION + 0017 n6 M Date YYMMDD + 0019 n4 M Time HHMM + ___________________________________________________________________ + + 0048 an..14 M FUNCTIONAL GROUP REFERENCE Unique reference + NUMBER number assigned + by sender's + division, department + etc. + ___________________________________________________________________ + + 0051 an..2 M CONTROLLING AGENCY Code to identify the + agency controlling the + specification, + maintenance and + publication of the + message type + ___________________________________________________________________ + + S008 M MESSAGE VERSION + 0052 an..3 M Message version number Version number of the + message type the + functional group + 0054 an..3 M Message release number Release number within + current version number + 0057 an..6 C Association assigned Code A code assigned by the + association responsible + for the design and + maintenance of the type + of message concerned + ___________________________________________________________________ + + 0058 an..14 C APPLICATION PASSWORD Password to recepient's + division, department or + sectional system (if + required) +``` +[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) From a421dd69f8e4557fd357d2ef1a7fa2295f4b381c Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 2 Jun 2020 00:13:20 +0200 Subject: [PATCH 04/12] Add link back to the docu service segments --- docu/README.md | 109 ++++++++++++++++++++++++++- docu/segments.md | 2 +- docu/service-segments-spec/README.md | 19 +++-- docu/service-segments-spec/txt.md | 2 + docu/service-segments-spec/una.md | 2 + docu/service-segments-spec/unb.md | 2 + docu/service-segments-spec/une.md | 2 + docu/service-segments-spec/unh.md | 2 + docu/service-segments-spec/uns.md | 2 + docu/service-segments-spec/unt.md | 2 + docu/service-segments-spec/unz.md | 2 + docu/what-is-edifact.md | 109 --------------------------- 12 files changed, 134 insertions(+), 121 deletions(-) delete mode 100644 docu/what-is-edifact.md diff --git a/docu/README.md b/docu/README.md index cce4da5..bd2e63a 100644 --- a/docu/README.md +++ b/docu/README.md @@ -1,6 +1,5 @@ # EDIFACT -* [What is EDIFACT?](what-is-edifact.md) * [Segments in EDIFACT?](segments.md) * [Service Segments Specification](service-segments-spec/README.md) * [UNA](service-segments-spec/una.md) (separators, delimiters...) @@ -10,3 +9,111 @@ * [UNT](service-segments-spec/unt.md) (message end) * [UNE](service-segments-spec/une.md) (group end) * [UNZ](service-segments-spec/unz.md) (file end) + +## What is EDIFACT? + +The UN/EDIFACT Syntax Rules were approved in 1987 as the "ISO 9735" by the +International Organization for Standardization. + +`EDIFACT` stands for "Electronic Data Interchange For Administration, Commerce and Transport". + +The `EDIFACT` standard provides: + +* a set of syntax rules to structure data +* an interactive exchange protocol (I-EDI) +* standard messages which allow multi-country and multi-industry exchange + +The `EDIFACT` standards cover transaction sets (the business documents that you wish to transmit), +data element directories and syntax rules which cover delimiter characters etc. + +* An `EDIFACT` electronic transmission consists of one or more Interchanges. +* Each Interchange may consist of one or more Messages. +* These Messages contain segments of data relating to the business transaction. +* At each level, a series of enveloping data pairs keep track of the exchange structure. + +## Service Segments + +All of these `EDIFACT` messages have the same basic structure, consisting of a sequence of segments: + +``` +UNA – separators, delimiters and special characters are defined for the interpreting software +UNB – file header (with the file end "UNZ" this makes up the envelope, containing basic information) +UNG – group start +UNH – message header +UNT – message end +UNE – group end +UNZ – file end +``` + +You can also visualize these lines as something like: + +``` + |_Service String Advice UNA Optional + |____Interchange Header UNB Mandatory + : |___Functional Group Header UNG Conditional + : : |___Message Header UNH Mandatory + : : : |__ User Data Segments As required + : : |__ Message Trailer UNT Mandatory + : |__ Functional Group Trailer UNE Conditional + |___ Interchange Trailer UNZ Mandatory +``` + +## Structure + +`EDIFACT` has a hierarchical structure where the **top level is referred to as an interchange**, +and **lower levels contain multiple messages which consist of [segments](segments.md)**, which in turn consist +of composites. The final iteration is an element which is derived from the United Nations Trade +Data Element Directory (UNTDED); these are normalised throughout the `EDIFACT` standard. + +### Examples + +* An EDIFACT EDI Purchase Order [(source)](https://www.edi-plus.com/resources/message-formats/edifact/) + +``` +UNB+UNOA:1+US::US+50138::THEM+140531:0305+001934++ORDERS' +UNH+1+ORDERS:91:2:UN' +BGM+220+A761902+4:20140530:102+9' +RFF+CT:EUA01349' +RFF+AAV::C' +TXT+THIS IS WHAT AN EDI MESSAGE WOULD LOOK LIKE... ' +NAD+BY++OUR NAME PLC::::+++++EW4 34J' +CTA+PD' +COM+01752 253939:TE+01752 253939:FX+0:TL' +CTA+OC+:A.SURNAME' +COM+2407:EX' +CTA+TI+:B.BROWN' +COM+0:EX' +CTA+SU' +COM+0161 4297476:TE+01752 670633:FX' +UNT+15+1' +UNZ+1+001934' +``` + +* Used to answer a flight ticket (FRA-JFK-MIA) availability request [(source)](https://en.wikipedia.org/wiki/EDIFACT) + +``` +UNA:+.? ' +UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1' +UNH+1+PAORES:93:1:IA' +MSG+1:45' +IFT+3+XYZCOMPANY AVAILABILITY' +ERC+A7V:1:AMD' +IFT+3+NO MORE FLIGHTS' +ODI' +TVL+240493:1000::1220+FRA+JFK+DL+400+C' +PDI++C:3+Y::3+F::1' +APD+74C:0:::6++++++6X' +TVL+240493:1740::2030+JFK+MIA+DL+081+C' +PDI++C:4' +APD+EM2:0:1630::6+++++++DA' +UNT+13+1' +UNZ+1+1' +``` + +## References + +* [EDIFACT | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) +* [Message formats | Edi-plus](https://www.edi-plus.com/resources/message-formats/edifact/) +* [Edifile formats explained | ecosio](https://ecosio.com/en/blog/edi-file-formats-explained/) +* [Structure of an Edifact file | unece](https://ecosio.com/en/blog/edi-standards-overview-structure-of-an-edifact-file/) +* [Syntax Rules | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm) diff --git a/docu/segments.md b/docu/segments.md index d8fa4b8..d230a18 100644 --- a/docu/segments.md +++ b/docu/segments.md @@ -26,7 +26,7 @@ EDIFACT Segment tables also specify if a segment must appear in a message using ### There are two kinds of segments -* Service Segments +* [Service Segments](service-segments-spec/README.md) * Generic Segments #### Service Segments diff --git a/docu/service-segments-spec/README.md b/docu/service-segments-spec/README.md index 69c0a96..40e77d9 100644 --- a/docu/service-segments-spec/README.md +++ b/docu/service-segments-spec/README.md @@ -4,16 +4,15 @@ The full description of the data elements in the service segments is part of ISO 7372 Trade Data Elements Directory (UNTDED). -* [UNA](service-segments-spec/una.md) (separators, delimiters...) -* [UNB](service-segments-spec/unb.md) (file header) -* [UNG](service-segments-spec/ung.md) (group start) -* [UNH](service-segments-spec/unh.md) (message header) -* [UNT](service-segments-spec/unt.md) (message end) -* [UNE](service-segments-spec/une.md) (group end) -* [UNZ](service-segments-spec/unz.md) (file end) -* [UNS](service-segments-spec/uns.md) (section control) -* [TXT](service-segments-spec/txt.md) (additional info) - +* [UNA](una.md) (separators, delimiters...) +* [UNB](unb.md) (file header) +* [UNG](ung.md) (group start) +* [UNH](unh.md) (message header) +* [UNT](unt.md) (message end) +* [UNE](une.md) (group end) +* [UNZ](unz.md) (file end) +* [UNS](uns.md) (section control) +* [TXT](txt.md) (additional info) Legend: diff --git a/docu/service-segments-spec/txt.md b/docu/service-segments-spec/txt.md index b9520c5..e401334 100644 --- a/docu/service-segments-spec/txt.md +++ b/docu/service-segments-spec/txt.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # TXT, Text ###Function diff --git a/docu/service-segments-spec/una.md b/docu/service-segments-spec/una.md index cd479d2..2348549 100644 --- a/docu/service-segments-spec/una.md +++ b/docu/service-segments-spec/una.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNA, Service String advice ### Function diff --git a/docu/service-segments-spec/unb.md b/docu/service-segments-spec/unb.md index 7b1b102..901e1ca 100644 --- a/docu/service-segments-spec/unb.md +++ b/docu/service-segments-spec/unb.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNB, Interchange Header ### Function diff --git a/docu/service-segments-spec/une.md b/docu/service-segments-spec/une.md index b90c791..41037b7 100644 --- a/docu/service-segments-spec/une.md +++ b/docu/service-segments-spec/une.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + #UNE, Functional Group Trailer ### Function diff --git a/docu/service-segments-spec/unh.md b/docu/service-segments-spec/unh.md index 86e1729..33f6280 100644 --- a/docu/service-segments-spec/unh.md +++ b/docu/service-segments-spec/unh.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNH, Message Header ### Function diff --git a/docu/service-segments-spec/uns.md b/docu/service-segments-spec/uns.md index 92071fc..6bacff2 100644 --- a/docu/service-segments-spec/uns.md +++ b/docu/service-segments-spec/uns.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNS, Section Control ### Function diff --git a/docu/service-segments-spec/unt.md b/docu/service-segments-spec/unt.md index 2eebfc6..d65bac0 100644 --- a/docu/service-segments-spec/unt.md +++ b/docu/service-segments-spec/unt.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNT, Message Trailer ### Function diff --git a/docu/service-segments-spec/unz.md b/docu/service-segments-spec/unz.md index 7ecc80c..9ee00d2 100644 --- a/docu/service-segments-spec/unz.md +++ b/docu/service-segments-spec/unz.md @@ -1,3 +1,5 @@ +[Go back to the list](README.md) + # UNZ, Interchange Trailer ### Function diff --git a/docu/what-is-edifact.md b/docu/what-is-edifact.md deleted file mode 100644 index 6fc5bab..0000000 --- a/docu/what-is-edifact.md +++ /dev/null @@ -1,109 +0,0 @@ -# EDIFACT - -## What is EDIFACT? - -The UN/EDIFACT Syntax Rules were approved in 1987 as the "ISO 9735" by the -International Organization for Standardization. - -`EDIFACT` stands for "Electronic Data Interchange For Administration, Commerce and Transport". - -The `EDIFACT` standard provides: - -* a set of syntax rules to structure data -* an interactive exchange protocol (I-EDI) -* standard messages which allow multi-country and multi-industry exchange - -The `EDIFACT` standards cover transaction sets (the business documents that you wish to transmit), -data element directories and syntax rules which cover delimiter characters etc. - -* An `EDIFACT` electronic transmission consists of one or more Interchanges. -* Each Interchange may consist of one or more Messages. -* These Messages contain segments of data relating to the business transaction. -* At each level, a series of enveloping data pairs keep track of the exchange structure. - -## Service Segments - -All of these `EDIFACT` messages have the same basic structure, consisting of a sequence of segments: - -``` -UNA – separators, delimiters and special characters are defined for the interpreting software -UNB – file header (with the file end "UNZ" this makes up the envelope, containing basic information) -UNG – group start -UNH – message header -UNT – message end -UNE – group end -UNZ – file end -``` - -You can also visualize these lines as something like: - -``` - |_Service String Advice UNA Optional - |____Interchange Header UNB Mandatory - : |___Functional Group Header UNG Conditional - : : |___Message Header UNH Mandatory - : : : |__ User Data Segments As required - : : |__ Message Trailer UNT Mandatory - : |__ Functional Group Trailer UNE Conditional - |___ Interchange Trailer UNZ Mandatory -``` - -## Structure - -`EDIFACT` has a hierarchical structure where the **top level is referred to as an interchange**, -and **lower levels contain multiple messages which consist of [segments](segments.md)**, which in turn consist -of composites. The final iteration is an element which is derived from the United Nations Trade -Data Element Directory (UNTDED); these are normalised throughout the `EDIFACT` standard. - -### Examples - -* An EDIFACT EDI Purchase Order [(source)](https://www.edi-plus.com/resources/message-formats/edifact/) - -``` -UNB+UNOA:1+US::US+50138::THEM+140531:0305+001934++ORDERS' -UNH+1+ORDERS:91:2:UN' -BGM+220+A761902+4:20140530:102+9' -RFF+CT:EUA01349' -RFF+AAV::C' -TXT+THIS IS WHAT AN EDI MESSAGE WOULD LOOK LIKE... ' -NAD+BY++OUR NAME PLC::::+++++EW4 34J' -CTA+PD' -COM+01752 253939:TE+01752 253939:FX+0:TL' -CTA+OC+:A.SURNAME' -COM+2407:EX' -CTA+TI+:B.BROWN' -COM+0:EX' -CTA+SU' -COM+0161 4297476:TE+01752 670633:FX' -UNT+15+1' -UNZ+1+001934' -``` - -* Used to answer a flight ticket (FRA-JFK-MIA) availability request [(source)](https://en.wikipedia.org/wiki/EDIFACT) - -``` -UNA:+.? ' -UNB+IATB:1+6XPPC:ZZ+LHPPC:ZZ+940101:0950+1' -UNH+1+PAORES:93:1:IA' -MSG+1:45' -IFT+3+XYZCOMPANY AVAILABILITY' -ERC+A7V:1:AMD' -IFT+3+NO MORE FLIGHTS' -ODI' -TVL+240493:1000::1220+FRA+JFK+DL+400+C' -PDI++C:3+Y::3+F::1' -APD+74C:0:::6++++++6X' -TVL+240493:1740::2030+JFK+MIA+DL+081+C' -PDI++C:4' -APD+EM2:0:1630::6+++++++DA' -UNT+13+1' -UNZ+1+1' -``` - -## References - -* [EDIFACT | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) -* [Message formats | Edi-plus](https://www.edi-plus.com/resources/message-formats/edifact/) -* [Edifile formats explained | ecosio](https://ecosio.com/en/blog/edi-file-formats-explained/) -* [Structure of an Edifact file | unece](https://ecosio.com/en/blog/edi-standards-overview-structure-of-an-edifact-file/) -* [Syntax Rules | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm) From 8eaf1eb3fed47476d93d638021882d73c4652669 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 2 Jun 2020 00:27:13 +0200 Subject: [PATCH 05/12] Refactor docu: move segments to its own dir --- README.md | 6 +- docu/README.md | 20 ++--- docu/{segments.md => segments/README.md} | 2 +- .../service-segments-spec.md} | 6 +- .../txt.md | 2 +- .../una.md | 2 +- .../unb.md | 2 +- .../une.md | 2 +- docu/segments/ung.md | 80 +++++++++++++++++++ .../unh.md | 2 +- .../uns.md | 2 +- .../unt.md | 2 +- .../unz.md | 2 +- 13 files changed, 108 insertions(+), 22 deletions(-) rename docu/{segments.md => segments/README.md} (99%) rename docu/{service-segments-spec/README.md => segments/service-segments-spec.md} (91%) rename docu/{service-segments-spec => segments}/txt.md (95%) rename docu/{service-segments-spec => segments}/una.md (95%) rename docu/{service-segments-spec => segments}/unb.md (98%) rename docu/{service-segments-spec => segments}/une.md (93%) create mode 100644 docu/segments/ung.md rename docu/{service-segments-spec => segments}/unh.md (98%) rename docu/{service-segments-spec => segments}/uns.md (94%) rename docu/{service-segments-spec => segments}/unt.md (92%) rename docu/{service-segments-spec => segments}/unz.md (99%) diff --git a/README.md b/README.md index b0946b2..618e553 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,11 @@ Ok, but... [What is EDIFACT?](/docu/what-is-edifact.md) ## Format of an EDIFACT file * Each line of the file consists of a set of data that belongs to a specific segment of a message. -* A segment is defined by its name (the first 3chars of the line), following up by the "sub-segment-key". -Following the rest of the data that belongs to that segment. See more about segments [here](/docu/segments.md). + +* A segment is defined by a tag. Following the rest of the data that belongs to that segment. More about segments [here](/docu/segments/README.md). + * A message is a list of segments. Usually, all segments between the UNH and UNT segments compound a message. + * A transaction is the list of messages that belongs to a file. ## Installation as vendor diff --git a/docu/README.md b/docu/README.md index bd2e63a..3ef210d 100644 --- a/docu/README.md +++ b/docu/README.md @@ -1,14 +1,14 @@ # EDIFACT -* [Segments in EDIFACT?](segments.md) -* [Service Segments Specification](service-segments-spec/README.md) - * [UNA](service-segments-spec/una.md) (separators, delimiters...) - * [UNB](service-segments-spec/unb.md) (file header) - * [UNG](service-segments-spec/ung.md) (group start) - * [UNH](service-segments-spec/unh.md) (message header) - * [UNT](service-segments-spec/unt.md) (message end) - * [UNE](service-segments-spec/une.md) (group end) - * [UNZ](service-segments-spec/unz.md) (file end) +* [Segments in EDIFACT?](segments/README.md) +* [Service Segments Specification](segments/service-segments-spec.md) + * [UNA](segments/una.md) (separators, delimiters...) + * [UNB](segments/unb.md) (file header) + * [UNG](segments/ung.md) (group start) + * [UNH](segments/unh.md) (message header) + * [UNT](segments/unt.md) (message end) + * [UNE](segments/une.md) (group end) + * [UNZ](segments/unz.md) (file end) ## What is EDIFACT? @@ -61,7 +61,7 @@ You can also visualize these lines as something like: ## Structure `EDIFACT` has a hierarchical structure where the **top level is referred to as an interchange**, -and **lower levels contain multiple messages which consist of [segments](segments.md)**, which in turn consist +and **lower levels contain multiple messages which consist of [segments](segments/README.md)**, which in turn consist of composites. The final iteration is an element which is derived from the United Nations Trade Data Element Directory (UNTDED); these are normalised throughout the `EDIFACT` standard. diff --git a/docu/segments.md b/docu/segments/README.md similarity index 99% rename from docu/segments.md rename to docu/segments/README.md index d230a18..da83bad 100644 --- a/docu/segments.md +++ b/docu/segments/README.md @@ -26,7 +26,7 @@ EDIFACT Segment tables also specify if a segment must appear in a message using ### There are two kinds of segments -* [Service Segments](service-segments-spec/README.md) +* [Service Segments](service-segments-spec.md) * Generic Segments #### Service Segments diff --git a/docu/service-segments-spec/README.md b/docu/segments/service-segments-spec.md similarity index 91% rename from docu/service-segments-spec/README.md rename to docu/segments/service-segments-spec.md index 40e77d9..8f903ce 100644 --- a/docu/service-segments-spec/README.md +++ b/docu/segments/service-segments-spec.md @@ -1,5 +1,7 @@ # Service Segments Specifications +[Segments in EDIFACT?](README.md) + The full description of the data elements in the service segments is part of ISO 7372 Trade Data Elements Directory (UNTDED). @@ -49,4 +51,6 @@ Remarks IA Interchange Agreement between interchanging partners ``` -[(source)](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) +## References + +* [Structures | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures) diff --git a/docu/service-segments-spec/txt.md b/docu/segments/txt.md similarity index 95% rename from docu/service-segments-spec/txt.md rename to docu/segments/txt.md index e401334..4925cf2 100644 --- a/docu/service-segments-spec/txt.md +++ b/docu/segments/txt.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # TXT, Text diff --git a/docu/service-segments-spec/una.md b/docu/segments/una.md similarity index 95% rename from docu/service-segments-spec/una.md rename to docu/segments/una.md index 2348549..45047e5 100644 --- a/docu/service-segments-spec/una.md +++ b/docu/segments/una.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNA, Service String advice diff --git a/docu/service-segments-spec/unb.md b/docu/segments/unb.md similarity index 98% rename from docu/service-segments-spec/unb.md rename to docu/segments/unb.md index 901e1ca..d7dc618 100644 --- a/docu/service-segments-spec/unb.md +++ b/docu/segments/unb.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNB, Interchange Header diff --git a/docu/service-segments-spec/une.md b/docu/segments/une.md similarity index 93% rename from docu/service-segments-spec/une.md rename to docu/segments/une.md index 41037b7..3542b4a 100644 --- a/docu/service-segments-spec/une.md +++ b/docu/segments/une.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) #UNE, Functional Group Trailer diff --git a/docu/segments/ung.md b/docu/segments/ung.md new file mode 100644 index 0000000..44d294c --- /dev/null +++ b/docu/segments/ung.md @@ -0,0 +1,80 @@ +[Go back to the list](service-segments-spec.md) + +# UNG, Functional Group Header + +### Function + +To head, identify and specify a Functional Group + +``` + Ref. Repr. Name Remarks + + 0038 an..6 M FUNCTIONAL GROUP Identifies the one + IDENTIFICATION message type in the + functional group + ___________________________________________________________________ + + S006 M APPLICATION SENDER'S + IDENTIFICATION + 0040 an..35 M Application sender's Code or name identifying + identification the division, department + etc. within the + originating sender's + organization + 0007 an..4 C Partner identification May be used if sender + code qualifier identification is a code + ___________________________________________________________________ + + S007 M APPLICATION RECIPIENTS + IDENTIFICATION + 0044 an..35 M Recipient's Code or name + identification identifying + the division,department + etc. within the + recipients organization + for which the group of + messages is intended + 0007 an..4 C Recipients May be used if + identification qualifer recipient + identification is + a code + ___________________________________________________________________ + + S004 M DATE/TIME OF PREPARATION + 0017 n6 M Date YYMMDD + 0019 n4 M Time HHMM + ___________________________________________________________________ + + 0048 an..14 M FUNCTIONAL GROUP REFERENCE Unique reference + NUMBER number assigned + by sender's + division, department + etc. + ___________________________________________________________________ + + 0051 an..2 M CONTROLLING AGENCY Code to identify the + agency controlling the + specification, + maintenance and + publication of the + message type + ___________________________________________________________________ + + S008 M MESSAGE VERSION + 0052 an..3 M Message version number Version number of the + message type the + functional group + 0054 an..3 M Message release number Release number within + current version number + 0057 an..6 C Association assigned Code A code assigned by the + association responsible + for the design and + maintenance of the type + of message concerned + ___________________________________________________________________ + + 0058 an..14 C APPLICATION PASSWORD Password to recepient's + division, department or + sectional system (if + required) +``` diff --git a/docu/service-segments-spec/unh.md b/docu/segments/unh.md similarity index 98% rename from docu/service-segments-spec/unh.md rename to docu/segments/unh.md index 33f6280..871d789 100644 --- a/docu/service-segments-spec/unh.md +++ b/docu/segments/unh.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNH, Message Header diff --git a/docu/service-segments-spec/uns.md b/docu/segments/uns.md similarity index 94% rename from docu/service-segments-spec/uns.md rename to docu/segments/uns.md index 6bacff2..4f02326 100644 --- a/docu/service-segments-spec/uns.md +++ b/docu/segments/uns.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNS, Section Control diff --git a/docu/service-segments-spec/unt.md b/docu/segments/unt.md similarity index 92% rename from docu/service-segments-spec/unt.md rename to docu/segments/unt.md index d65bac0..3779454 100644 --- a/docu/service-segments-spec/unt.md +++ b/docu/segments/unt.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNT, Message Trailer diff --git a/docu/service-segments-spec/unz.md b/docu/segments/unz.md similarity index 99% rename from docu/service-segments-spec/unz.md rename to docu/segments/unz.md index 9ee00d2..5ce3cb7 100644 --- a/docu/service-segments-spec/unz.md +++ b/docu/segments/unz.md @@ -1,4 +1,4 @@ -[Go back to the list](README.md) +[Go back to the list](service-segments-spec.md) # UNZ, Interchange Trailer From ab1181cf3b838ef8d5d73fd2b1ff5e532271fd66 Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 2 Jun 2020 00:50:21 +0200 Subject: [PATCH 06/12] Added edifact structure image --- docu/segments/EDIFACT-structure.png | Bin 0 -> 88197 bytes docu/segments/README.md | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 docu/segments/EDIFACT-structure.png diff --git a/docu/segments/EDIFACT-structure.png b/docu/segments/EDIFACT-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..b503256dc2d768c707ef90f8c478ec8bd316cfec GIT binary patch literal 88197 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 z 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 literal 0 HcmV?d00001 diff --git a/docu/segments/README.md b/docu/segments/README.md index da83bad..62ca6e3 100644 --- a/docu/segments/README.md +++ b/docu/segments/README.md @@ -49,6 +49,9 @@ The end of each segment is determined by the Data Segment Terminator. In EDIFACT the standard data segment terminator is `'`. --- +## Structure + +![Image of the EDIFACT structure](EDIFACT-structure.png) An interchange consists of: From 30b182379637093db74191c1d4f105cec46114cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Valera=20Reales?= Date: Tue, 2 Jun 2020 18:54:41 +0200 Subject: [PATCH 07/12] Update docu/segments/txt.md --- docu/segments/txt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/segments/txt.md b/docu/segments/txt.md index 4925cf2..b3416a7 100644 --- a/docu/segments/txt.md +++ b/docu/segments/txt.md @@ -2,7 +2,7 @@ # TXT, Text -###Function +### Function To give information in addition to that in other segments in the service message, as required From 36918afd14b3835757f9bfa1c2b32366fa60748e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Valera=20Reales?= Date: Tue, 2 Jun 2020 18:54:59 +0200 Subject: [PATCH 08/12] Update docu/segments/une.md --- docu/segments/une.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/segments/une.md b/docu/segments/une.md index 3542b4a..84c93b9 100644 --- a/docu/segments/une.md +++ b/docu/segments/une.md @@ -1,6 +1,6 @@ [Go back to the list](service-segments-spec.md) -#UNE, Functional Group Trailer +# UNE, Functional Group Trailer ### Function From 4537347c14794fa976d8494818124400fb9cf79b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Valera=20Reales?= Date: Tue, 2 Jun 2020 18:55:06 +0200 Subject: [PATCH 09/12] Update docu/segments/README.md --- docu/segments/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docu/segments/README.md b/docu/segments/README.md index 62ca6e3..8096b72 100644 --- a/docu/segments/README.md +++ b/docu/segments/README.md @@ -124,10 +124,10 @@ into sections. See annex B. | | | | contains: --|------|--- - Component data elements | | - ------- ------- A COMPONENT DATA ELEMENT - | | | | contains: - |Value| |Value| - A single data element - ------- ------- value + ------- ------- A COMPONENT DATA ELEMENT + | | | | contains: + |Value| |Value| - A single data element + ------- ------- value --.-- --|-- . means alternative to | From edadd25712b2ca342c6e3b51307939641df3be6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Valera=20Reales?= Date: Tue, 2 Jun 2020 18:55:15 +0200 Subject: [PATCH 10/12] Update docu/segments/README.md --- docu/segments/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/segments/README.md b/docu/segments/README.md index 8096b72..bf6e0e4 100644 --- a/docu/segments/README.md +++ b/docu/segments/README.md @@ -117,7 +117,7 @@ into sections. See annex B. | | | | repeating and nesting | | | | value(s). | | | | - | | | | A SIMPLE DATA ELEMENT contains + | | | | A SIMPLE DATA ELEMENT contains -------------- ------- ------------- - A single data element |Code|:|Value| |Value| |COMP|:|COMP| value -------------- ------- |D/E | |D/E | A COMPOSITE DATA ELEMENT From 4870a2f800d2232d341f5901692f543e6ecb9332 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Valera=20Reales?= Date: Tue, 2 Jun 2020 18:55:23 +0200 Subject: [PATCH 11/12] Update docu/segments/README.md --- docu/segments/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/segments/README.md b/docu/segments/README.md index bf6e0e4..a735089 100644 --- a/docu/segments/README.md +++ b/docu/segments/README.md @@ -89,7 +89,7 @@ into sections. See annex B. .....--------------+--------------------+ - UNZ, Interchange trailer . | | ----------------------------------------- -|UNA|UNB|'| Either |or only |UNZ|'| A FUNCTIONAL GROUP contains +|UNA|UNB|'| Either |or only |UNZ|'| A FUNCTIONAL GROUP contains | | | |FUNCTION.GRPS|MESSAGES | | | - UNG, Functional group -----------------|----------.------------ header | . - Messages of the same From 4c25d1691297b22b0ce73cbce1a8f65a5a8ae0ad Mon Sep 17 00:00:00 2001 From: Chemaclass Date: Tue, 2 Jun 2020 21:18:14 +0200 Subject: [PATCH 12/12] Fix links to the README --- docu/README.md | 18 +++++++++--------- docu/segments/README.md | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docu/README.md b/docu/README.md index 3ef210d..cc7b4fa 100644 --- a/docu/README.md +++ b/docu/README.md @@ -1,14 +1,14 @@ # EDIFACT -* [Segments in EDIFACT?](segments/README.md) -* [Service Segments Specification](segments/service-segments-spec.md) - * [UNA](segments/una.md) (separators, delimiters...) - * [UNB](segments/unb.md) (file header) - * [UNG](segments/ung.md) (group start) - * [UNH](segments/unh.md) (message header) - * [UNT](segments/unt.md) (message end) - * [UNE](segments/une.md) (group end) - * [UNZ](segments/unz.md) (file end) +* Segments in EDIFACT? +* Service Segments Specification + * UNA (separators, delimiters...) + * UNB (file header) + * UNG (group start) + * UNH (message header) + * UNT (message end) + * UNE (group end) + * UNZ (file end) ## What is EDIFACT? diff --git a/docu/segments/README.md b/docu/segments/README.md index 62ca6e3..c6b921a 100644 --- a/docu/segments/README.md +++ b/docu/segments/README.md @@ -135,6 +135,7 @@ into sections. See annex B. ## References -* [EDIFACT | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) +* [Edifact | Wikipedia](https://en.wikipedia.org/wiki/EDIFACT) * [Edifact Segment | Ediacademy](https://ediacademy.com/blog/edifact-segment/) +* [Structure of an Edifact file | ecosio](https://ecosio.com/en/blog/edi-standards-overview-structure-of-an-edifact-file/) * [Structures | unece](http://www.unece.org/fileadmin/DAM/trade/edifact/untdid/d422_s.htm#structures)