'This is just an example program to show how to generate a UN/EDIFACT INVOIC in VB6 using Framework EDI Option Explicit Private oEdiDoc As Fredi.ediDocument Private oSchemas As Fredi.ediSchemas Private oInterchange As Fredi.ediInterchange Private oTransactionset As Fredi.ediTransactionSet Private oSegment As Fredi.ediDataSegment Private sSefFile As String Private sEdiFile As String Private Sub cmdGenerate_Click() Dim i As Integer Dim nCount As Integer Dim sPath As String Dim sEntity As String Dim nIndex As Integer Dim sSefFile As String Dim sEdiFile As String Dim iItemCount As Integer cmdGenerate.Enabled = False Me.MousePointer = vbHourglass sPath = App.Path & "\" sEdiFile = "INVOIC.TXT" sSefFile = "INVOIC_S93A.SEF" 'instantiate edi document object Set oEdiDoc = New Fredi.ediDocument 'ForwardWrite setting does not keep the created segments in memory, thus saving RAM and improving performance oEdiDoc.CursorType = Cursor_ForwardWrite 'disable the internal standard reference library to make sure component uses the SEF provided Set oSchemas = oEdiDoc.GetSchemas oSchemas.EnableStandardReference = False 'Load SEF file oEdiDoc.LoadSchema sPath & sSefFile, Schema_Standard_Exchange_Format 'Set terminators oEdiDoc.SegmentTerminator = "'" oEdiDoc.ElementTerminator = "+" oEdiDoc.CompositeTerminator = ":" oEdiDoc.ReleaseIndicator = "?" 'Create UNA segment oEdiDoc.Option(OptDocument_ServiceSegment) = 1 'create the interchange UNB segment Set oInterchange = oEdiDoc.CreateInterchange("UN", "S93A") Set oSegment = oInterchange.GetDataSegmentHeader oSegment.DataElementValue(1, 1) = "UNOB" 'composite element 1, subelement 1 oSegment.DataElementValue(1, 2) = "1" 'composite element 1, subelement 2 oSegment.DataElementValue(2, 1) = txtPartnerID.Text 'composite element 2, subelement 1 oSegment.DataElementValue(2, 2) = "ZZZ" 'composite element 2, subelement 2 oSegment.DataElementValue(3, 1) = "0038977332" 'composite element 3, subelement 1 oSegment.DataElementValue(3, 2) = "1" 'composite element 3, subelement 2 oSegment.DataElementValue(3, 3) = txtSiteCode.Text 'composite element 3, subelement 3 oSegment.DataElementValue(4, 1) = "020331" oSegment.DataElementValue(4, 1) = "1230" oSegment.DataElementValue(5) = "00000000000001" 'date element 5 oSegment.DataElementValue(7) = "INVOIC" 'data element 7 oSegment.DataElementValue(11) = "1" 'data element 11 'create the message UNH segment Set oTransactionset = oInterchange.CreateTransactionSet("INVOIC") Set oSegment = oTransactionset.GetDataSegmentHeader oSegment.DataElementValue(1) = "0001" 'data element 1 oSegment.DataElementValue(2, 1) = "INVOIC" 'composite element 2, subelement 1 oSegment.DataElementValue(2, 2) = "S" 'composite element 2, subelement 2 oSegment.DataElementValue(2, 3) = "93A" 'composite element 2, subelement 3 oSegment.DataElementValue(2, 4) = "UN" 'composite element 2, subelement 4 'create the BGM segment Set oSegment = oTransactionset.CreateDataSegment("BGM") oSegment.DataElementValue(1, 1) = "380" 'composite element 1, subelement 1 oSegment.DataElementValue(2) = txtInvoiceNo.Text 'data element 2 oSegment.DataElementValue(3) = "9" 'data element 3 'create the DTM segment Set oSegment = oTransactionset.CreateDataSegment("DTM") oSegment.DataElementValue(1, 1) = "137" oSegment.DataElementValue(1, 2) = Format(txtInvDate.Text, "YYYYMMDD") oSegment.DataElementValue(1, 3) = "102" 'create the RFF segment in the RFF group Set oSegment = oTransactionset.CreateDataSegment("RFF\RFF") oSegment.DataElementValue(1, 1) = "ON" oSegment.DataElementValue(1, 2) = txtOrderNo.Text 'create the NAD segment in the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD\NAD") oSegment.DataElementValue(1) = "RE" oSegment.DataElementValue(2, 3) = "92" oSegment.DataElementValue(4, 1) = txtManufacturerName.Text 'create the RFF segment in the RFF group nested in the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD\RFF\RFF") oSegment.DataElementValue(1, 1) = "VA" oSegment.DataElementValue(1, 2) = txtManufRef.Text 'create the CTA segment in the CTA group nested in the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD\CTA\CTA") oSegment.DataElementValue(1) = "AR" oSegment.DataElementValue(2, 2) = txtARContact.Text 'create the COM segment in the CTA group nested in the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD\CTA\COM") oSegment.DataElementValue(1, 1) = txtARTelephone.Text oSegment.DataElementValue(1, 2) = "TE" 'create the NAD segment in the second instance of the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD(2)\NAD") oSegment.DataElementValue(1) = "ST" oSegment.DataElementValue(2, 3) = "92" oSegment.DataElementValue(4, 1) = txtShipToName.Text 'create the NAD segment in the third instance of the NAD group Set oSegment = oTransactionset.CreateDataSegment("NAD(3)\NAD") oSegment.DataElementValue(1) = "BY" oSegment.DataElementValue(2, 3) = "92" oSegment.DataElementValue(4, 1) = txtBuyerName.Text 'create the CUX segment in the CUX group Set oSegment = oTransactionset.CreateDataSegment("CUX\CUX") oSegment.DataElementValue(1, 1) = "2" oSegment.DataElementValue(1, 2) = "USD" oSegment.DataElementValue(1, 3) = "4" 'create the ALC segment in the ALC group Set oSegment = oTransactionset.CreateDataSegment("ALC\ALC") oSegment.DataElementValue(1) = "C" oSegment.DataElementValue(3) = "6" oSegment.DataElementValue(5, 1) = "ABG" 'create the PCD segment in the PCD group nested in the ALC group Set oSegment = oTransactionset.CreateDataSegment("ALC\PCD\PCD") oSegment.DataElementValue(1, 1) = "1" oSegment.DataElementValue(1, 2) = txtToolingPerc.Text 'create the MOA segment in the MOA group nested in the ALC group Set oSegment = oTransactionset.CreateDataSegment("ALC\MOA\MOA") oSegment.DataElementValue(1, 1) = "204" oSegment.DataElementValue(1, 2) = txtToolingCharge.Text 'create the LIN segment in the LIN group Set oSegment = oTransactionset.CreateDataSegment("LIN\LIN") oSegment.DataElementValue(1) = txtLineNo.Text oSegment.DataElementValue(3, 1) = txtBuyerPartNo.Text oSegment.DataElementValue(3, 2) = "SN" 'create the LIN segment in the QTY group Set oSegment = oTransactionset.CreateDataSegment("LIN\QTY") oSegment.DataElementValue(1, 1) = "47" oSegment.DataElementValue(1, 2) = txtQty.Text oSegment.DataElementValue(1, 3) = txtMeasure.Text 'create the PRI segment in the PRI group nested in the LIN group Set oSegment = oTransactionset.CreateDataSegment("LIN\PRI\PRI") oSegment.DataElementValue(1, 1) = "AAA" oSegment.DataElementValue(1, 2) = txtItemPrice.Text oSegment.DataElementValue(1, 3) = "CT" 'create the UNS segment Set oSegment = oTransactionset.CreateDataSegment("UNS") oSegment.DataElementValue(1) = "S" 'create the MOA segment in the MOA group Set oSegment = oTransactionset.CreateDataSegment("MOA\MOA") oSegment.DataElementValue(1, 1) = "77" oSegment.DataElementValue(1, 2) = txtTotalAmnt.Text oSegment.DataElementValue(1, 3) = "USD" 'create the TAX segment in the TAX group located in area (table) 3 of the message Set oSegment = oTransactionset.CreateDataSegment("TAX#3\TAX") oSegment.DataElementValue(1) = "7" oSegment.DataElementValue(2, 1) = "VAT" oSegment.DataElementValue(5, 4) = txtTaxRate.Text oSegment.DataElementValue(6) = "S" 'create the MOA segment in the TAX group located in area (table) 3 of the message Set oSegment = oTransactionset.CreateDataSegment("TAX#3\MOA") oSegment.DataElementValue(1, 1) = "176" oSegment.DataElementValue(1, 2) = txtTaxAmount.Text oSegment.DataElementValue(1, 3) = "USD" 'save edi document object to a file oEdiDoc.Save sPath & sEdiFile MsgBox ("Done. Output = " & sPath & sEdiFile) Me.MousePointer = vbNormal End Sub