private void btnGenerate_Click(object sender, System.EventArgs e)
        {
            // This is just an example program to demonstrate how to generate an EDI X12 210 file using Framework EDI component in C#

            ediDocument oEdiDoc = null;
            ediSchema oSchema = null;
            ediSchemas oSchemas = null;
            ediInterchange oInterchange = null;
            ediGroup oGroup = null;
            ediTransactionSet oTransactionset = null;
            ediDataSegment oSegment = null;

            btnGenerate.Enabled = false;

            string sPath = AppDomain.CurrentDomain.BaseDirectory;
            string sEdiFile = "210Output.X12";
            string sSefFile = "210_003070.SEF";

 
            //CREATES EDI DOCUMENT OBJECT
            ediDocument.Set(ref oEdiDoc, new ediDocument());
 
            //THIS MAKES CERTAIN THAT FREDI ONLY USES THE SEF FILE PROVIDED, AND THAT IT DOES 
            //NOT USE ITS BUILT-IN STANDARD REFERENCE TABLE TO GENERATE THE EDI FILE. IMPROVES PERFORMANCE
            ediSchemas.Set(ref oSchemas,(ediSchemas) oEdiDoc.GetSchemas());
            oSchemas.EnableStandardReference = false;
 
            //ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE
            oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite;
            oEdiDoc.set_Property(DocumentPropertyIDConstants.Property_DocumentBufferIO, 2000);
 
            //SET TERMINATORS
            oEdiDoc.SegmentTerminator = "~";
            oEdiDoc.ElementTerminator = "*";
            oEdiDoc.CompositeTerminator = ">";
 
            //LOADS THE SEF FILE
            ediSchema.Set(ref oSchema, (ediSchema) oEdiDoc.LoadSchema(sPath + sSefFile, 0));
 
            //CREATES THE ISA SEGMENT
            ediInterchange.Set(ref oInterchange, (ediInterchange) oEdiDoc.CreateInterchange("X","003070"));
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oInterchange.GetDataSegmentHeader());
            oSegment.set_DataElementValue(1,0,"00");     //Authorization Information Qualifier
            oSegment.set_DataElementValue(2,0,"          ");     //Authorization Information
            oSegment.set_DataElementValue(3,0,"00");     //Security Information Qualifier
            oSegment.set_DataElementValue(4,0,"          ");     //Security Information
            oSegment.set_DataElementValue(5,0,"ZZ");     //Interchange ID Qualifier
            oSegment.set_DataElementValue(6,0,"AABB           ");     //Interchange Sender ID
            oSegment.set_DataElementValue(7,0,"01");     //Interchange ID Qualifier
            oSegment.set_DataElementValue(8,0,"112233445      ");     //Interchange Receiver ID
            oSegment.set_DataElementValue(9,0,"080304");     //Interchange Date
            oSegment.set_DataElementValue(10,0,"1116");     //Interchange Time
            oSegment.set_DataElementValue(11,0,"U");     //Interchange Control Standards Identifier
            oSegment.set_DataElementValue(12,0,"00307");     //Interchange Control Version Number
            oSegment.set_DataElementValue(13,0,"000017859");     //Interchange Control Number
            oSegment.set_DataElementValue(14,0,"0");     //Acknowledgment Requested
            oSegment.set_DataElementValue(15,0,"P");     //Usage Indicator
            oSegment.set_DataElementValue(16,0,">");     //Component Element Separator
 
            //CREATES THE GS SEGMENT
            ediGroup.Set(ref oGroup, (ediGroup) oInterchange.CreateGroup("003070"));
            ediDataSegment.Set( ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader());
            oSegment.set_DataElementValue(1,0,"IM");     //Functional Identifier Code
            oSegment.set_DataElementValue(2,0,"AABB");     //Application Sender's Code
            oSegment.set_DataElementValue(3,0,"112233445");     //Application Receiver's Code
            oSegment.set_DataElementValue(4,0,"080304");     //Date
            oSegment.set_DataElementValue(5,0,"1116");     //Time
            oSegment.set_DataElementValue(6,0,"1");     //Group Control Number
            oSegment.set_DataElementValue(7,0,"X");     //Responsible Agency Code
            oSegment.set_DataElementValue(8,0,"003070");     //Version / Release / Industry Identifier Code
 
            //CREATES THE ST SEGMENT
            ediTransactionSet.Set(ref oTransactionset, (ediTransactionSet) oGroup.CreateTransactionSet("210"));
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader());
            oSegment.set_DataElementValue(1,0,"210");     //Transaction Set Identifier Code
            oSegment.set_DataElementValue(2,0,"0001");     //Transaction Set Control Number
 
            //B3 - BEGINNING SEGMENT FOR CARRIER'S INVOICE
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("B3"));
            oSegment.set_DataElementValue(2,0,"1538260");     //Invoice Number
            oSegment.set_DataElementValue(4,0,"DE");     //Shipment Method of Payment
            oSegment.set_DataElementValue(6,0,"080304");     //Date
            oSegment.set_DataElementValue(7,0,"190520");     //Net Amount Due
            oSegment.set_DataElementValue(11,0,"AABB");     //Standard Carrier Alpha Code
            oSegment.set_DataElementValue(12,0,"200803");     //Date
 
            //B2A - SET PURPOSE
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("B2A"));
            oSegment.set_DataElementValue(1,0,"00");     //Transaction Set Purpose Code
 
            //N9 - REFERENCE IDENTIFICATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N9"));
            oSegment.set_DataElementValue(1,0,"CN");     //Reference Identification Qualifier
            oSegment.set_DataElementValue(2,0,"338131");     //Reference Identification
 
            //G62 - DATE/TIME
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("G62"));
            oSegment.set_DataElementValue(1,0,"03");     //Date Qualifier
            oSegment.set_DataElementValue(2,0,"080304");     //Date
            oSegment.set_DataElementValue(3,0,"0");     //Time Qualifier
            oSegment.set_DataElementValue(4,0,"1116");     //Time
            oSegment.set_DataElementValue(5,0,"LT");     //Time Code
 
            // SHIPPER INFORMATION LOOP
            //N1 - NAME
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N1")); //CREATES AN N1 SEGMENT IN THE N1 LOOPS 
            oSegment.set_DataElementValue(1,0,"SH");     //Entity Identifier Code
            oSegment.set_DataElementValue(2,0,"HARDWARE BIZ");     //Name
            oSegment.set_DataElementValue(3,0,"1");     //Identification Code Qualifier
            oSegment.set_DataElementValue(4,0,"006932917");     //Identification Code
 
            //N2 - ADDITIONAL NAME INFORMATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N2")); //CREATES AN N2 SEGMENT IN THE N1 LOOP
            oSegment.set_DataElementValue(1,0,"99448855");     //Name
 
            //N3 - ADDRESS INFORMATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N3")); //CREATES AN N3 SEGMENT IN THE N1 LOOP
            oSegment.set_DataElementValue(1,0,"200 HIGHWAY ST");     //Address Information
 
            //N4 - GEOGRAPHIC LOCATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N4")); //CREATES AN N4 SEGMENT IN THE N1 LOOP
            oSegment.set_DataElementValue(1,0,"LONGBEACH");     //City Name
            oSegment.set_DataElementValue(2,0,"CA");     //State or Province Code
            oSegment.set_DataElementValue(3,0,"37027");     //Postal Code
 
            //BILL-TO INFORMATION LOOP
            //N1 - NAME
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N1")); //CREATES AN N1 SEGMENT IN THE SECOND INSTANCE OF THE N1 LOOP
            oSegment.set_DataElementValue(1,0,"BT");     //Entity Identifier Code
            oSegment.set_DataElementValue(2,0,"OFFICE HQ");     //Name
            oSegment.set_DataElementValue(3,0,"1");     //Identification Code Qualifier
            oSegment.set_DataElementValue(4,0,"PP22BBCC66");     //Identification Code
 
            //N2 - ADDITIONAL NAME INFORMATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N2")); //CREATES AN N2 SEGMENT IN THE SECOND INSTANCE OF THE N1 LOOP
            oSegment.set_DataElementValue(1,0,"HQ99999999");     //Name
 
            //N3 - ADDRESS INFORMATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N3"));
            oSegment.set_DataElementValue(1,0,"123 CENTER DR");     //Address Information
 
            //N4 - GEOGRAPHIC LOCATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N4"));
            oSegment.set_DataElementValue(1,0,"LOS ANGELES");     //City Name
            oSegment.set_DataElementValue(2,0,"CA");     //State or Province Code
            oSegment.set_DataElementValue(3,0,"46064");     //Postal Code
 
            //N7 - EQUIPMENT DETAILS
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N7\\N7"));
            oSegment.set_DataElementValue(1,0,"EIS");     //Equipment Initial
            oSegment.set_DataElementValue(2,0,"803126");     //Equipment Number
            oSegment.set_DataElementValue(18,0,"6");     //Equipment Number Check Digit
 
            //LX - ASSIGNED NUMBER
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX\\LX"));
            oSegment.set_DataElementValue(1,0,"1");     //Assigned Number
 
            //N9 - REFERENCE IDENTIFICATION
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX\\N9"));
            oSegment.set_DataElementValue(1,0,"F9");     //Reference Identification Qualifier
            oSegment.set_DataElementValue(2,0,"1006494351  CommodityCode");     //Reference Identification
 
            //L1 - RATE AND CHARGES
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX\\L1"));
            oSegment.set_DataElementValue(2,0,"1430.00");     //Freight Rate
            oSegment.set_DataElementValue(3,0,"FR");     //Rate/Value Qualifier
            oSegment.set_DataElementValue(4,0,"143000");     //Charge
            oSegment.set_DataElementValue(12,0,"HANDLING");     //Special Charge Description
 
            //LX - ASSIGNED NUMBER
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX(2)\\LX"));
            oSegment.set_DataElementValue(1,0,"2");     //Assigned Number
 
            //L1 - RATE AND CHARGES
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX(2)\\L1"));
            oSegment.set_DataElementValue(2,0,"72.00");     //Freight Rate
            oSegment.set_DataElementValue(3,0,"FR");     //Rate/Value Qualifier
            oSegment.set_DataElementValue(4,0,"7200");     //Charge
            oSegment.set_DataElementValue(12,0,"EARLY");     //Special Charge Description
 
            //LX - ASSIGNED NUMBER
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX(3)\\LX"));
            oSegment.set_DataElementValue(1,0,"3");     //Assigned Number
 
            //L1 - RATE AND CHARGES
            ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("LX(3)\\L1"));
            oSegment.set_DataElementValue(2,0,"403.20");     //Freight Rate
            oSegment.set_DataElementValue(3,0,"FR");     //Rate/Value Qualifier
            oSegment.set_DataElementValue(4,0,"40320");     //Charge
            oSegment.set_DataElementValue(12,0,"LATE");     //Special Charge Description
 
            //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED 

            //DISPLAY EDI STRING
            MessageBox.Show(oEdiDoc.GetEdiString(),"EDI File");

            //SAVE EDI DOCUMENT OBJECT INTO AN EDI FILE.
            oEdiDoc.Save(sPath + sEdiFile);
 
            //DESTROYS OBJECTS
            oSegment.Dispose();
            oTransactionset.Dispose();
            oGroup.Dispose();
            oInterchange.Dispose();
            oSchema.Dispose();
            oSchemas.Dispose();
            oEdiDoc.Dispose();

            MessageBox.Show("Done. Output = " + sPath + sEdiFile);

        }
    

    Click here to download a trial version of the Framework EDI