Private Sub btnGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerate.Click

        'This is just an example program to show how to generate an EDI X12 204 file 
        'using the Framework EDI component in VB. NET

        Dim oEdiDoc As ediDocument
        Dim oSchema As ediSchema
        Dim oSchemas As ediSchemas
        Dim oInterchange As ediInterchange
        Dim oGroup As ediGroup
        Dim oTransactionset As ediTransactionSet
        Dim oSegment As ediDataSegment
        Dim sSefFile As String
        Dim sEdiFile As String
        Dim sPath As String

        sPath = AppDomain.CurrentDomain.BaseDirectory & "\"
        sEdiFile = "204Output.X12"
        sSefFile = "204_4010.SEF"

        'CREATES EDI DOCUMENT OBJECT
        ediDocument.Set(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.
        ediSchemas.Set(oSchemas, oEdiDoc.GetSchemas)
        oSchemas.EnableStandardReference = False

        'ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE
        oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite
        oEdiDoc.Property(DocumentPropertyIDConstants.Property_DocumentBufferIO) = 200

        'SET TERMINATORS
        oEdiDoc.SegmentTerminator = "~"
        oEdiDoc.ElementTerminator = "*"
        oEdiDoc.CompositeTerminator = ">"

        'LOADS THE SEF FILE
        ediSchema.Set(oSchema, oEdiDoc.ImportSchema(sPath & sSefFile, 0))

        'CREATES THE ISA SEGMENT
        ediInterchange.Set(oInterchange, oEdiDoc.CreateInterchange("X", "004010"))
        ediDataSegment.Set(oSegment, oInterchange.GetDataSegmentHeader)
        oSegment.DataElementValue(1) = "00"     'Authorization Information Qualifier
        oSegment.DataElementValue(2) = "          "     'Authorization Information
        oSegment.DataElementValue(3) = "00"     'Security Information Qualifier
        oSegment.DataElementValue(4) = "          "     'Security Information
        oSegment.DataElementValue(5) = "01"     'Interchange ID Qualifier
        oSegment.DataElementValue(6) = "009988777      "     'Interchange Sender ID
        oSegment.DataElementValue(7) = "02"     'Interchange ID Qualifier
        oSegment.DataElementValue(8) = "PRTA           "     'Interchange Receiver ID
        oSegment.DataElementValue(9) = "040309"     'Interchange Date
        oSegment.DataElementValue(10) = "0009"     'Interchange Time
        oSegment.DataElementValue(11) = "U"     'Interchange Control Standards Identifier
        oSegment.DataElementValue(12) = "00401"     'Interchange Control Version Number
        oSegment.DataElementValue(13) = "000018053"     'Interchange Control Number
        oSegment.DataElementValue(14) = "0"     'Acknowledgment Requested
        oSegment.DataElementValue(15) = "P"     'Usage Indicator
        oSegment.DataElementValue(16) = ">"     'Component Element Separator

        'CREATES THE GS SEGMENT
        ediGroup.Set(oGroup, oInterchange.CreateGroup("004010"))
        ediDataSegment.Set(oSegment, oGroup.GetDataSegmentHeader)
        oSegment.DataElementValue(1) = "SM"     'Functional Identifier Code
        oSegment.DataElementValue(2) = "009988777"     'Application Sender's Code
        oSegment.DataElementValue(3) = "PRTA"     'Application Receiver's Code
        oSegment.DataElementValue(4) = "20040312"     'Date
        oSegment.DataElementValue(5) = "0009"     'Time
        oSegment.DataElementValue(6) = "2"     'Group Control Number
        oSegment.DataElementValue(7) = "X"     'Responsible Agency Code
        oSegment.DataElementValue(8) = "004010"     'Version / Release / Industry Identifier Code

        'CREATES THE ST SEGMENT
        ediTransactionSet.Set(oTransactionset, oGroup.CreateTransactionSet("204"))
        ediDataSegment.Set(oSegment, oTransactionset.GetDataSegmentHeader)
        oSegment.DataElementValue(1) = "204"     'Transaction Set Identifier Code
        oSegment.DataElementValue(2) = "000182983"     'Transaction Set Control Number

        'B2 - BEGINNING SEGMENT FOR SHIPMENT INFORMATION TRANSACTION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("B2"))
        oSegment.DataElementValue(2) = "PRTA"      'Standard Carrier Alpha Code
        oSegment.DataElementValue(4) = "05100"      'Shipment Identification Number
        oSegment.DataElementValue(6) = "PP"      'Shipment Method of Payment
        oSegment.DataElementValue(7) = "B"      'Shipment Qualifier

        'B2A - SET PURPOSE
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("B2A"))
        oSegment.DataElementValue(1) = "00"      'Transaction Set Purpose Code
        oSegment.DataElementValue(2) = "MF"      'Application Type

        'L11 - BUSINESS INSTRUCTIONS AND REFERENCE NUMBER
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("L11"))
        oSegment.DataElementValue(1) = "999964092847000001"      'Reference Identification
        oSegment.DataElementValue(2) = "CO"      'Reference Identification Qualifier

        'L11 - BUSINESS INSTRUCTIONS AND REFERENCE NUMBER
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("L11(2)")) 'CREATE SECOND INSTANCE OF L11 SEGMENT
        oSegment.DataElementValue(1) = "5551007604"      'Reference Identification
        oSegment.DataElementValue(2) = "14"      'Reference Identification Qualifier

        'N7 - EQUIPMENT DETAILS
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("N7\N7")) 'CREATE N7 SEGMENT IN LOOP N7
        oSegment.DataElementValue(2) = "EQPMNT500"      'Equipment Number

        'S5 - STOP OFF DETAILS
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\S5")) 'CREATE S5 SEGMENT IN LOOP S5
        oSegment.DataElementValue(1) = "1"      'Stop Sequence Number
        oSegment.DataElementValue(2) = "LD"      'Stop Reason Code
        oSegment.DataElementValue(3) = "49"      'Weight
        oSegment.DataElementValue(4) = "L"      'Weight Unit Code
        oSegment.DataElementValue(5) = "1"      'Number of Units Shipped
        oSegment.DataElementValue(6) = "PC"      'Unit or Basis for Measurement Code

        'L11 - BUSINESS INSTRUCTIONS AND REFERENCE NUMBER
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\L11")) 'CREATE L11 SEGMENT IN LOOP S5
        oSegment.DataElementValue(1) = "20"      'Reference Identification
        oSegment.DataElementValue(2) = "RU"      'Reference Identification Qualifier

        'G62 - DATE/TIME
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\G62")) 'CREATE G62 SEGMENT IN LOOP S5
        oSegment.DataElementValue(1) = "78"      'Date Qualifier
        oSegment.DataElementValue(2) = "20040312"      'Date

        'N1 - NAME
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\N1\N1")) 'CREATE N1 SEGMENT IN LOOP N1 NESTED  IN LOOP S5
        oSegment.DataElementValue(1) = "SF"      'Entity Identifier Code
        oSegment.DataElementValue(2) = "Los Angeles XYZ"      'Name
        oSegment.DataElementValue(3) = "93"      'Identification Code Qualifier
        oSegment.DataElementValue(4) = "805"      'Identification Code

        'N3 - ADDRESS INFORMATION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\N1\N3")) 'CREATE N3 SEGMENT IN LOOP N1 LOOP S5
        oSegment.DataElementValue(1) = "19499 Downtown Highway"      'Address Information
        oSegment.DataElementValue(2) = "Los Angeles, CA 97230"      'Address Information

        'N3 - ADDRESS INFORMATION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\N1\N3(2)")) 'CREATE SECOND INSTANCE OF N3 SEGMENT IN LOOP N1 NESTED IN LOOP S5
        oSegment.DataElementValue(1) = "Los Angeles CA,97230"      'Address Information

        'N4 - GEOGRAPHIC LOCATION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\N1\N4"))
        oSegment.DataElementValue(1) = "Los Angeles"      'City Name
        oSegment.DataElementValue(2) = "CA"      'State or Province Code
        oSegment.DataElementValue(3) = "97230"      'Postal Code

        'G61 - CONTACT
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\N1\G61"))
        oSegment.DataElementValue(1) = "IC"      'Contact Function Code
        oSegment.DataElementValue(2) = "Retail Company A"      'Name

        'OID - ORDER IDENTIFICATION DETAIL
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\OID\OID"))
        oSegment.DataElementValue(1) = "334455"      'Reference Identification
        oSegment.DataElementValue(2) = "ABCDEF092847000001"      'Purchase Order Number
        oSegment.DataElementValue(4) = "PC"      'Unit or Basis for Measurement Code
        oSegment.DataElementValue(5) = "1"      'Quantity
        oSegment.DataElementValue(6) = "L"      'Weight Unit Code
        oSegment.DataElementValue(7) = "49"      'Weight

        'LAD - LADING DETAIL
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5\OID\LAD"))
        oSegment.DataElementValue(1) = "CTN"      'Packaging Form Code
        oSegment.DataElementValue(2) = "1"      'Lading Quantity
        oSegment.DataElementValue(3) = "L"      'Weight Unit Code
        oSegment.DataElementValue(4) = "49"      'Unit Weight
        oSegment.DataElementValue(7) = "UF"      'Product/Service ID Qualifier
        oSegment.DataElementValue(8) = "UDFCI0002078$01"      'Product/Service ID
        oSegment.DataElementValue(13) = "TEST PRODUCT 1 32OZ."      'Lading Description

        'S5 - STOP OFF DETAILS
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\S5")) 'CREATE S5 SEGMENT IN SECOND INSTANCE OF LOOP S5
        oSegment.DataElementValue(1) = "2"      'Stop Sequence Number
        oSegment.DataElementValue(2) = "UL"      'Stop Reason Code
        oSegment.DataElementValue(3) = "49"      'Weight
        oSegment.DataElementValue(4) = "L"      'Weight Unit Code
        oSegment.DataElementValue(5) = "1"      'Number of Units Shipped
        oSegment.DataElementValue(6) = "PC"      'Unit or Basis for Measurement Code

        'L11 - BUSINESS INSTRUCTIONS AND REFERENCE NUMBER
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\L11"))
        oSegment.DataElementValue(1) = "20"      'Reference Identification
        oSegment.DataElementValue(2) = "RU"      'Reference Identification Qualifier

        'G62 - DATE/TIME
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\G62"))
        oSegment.DataElementValue(1) = "78"      'Date Qualifier
        oSegment.DataElementValue(2) = "20040312"      'Date

        'N1 - NAME
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\N1\N1"))
        oSegment.DataElementValue(1) = "CN"      'Entity Identifier Code
        oSegment.DataElementValue(2) = "RESP RELIABLE"      'Name
        oSegment.DataElementValue(3) = "93"      'Identification Code Qualifier
        oSegment.DataElementValue(4) = "3807"      'Identification Code

        'N3 - ADDRESS INFORMATION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\N1\N3"))
        oSegment.DataElementValue(1) = "888 MID WAY"      'Address Information
        oSegment.DataElementValue(2) = "FLOOR B"      'Address Information

        'N4 - GEOGRAPHIC LOCATION
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\N1\N4"))
        oSegment.DataElementValue(1) = "Los Angeles"      'City Name
        oSegment.DataElementValue(2) = "CA"      'State or Province Code
        oSegment.DataElementValue(3) = "97232"      'Postal Code

        'G61 - CONTACT
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("S5(2)\N1\G61"))
        oSegment.DataElementValue(1) = "IC"      'Contact Function Code
        oSegment.DataElementValue(2) = "OVERSEE SUPER"      'Name
        oSegment.DataElementValue(3) = "TE"      'Communication Number Qualifier
        oSegment.DataElementValue(4) = "(555) 555-ABCD"      'Communication Number

        'L3 - TOTAL WEIGHT AND CHARGES
        ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("L3"))
        oSegment.DataElementValue(1) = "49"      'Weight
        oSegment.DataElementValue(2) = "G"      'Weight Qualifier
        oSegment.DataElementValue(11) = "1"      'Lading Quantity

        'TRAILING SEGMENTS ARE AUTOMATICALLY CREATED 

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

        'THE EDIDOC OBJECT INTO AN EDI FILE.
        oEdiDoc.Save(sPath & sEdiFile)
        MessageBox.Show("Done. Output = " & sPath & sEdiFile)


        'DESTROYS OBJECTS
        oSegment.Dispose()
        oTransactionset.Dispose()
        oGroup.Dispose()
        oInterchange.Dispose()
        oSchema.Dispose()
        oSchemas.Dispose()
        oEdiDoc.Dispose()

    End Sub
    

    Click here to download a trial version of the Framework EDI