The EDIFACTWriter class is optimized for EDIFACT documents, providing a simple way to create EDIFACT documents.
The class allows you to create a document from scratch. The class allows you to create an EDI document one segment at a time. Here's how a document would normally be created:
- Call LoadSchema to load the necessary schemas for the transactions that will be used.
- Specify where to write the output document by setting the OutputFile property or SetOutputStream method, or set neither and check the OutputData property.
- Create a new interchange start segment using the StartInterchangeHeader method and set its properties using WriteElementString and WriteComponentString.
- To write a basic element value to the current location, call the WriteElementString method. For complex element values, there are two possibilities, elements which are split into components, and elements which repeat. To write these complex element values, use the StartElement and EndElement methods, with WriteComponentString and RepeatElement methods for writing the values. (Examples available below).
- Create a new functional group using StartFunctionalGroupHeader and set its properties using WriteElementString and WriteComponentString.
- Create a new transaction using StartTransactionHeader and set the properties for the header segment.
- Write all the data for the transaction by creating new data segments using StartSegment and providing the path of the segment to create using the schema names of the loops and segments, like /N1Loop1/N1.
- Once you are done with the segment, call EndSegment.
- Once you are done with the transaction, call CreateTransactionFooter.
- Once you are done with the functional group, call CreateFunctionalGroupFooter.
- Once the interchange is complete, call CreateInterchangeFooter.
Example EDIFACTWriter Code:
EDIWriter1.StartInterchangeHeader("D98B"); //Complex Element, two components EDIWriter1.StartElement(); EDIWriter1.WriteComponentString("UNOB"); EDIWriter1.WriteComponentString("1"); EDIWriter1.EndElement(); //Skip a value for this element EDIWriter1.SkipElement(); //Basic element EDIWriter1.WriteElementString("7654323"); ... EDIWriter1.StartFunctionalGroupHeader(); ... EDIWriter1.StartTransactionHeader("APERAK"); //Complex Element, repeated element EDIWriter1.StartElement(); EDIWriter1.WriteComponentString("UNH1"); EDIWriter1.RepeatElement(); EDIWriter1.WriteComponentString("UNH2"); EDIWriter1.EndElement(); ... //Segment and its data EDIWriter1.StartSegment("BGM"); EDIWriter1.StartElement(); EDIWriter1.WriteComponentString("C00"); EDIWriter1.EndElement(); EDIWriter1.StartElement(); EDIWriter1.WriteComponentString("C10601"); EDIWriter1.EndElement(); EDIWriter1.EndSegment(); ... CreateTransactionFooter(); CreateFunctionalGroupFooter(); CreateInterchangeFooter();
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
|FileWriteMode||Controls how the output file is opened.|
|OutputData||Contains the output data.|
|OutputFile||Specifies the name of the EDI file to write to.|
|SchemaFormat||The format of the schema file.|
|Suffix||What to append after each segment delimiter.|
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
|CompileSchema||Compiles an existing XSD schema into an optimized binary representation.|
|Config||Sets or retrieves a configuration setting.|
|CreateFunctionalGroupFooter||Closes the current functional group by writing its footer segment.|
|CreateInterchangeFooter||Closes the current interchange by writing its footer segment.|
|CreateTransactionFooter||Closes the current transaction set by writing its footer segment.|
|DisplaySchemaInfo||Returns a string showing the structure of the schema defining the document.|
|EndElement||Finishes the current composite data element.|
|EndSegment||Ends writing the current segment.|
|Flush||Forces any pending segments to be written to the output stream without closing it.|
|LoadSchema||Loads a schema file describing a Transaction Set.|
|RepeatElement||Adds a new repetition to the current element.|
|Reset||Resets the state of the control.|
|SkipComponent||Moves to the next sub-element in the current composite element in the current segment.|
|SkipElement||Moves to the next data element in the current segment.|
|StartElement||Starts a new EDI composite data element on the current segment.|
|StartFunctionalGroupHeader||Creates a new EDI functional group header segment on the current document.|
|StartInterchangeHeader||Creates a new EDI Interchange header segment on the current document.|
|StartSegment||Creates a new EDI data segment on the current document.|
|StartTransactionHeader||Creates a new EDI transaction set header on the current document.|
|WriteComponentString||Sets the value of the next class within the current element in the current segment.|
|WriteElementString||Sets a value of the next element in the current segment to a simple value.|
|WriteTransaction||Writes an entire transaction to the output.|
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
|Error||Information about errors during data delivery.|
|Output||Fires whenever a segment is complete.|
|Warning||Fires whenever a validation warning is encountered.|
The following is a list of configuration settings for the class with short descriptions. Click on the links for further details.
|ComponentDelimiter||The delimiter character to use to separate classes.|
|EdifactSyntaxVersion||Changes the syntax version used for EDIFACT control segments.|
|ElementDelimiter||The delimiter character to use to separate data elements.|
|Encoding||The character encoding to be applied when reading and writing data.|
|IncludeUNA||Whether to include the UNA segment in the output.|
|ReleaseChar||The character to use to escape delimiters within values.|
|RepetitionChar||The repetition character.|
|SegmentDelimiter||The delimiter character to use to separate segments.|
|StrictSchemaValidation||Specifies the behavior during schema validation.|
|TransactionOnly||Ignores interchange and functional group validation, allowing you to build the transaction body.|
|BuildInfo||Information about the product's build.|
|CodePage||The system code page used for Unicode to Multibyte translations.|
|LicenseInfo||Information about the current license.|
|ProcessIdleEvents||Whether the class uses its internal event loop to process events when the main thread is idle.|
|SelectWaitMillis||The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.|
|UseInternalSecurityAPI||Tells the class whether or not to use the system security libraries or an internal implementation.|