Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
'This is just an example to show how to use the Framework EDI component in VB .NET to generate an 856 EDI file.
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 sPath As String
Me.Cursor = Cursors.WaitCursor
sPath = AppDomain.CurrentDomain.BaseDirectory & "\"
'CREATES OEDIDOC 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) = 2000
'SET TERMINATORS
oEdiDoc.SegmentTerminator = "~{13:10}"
oEdiDoc.ElementTerminator = "*"
oEdiDoc.CompositeTerminator = ">"
'LOADS THE SEF FILE
ediSchema.Set(oSchema, oEdiDoc.ImportSchema(sPath & "856_X12-4010.SEF", 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) = "14" 'Interchange ID Qualifier
oSegment.DataElementValue(6) = "0073268795005 " 'Interchange Sender ID
oSegment.DataElementValue(7) = "ZZ" 'Interchange ID Qualifier
oSegment.DataElementValue(8) = "RECEIVERISA " 'Interchange Receiver ID
oSegment.DataElementValue(9) = "960807" 'Interchange Date
oSegment.DataElementValue(10) = "1548" 'Interchange Time
oSegment.DataElementValue(11) = "U" 'Interchange Control Standards Identifier
oSegment.DataElementValue(12) = "00401" 'Interchange Control Version Number
oSegment.DataElementValue(13) = "000000020" 'Interchange Control Number
oSegment.DataElementValue(14) = "0" 'Acknowledgment Requested
oSegment.DataElementValue(15) = "T" '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) = "SH" 'Functional Identifier Code
oSegment.DataElementValue(2) = "007326879" 'Application Sender's Code
oSegment.DataElementValue(3) = "RECEIVERGS" 'Application Receiver's Code
oSegment.DataElementValue(4) = "19960807" 'Date
oSegment.DataElementValue(5) = "1548" 'Time
oSegment.DataElementValue(6) = "1" '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("856"))
ediDataSegment.Set(oSegment, oTransactionset.GetDataSegmentHeader)
oSegment.DataElementValue(1) = "856" 'Transaction Set Identifier Code
oSegment.DataElementValue(2) = "00001" 'Transaction Set Control Number
'BSN - BEGINNING SEGMENT FOR SHIP NOTICE
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("BSN"))
oSegment.DataElementValue(1) = "00" 'Transaction Set Purpose Code
oSegment.DataElementValue(2) = "3333" 'Shipment Identification
oSegment.DataElementValue(3) = "20020301" 'Date
oSegment.DataElementValue(4) = "1340" 'Time
oSegment.DataElementValue(5) = "0002" 'Hierarchical Structure Code
'hypothetical numbers of shipments, orders and items
Dim nShipmentCounter As Integer = 1
Dim nShipments As Integer = 1
Dim nOrderCounter As Integer = 1
Dim nOrders As Integer = 1
Dim nItemCounter As Integer = 1
Dim nItems As Integer = 6
Dim nHlCounter As Integer
Dim nHlShipmentParent As Integer
Dim nHlOrderParent As Integer
Dim nHlItemParent As Integer
'********************************************************************************************
'HL - HIERARCHICAL LEVEL - SHIPMENTS ********************************************************
Do While nShipmentCounter <= nShipments
nHlCounter = nHlCounter + 1
nHlOrderParent = nHlCounter
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL"))
oSegment.DataElementValue(1) = nHlCounter 'Hierarchical ID Number
oSegment.DataElementValue(3) = "S" 'Hierarchical Level Code
oSegment.DataElementValue(4) = "1" 'Hierarchical Child Code
'TD1 - CARRIER DETAILS (QUANTITY AND WEIGHT)
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\TD1"))
oSegment.DataElementValue(1) = "TKT" 'Packaging Code
oSegment.DataElementValue(2) = "207" 'Lading Quantity
oSegment.DataElementValue(6) = "A3" 'Weight Qualifier
oSegment.DataElementValue(7) = "46.09" 'Weight
oSegment.DataElementValue(8) = "01" 'Unit or Basis for Measurement Code
'TD5 - CARRIER DETAILS (ROUTING SEQUENCE/TRANSIT TIME)
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\TD5"))
oSegment.DataElementValue(2) = "2" 'Identification Code Qualifier
oSegment.DataElementValue(3) = "IDCODE" 'Identification Code
oSegment.DataElementValue(4) = "M" 'Transportation Method/Type Code
oSegment.DataElementValue(5) = "FREEFORM" 'Routing
'TD3 - CARRIER DETAILS (EQUIPMENT)
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\TD3"))
oSegment.DataElementValue(1) = "TN" 'Equipment Description Code
oSegment.DataElementValue(2) = "BPL3" 'Equipment Initial
oSegment.DataElementValue(3) = "777777" 'Equipment Number
'REF - REFERENCE IDENTIFICATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\REF"))
oSegment.DataElementValue(1) = "BM" 'Reference Identification Qualifier
oSegment.DataElementValue(2) = "33333" 'Reference Identification
'DTM - DATE/TIME REFERENCE - SHIPPED DATE
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\DTM"))
oSegment.DataElementValue(1) = "011" 'Date/Time Qualifier
oSegment.DataElementValue(2) = "19971211" 'Date
'DTM - DATE/TIME REFERENCE - ESTIMATED DELIVERY DATE
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\DTM(2)"))
oSegment.DataElementValue(1) = "017" 'Date/Time Qualifier
oSegment.DataElementValue(2) = "19971211" 'Date
'BILL-TO INFORMATION **************
'N1 - NAME
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N1"))
oSegment.DataElementValue(1) = "BT" 'Entity Identifier Code
oSegment.DataElementValue(2) = "BUYSNACKS" 'Name
oSegment.DataElementValue(3) = "1" 'Identification Code Qualifier
oSegment.DataElementValue(4) = "1223334444" 'Identification Code
'N3 - ADDRESS INFORMATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N3"))
oSegment.DataElementValue(1) = "P.O. BOX 0000" 'Address Information
'N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N4"))
oSegment.DataElementValue(1) = "TEMPLE" 'City Name
oSegment.DataElementValue(2) = "TX" 'State or Province Code
oSegment.DataElementValue(3) = "76503" 'Postal Code
'SHIP-TO INFORMATION ***************
'N1 - NAME
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N1"))
oSegment.DataElementValue(1) = "ST" 'Entity Identifier Code
oSegment.DataElementValue(2) = "BUYSNACKS PORT" 'Name
oSegment.DataElementValue(3) = "1" 'Identification Code Qualifier
oSegment.DataElementValue(4) = "1223334445" 'Identification Code
'N3 - ADDRESS INFORMATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N3"))
oSegment.DataElementValue(1) = "1000 N. SAMPLE HIGHWAY" 'Address Information
'N4 - GEOGRAPHIC LOCATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\N1\N4"))
oSegment.DataElementValue(1) = "ATHENS" 'City Name
oSegment.DataElementValue(2) = "GA" 'State or Province Code
oSegment.DataElementValue(3) = "30603" 'Postal Code
'********************************************************************************************
'HL - HIERARCHICAL LEVEL - ORDER ************************************************************
Do While nOrderCounter <= nOrders
nHlCounter = nHlCounter + 1
nHlItemParent = nHlCounter
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL"))
oSegment.DataElementValue(1) = nHlCounter 'Hierarchical ID Number
oSegment.DataElementValue(2) = nHlOrderParent 'Hierarchical Parent ID Number
oSegment.DataElementValue(3) = "O" 'Hierarchical Level Code
oSegment.DataElementValue(4) = "1" 'Hierarchical Child Code
'PRF - PURCHASE ORDER REFERENCE
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\PRF"))
oSegment.DataElementValue(1) = "A99999-01" 'Purchase Order Number
oSegment.DataElementValue(2) = "016900" 'Release Number
oSegment.DataElementValue(4) = "19971207" 'Date
'REF - REFERENCE IDENTIFICATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\REF"))
oSegment.DataElementValue(1) = "IV" 'Reference Identification Qualifier
oSegment.DataElementValue(2) = "00001" 'Reference Identification
'FOB - F.O.B. RELATED INSTRUCTIONS
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\FOB"))
oSegment.DataElementValue(1) = "PS" 'Shipment Method of Payment
oSegment.DataElementValue(2) = "DE" 'Location Qualifier
'********************************************************************************************
'HL - HIERARCHICAL LEVEL - ITEMS ************************************************************
Do While nItemCounter <= nItems
nHlCounter = nHlCounter + 1
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\HL")) '1ST INSTANCE OF ITEM LOOP
oSegment.DataElementValue(1) = nHlCounter 'Hierarchical ID Number
oSegment.DataElementValue(2) = nHlItemParent 'Hierarchical Parent ID Number
oSegment.DataElementValue(3) = "I" 'Hierarchical Level Code
oSegment.DataElementValue(4) = "0" 'Hierarchical Child Code
'LIN - ITEM IDENTIFICATION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\LIN"))
oSegment.DataElementValue(1) = nItemCounter 'Assigned Identification
oSegment.DataElementValue(2) = "UA" 'Product/Service ID Qualifier
oSegment.DataElementValue(3) = "Product ID of item " & Trim(Str(nItemCounter)) 'Product/Service ID
'SN1 - ITEM DETAIL (SHIPMENT)
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\SN1"))
oSegment.DataElementValue(2) = "13" 'Number of Units Shipped
oSegment.DataElementValue(3) = "CA" 'Unit or Basis for Measurement Code
oSegment.DataElementValue(5) = "13" 'Quantity Ordered
oSegment.DataElementValue(6) = "CA" 'Unit or Basis for Measurement Code
oSegment.DataElementValue(8) = "AC" 'Line Item Status Code
'PRF - PURCHASE ORDER REFERENCE
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\PRF"))
oSegment.DataElementValue(1) = "A99999-01" 'Purchase Order Number
oSegment.DataElementValue(2) = "016900" 'Release Number
oSegment.DataElementValue(4) = "19971207" 'Date
'PID - PRODUCT/ITEM DESCRIPTION
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("HL\PID"))
oSegment.DataElementValue(1) = "F" 'Item Description Type
oSegment.DataElementValue(5) = "Description of item " & Trim(Str(nItemCounter)) 'Description
nItemCounter = nItemCounter + 1 'increment nItemCounter
Loop 'nItemCounter
nOrderCounter = nOrderCounter + 1 'increment nOrderCounter
Loop 'nOrderCounter
nShipmentCounter = nShipmentCounter + 1 'increment nShipmentCounter
Loop 'Shipment
'CTT - TRANSACTION TOTALS
ediDataSegment.Set(oSegment, oTransactionset.CreateDataSegment("CTT"))
oSegment.DataElementValue(1) = nItems 'Number of Line Items
'TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES)
'THE EDIDOC OBJECT INTO AN EDI FILE.
oEdiDoc.Save(sPath & "856OUTPUT.X12")
'saves edi string to a variable
Dim sEdifile As String
sEdifile = oEdiDoc.GetEdiString
MessageBox.Show(sEdifile)
Me.Cursor = Cursors.Default
'DESTROYS OBJECTS
oSegment.Dispose()
oTransactionset.Dispose()
oGroup.Dispose()
oInterchange.Dispose()
oSchema.Dispose()
oSchemas.Dispose()
oEdiDoc.Dispose()
MessageBox.Show("Done")
End Sub