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 load_schema to load the necessary schemas for the transactions that will be used.
- Specify where to write the output document by setting the output_file property or set_output_stream method, or set neither and check the output_data property.
- Create a new interchange start segment using the start_interchange_header method and set its properties using write_element_string and write_component_string.
- To write a basic element value to the current location, call the write_element_string 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 start_element and end_element methods, with write_component_string and repeat_element methods for writing the values. (Examples available below).
- Create a new functional group using start_functional_group_header and set its properties using write_element_string and write_component_string.
- Create a new transaction using start_transaction_header and set the properties for the header segment.
- Write all the data for the transaction by creating new data segments using start_segment 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 end_segment.
- Once you are done with the transaction, call create_transaction_footer.
- Once you are done with the functional group, call create_functional_group_footer.
- Once the interchange is complete, call create_interchange_footer.
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.
|file_write_mode||Controls how the output file is opened.|
|output_data||Contains the output data.|
|output_file||Specifies the name of the EDI file to write to.|
|schema_format||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.
|compile_schema||Compiles an existing XSD schema into an optimized binary representation.|
|config||Sets or retrieves a configuration setting.|
|create_functional_group_footer||Closes the current functional group by writing its footer segment.|
|create_interchange_footer||Closes the current interchange by writing its footer segment.|
|create_transaction_footer||Closes the current transaction set by writing its footer segment.|
|display_schema_info||Returns a string showing the structure of the schema defining the document.|
|end_element||Finishes the current composite data element.|
|end_segment||Ends writing the current segment.|
|flush||Forces any pending segments to be written to the output stream without closing it.|
|load_schema||Loads a schema file describing a Transaction Set.|
|repeat_element||Adds a new repetition to the current element.|
|reset||Resets the state of the control.|
|skip_component||Moves to the next sub-element in the current composite element in the current segment.|
|skip_element||Moves to the next data element in the current segment.|
|start_element||Starts a new EDI composite data element on the current segment.|
|start_functional_group_header||Creates a new EDI functional group header segment on the current document.|
|start_interchange_header||Creates a new EDI Interchange header segment on the current document.|
|start_segment||Creates a new EDI data segment on the current document.|
|start_transaction_header||Creates a new EDI transaction set header on the current document.|
|write_component_string||Sets the value of the next class within the current element in the current segment.|
|write_element_string||Sets a value of the next element in the current segment to a simple value.|
|write_transaction||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.
|on_error||Information about errors during data delivery.|
|on_output||Fires whenever a segment is complete.|
|on_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.|