'This is just an example to show how to translate a UN/EDIFACT INVOIC in VB6 using the Framework EDI component
Option Explicit
Private oEdiDoc As Fredi.ediDocument
Private oSegment As Fredi.ediDataSegment
Private oSchemas As Fredi.ediSchemas
Private Sub cmdTranslate_Click()
Dim sSefFile As String
Dim sEdiFile As String
Dim sSegmentID As String
Dim nArea As Integer
Dim sLoopSection As String
Dim sPath As String
Dim sAllowanceQlfr As String
Dim sPartyQlfr As String
Dim sValue As String
Me.MousePointer = vbHourglass
cmdTranslate.Enabled = False
sPath = Trim(App.Path) & "\"
sSefFile = "INVOIC_S93A.SEF"
sEdiFile = "INVOIC.TXT"
'instantiate edi document object
Set oEdiDoc = New Fredi.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.
Set oSchemas = oEdiDoc.GetSchemas
oSchemas.EnableStandardReference = False
'THIS OPTIONS STOPS FREDI FROM KEEPING ALL THE SEGMENTS IN MEMORY
oEdiDoc.CursorType = Cursor_ForwardOnly
'if UNA segment does not exist, then use following terminators
oEdiDoc.SegmentTerminator = "'"
oEdiDoc.ElementTerminator = "+"
oEdiDoc.CompositeTerminator = ":"
oEdiDoc.ReleaseIndicator = "?"
'LOADS THE SEF FILE
oEdiDoc.LoadSchema sPath & sSefFile, 0
'LOADS THE EDI FILE
oEdiDoc.LoadEdi sPath & sEdiFile
'GETS THE FIRST DATA SEGMENT
Set oSegment = oEdiDoc.FirstDataSegment
'LOOP THAT WILL TRAVERSE THRU EDI FILE FROM TOP TO BOTTOM
Do While Not oSegment Is Nothing
'DATA SEGMENTS ARE IDENTIFIED BY THEIR ID, THE LOOP SECTION AND AREA
'(OR TABLE) NUMBER THAT THEY ARE IN.
sSegmentID = oSegment.ID
sLoopSection = oSegment.LoopSection
nArea = oSegment.Area
If nArea = 0 Then
If sLoopSection = "" Then
If sSegmentID = "UNB" Then
txtPartnerID.Text = oSegment.DataElementValue(2, 1) 'composite element 2, subelement 1
txtSiteCode.Text = oSegment.DataElementValue(3, 3) 'composite element 3, subelement 3
txtTransmitDate.Text = StringToDate6(oSegment.DataElementValue(4, 1)) 'composite element 4, subelement 1
txtTransmitTime.Text = oSegment.DataElementValue(4, 2) 'composite element 4, subelement 2
End If 'sSegmentID
End If 'sLoopSection
ElseIf nArea = 1 Then
If sLoopSection = "" Then
If sSegmentID = "UNH" Then
sValue = oSegment.DataElementValue(1) 'Message reference number
sValue = oSegment.DataElementValue(2, 1) 'Message type identifier
sValue = oSegment.DataElementValue(2, 2) 'Message version number
sValue = oSegment.DataElementValue(2, 3) 'Message release number
sValue = oSegment.DataElementValue(2, 4) 'Controlling agency
sValue = oSegment.DataElementValue(2, 5) 'Association assigned code
ElseIf sSegmentID = "BGM" Then
sValue = oSegment.DataElementValue(1, 1) 'Document/message name, coded
sValue = oSegment.DataElementValue(1, 2) 'Code list qualifier
sValue = oSegment.DataElementValue(1, 3) 'Code list responsible agency, coded
sValue = oSegment.DataElementValue(1, 4) 'Document/message name
txtInvoiceNo.Text = oSegment.DataElementValue(2) 'Document/message name
sValue = oSegment.DataElementValue(3) 'Document/message name
ElseIf sSegmentID = "DTM" Then
sValue = oSegment.DataElementValue(1, 1) 'Date/time/period qualifier
txtInvDate.Text = oSegment.DataElementValue(1, 2) 'Date/time/period
sValue = oSegment.DataElementValue(1, 3) 'Date/time/period format qualifier
End If 'SegmentID
ElseIf sLoopSection = "RFF" Then
If sSegmentID = "RFF" Then
txtOrderNo.Text = oSegment.DataElementValue(1, 2)
End If 'SegmentID
ElseIf sLoopSection = "NAD" Then
If sSegmentID = "NAD" Then
sPartyQlfr = oSegment.DataElementValue(1)
End If
If sPartyQlfr = "RE" Then
If sSegmentID = "NAD" Then
sValue = oSegment.DataElementValue(1) 'Party qualifier
sValue = oSegment.DataElementValue(2, 1) 'Party identification
sValue = oSegment.DataElementValue(2, 2) 'Code list qualifier
sValue = oSegment.DataElementValue(2, 3) 'Code list responsible agency, coded
sValue = oSegment.DataElementValue(3, 1) 'Name and address line
sValue = oSegment.DataElementValue(3, 2) 'Name and address line
sValue = oSegment.DataElementValue(3, 3) 'Name and address line
sValue = oSegment.DataElementValue(3, 4) 'Name and address line
sValue = oSegment.DataElementValue(3, 5) 'Name and address line
txtManufacturerName.Text = oSegment.DataElementValue(4, 1) 'Party name
sValue = oSegment.DataElementValue(4, 2) 'Party name
sValue = oSegment.DataElementValue(4, 3) 'Party name
End If
ElseIf sPartyQlfr = "ST" Then
If sSegmentID = "NAD" Then
txtShipToName.Text = oSegment.DataElementValue(4, 1)
End If
ElseIf sPartyQlfr = "BY" Then
If sSegmentID = "NAD" Then
txtBuyerName.Text = oSegment.DataElementValue(4, 1)
End If
End If
ElseIf sLoopSection = "NAD;RFF" Then
If sSegmentID = "RFF" Then
If oSegment.DataElementValue(1, 1) = "VA" Then
txtManufRef.Text = oSegment.DataElementValue(1, 2)
End If
End If 'SegmentID
ElseIf sLoopSection = "NAD;CTA" Then
If sSegmentID = "CTA" Then
If oSegment.DataElementValue(1) = "AR" Then
txtARContact.Text = oSegment.DataElementValue(2, 2)
End If
ElseIf sSegmentID = "COM" Then
If oSegment.DataElementValue(1, 2) = "TE" Then
txtARTelephone.Text = oSegment.DataElementValue(1, 1)
End If
End If 'SegmentID
ElseIf sLoopSection = "CUX" Then
If sSegmentID = "CUX" Then
End If 'SegmentID
ElseIf sLoopSection = "ALC" Then
If sSegmentID = "ALC" Then
sAllowanceQlfr = oSegment.DataElementValue(1)
End If 'SegmentID
ElseIf sLoopSection = "ALC;PCD" Then
If sAllowanceQlfr = "C" Then
If sSegmentID = "PCD" Then
txtToolingPerc.Text = oSegment.DataElementValue(1, 1)
End If 'SegmentID
End If
ElseIf sLoopSection = "ALC;MOA" Then
If sAllowanceQlfr = "C" Then
If sSegmentID = "MOA" Then
txtToolingCharge.Text = oSegment.DataElementValue(1, 2)
End If 'sSegmentID
End If
End If 'sLoopSection
ElseIf nArea = 2 Then
If sLoopSection = "LIN" Then
If sSegmentID = "LIN" Then
txtLineNo.Text = oSegment.DataElementValue(1) 'Line item number
sValue = oSegment.DataElementValue(2) 'Action request/notification, coded
txtBuyerPartNo.Text = oSegment.DataElementValue(3, 1) 'Item number
sValue = oSegment.DataElementValue(3, 2) 'Item number type, coded
sValue = oSegment.DataElementValue(3, 3) 'Code list qualifier
sValue = oSegment.DataElementValue(3, 4) 'Code list responsible agency, coded
ElseIf sSegmentID = "QTY" Then
txtQty.Text = oSegment.DataElementValue(1, 2)
txtMeasure.Text = oSegment.DataElementValue(1, 3)
End If 'SegmentID
ElseIf sLoopSection = "LIN;PRI" Then
If sSegmentID = "PRI" Then
txtItemPrice.Text = oSegment.DataElementValue(1, 2)
End If 'sSegmentID
End If 'sLoopSection
ElseIf nArea = 3 Then
If sLoopSection = "" Then
If sSegmentID = "UNS" Then
End If 'SegmentID
ElseIf sLoopSection = "MOA" Then
If sSegmentID = "MOA" Then
sValue = oSegment.DataElementValue(1, 1) 'Monetary amount type qualifier
txtTotalAmnt.Text = oSegment.DataElementValue(1, 2) 'Monetary amount
sValue = oSegment.DataElementValue(1, 3) 'Currency, coded
sValue = oSegment.DataElementValue(1, 4) 'Currency qualifier
sValue = oSegment.DataElementValue(1, 5) 'Status, coded
End If 'SegmentID
ElseIf sLoopSection = "TAX" Then
If sSegmentID = "TAX" Then
sValue = oSegment.DataElementValue(1) 'Duty/tax/fee function qualifier
sValue = oSegment.DataElementValue(2, 1) 'Duty/tax/fee type, coded
sValue = oSegment.DataElementValue(2, 2) 'Code list qualifier
sValue = oSegment.DataElementValue(2, 3) 'Code list responsible agency, coded
sValue = oSegment.DataElementValue(2, 4) 'Duty/tax/fee type
sValue = oSegment.DataElementValue(3, 1) 'Duty/tax/fee account identification
sValue = oSegment.DataElementValue(3, 2) 'Code list qualifier
sValue = oSegment.DataElementValue(3, 3) 'Code list responsible agency, coded
sValue = oSegment.DataElementValue(4) 'Duty/tax/fee assessment basis
sValue = oSegment.DataElementValue(5, 1) 'Duty/tax/fee rate identification
sValue = oSegment.DataElementValue(5, 2) 'Code list qualifier
sValue = oSegment.DataElementValue(5, 3) 'Code list responsible agency, coded
txtTaxRate.Text = oSegment.DataElementValue(5, 4) 'Duty/tax/fee rate
sValue = oSegment.DataElementValue(5, 5) 'Duty/tax/fee rate basis identification
sValue = oSegment.DataElementValue(5, 6) 'Code list qualifier
sValue = oSegment.DataElementValue(5, 7) 'Code list responsible agency, coded
sValue = oSegment.DataElementValue(6) 'Duty/tax/fee category, coded
ElseIf sSegmentID = "MOA" Then
txtTaxAmount.Text = oSegment.DataElementValue(1, 2)
End If 'sSegmentID
End If 'sLoopSection
End If 'nArea
'GETS THE NEXT DATA SEGMENT
Set oSegment = oSegment.Next
Loop
'DESTROY OBJECTS
Set oEdiDoc = Nothing
Set oSchemas = Nothing
Set oSegment = Nothing
Me.MousePointer = vbNormal
End Sub