* This is just an example program to show how to generate an EDI 856 file in
        * FoxPro using the Framework EDI

        clear all

        * CREATES EDIDOC OBJECT 
        oEdiDoc = createobject("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.
        oSchemas = oEdiDoc.GetSchemas
        oSchemas.EnableStandardReference = .F.
 
        * ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE
        oEdiDoc.CursorType = 2
        oEdiDoc.Property(1002) = 200 
 
        * SET TERMINATORS
        oEdiDoc.SegmentTerminator = "~{13:10}"
        oEdiDoc.ElementTerminator = "*"
        oEdiDoc.CompositeTerminator = ">"
 
        * LOADS SEF FILE
        oSchema = oEdiDoc.LoadSchema("856_X12-4010.SEF", 0)
 
        * CREATES THE ISA SEGMENT
        oInterchange = oEdiDoc.CreateInterchange("X","004010")
        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
        oGroup = oInterchange.CreateGroup("004010")
        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
        oTransactionset = oGroup.CreateTransactionSet("856")
        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
        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
            nShipmentCounter = 1
            nShipments = 1
            nOrderCounter = 1
            nOrders = 1
            nItemCounter = 1
            nItems = 6
            nHlCounter = 0
    
            *********************************************************************************************
            * HL - HIERARCHICAL LEVEL - SHIPMENTS ********************************************************
            Do While nShipmentCounter <= nShipments
    
                nHlCounter = nHlCounter + 1
                nHlOrderParent = nHlCounter

 
                * HL - HIERARCHICAL LEVEL
                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)
                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)
                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)
                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
                oSegment = oTransactionset.CreateDataSegment("HL\REF")
                oSegment.DataElementValue(1) = "BM"     && Reference Identification Qualifier
                oSegment.DataElementValue(2) = "33333"     && Reference Identification
         
                * DTM - DATE/TIME REFERENCE
                oSegment = oTransactionset.CreateDataSegment("HL\DTM")
                oSegment.DataElementValue(1) = "011"     && Date/Time Qualifier
                oSegment.DataElementValue(2) = "19971211"     && Date
         
                * DTM - DATE/TIME REFERENCE
                oSegment = oTransactionset.CreateDataSegment("HL\DTM(2)")
                oSegment.DataElementValue(1) = "017"     && Date/Time Qualifier
                oSegment.DataElementValue(2) = "19971211"     && Date
         
                * N1 - NAME
                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
                oSegment = oTransactionset.CreateDataSegment("HL\N1\N3")
                oSegment.DataElementValue(1) = "P.O. BOX 0000"     && Address Information
         
                * N4 - GEOGRAPHIC LOCATION
                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
         
                * N1 - NAME
                oSegment = oTransactionset.CreateDataSegment("HL\N1(2)\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
                oSegment = oTransactionset.CreateDataSegment("HL\N1(2)\N3")
                oSegment.DataElementValue(1) = "1000 N. SAMPLE HIGHWAY"     && Address Information
         
                * N4 - GEOGRAPHIC LOCATION
                oSegment = oTransactionset.CreateDataSegment("HL\N1(2)\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
         
                    * HL - HIERARCHICAL LEVEL
                    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
                    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
                    oSegment = oTransactionset.CreateDataSegment("HL\REF")
                    oSegment.DataElementValue(1) = "IV"     && Reference Identification Qualifier
                    oSegment.DataElementValue(2) = "00001"     && Reference Identification
             
                    * FOB - F.O.B. RELATED INSTRUCTIONS
                    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
             
                        * HL - HIERARCHICAL LEVEL
                        oSegment = oTransactionset.CreateDataSegment("HL\HL")
                        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
                        oSegment = oTransactionset.CreateDataSegment("HL\LIN")
                        oSegment.DataElementValue(1) = "1"     && Assigned Identification
                        oSegment.DataElementValue(2) = "UA"     && Product/Service ID Qualifier
                        oSegment.DataElementValue(3) = "Product ID of item 1"     && Product/Service ID
                 
                        * SN1 - ITEM DETAIL (SHIPMENT)
                        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
                        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
                        oSegment = oTransactionset.CreateDataSegment("HL\PID")
                        oSegment.DataElementValue(1) = "F"     && Item Description Type
                        oSegment.DataElementValue(5) = "Description of item 1"     && Description
                
                        nItemCounter = nItemCounter  + 1
                    EndDo    && ITEMS
            
                    nOrderCounter = nOrderCounter  + 1
                EndDo    && ORDERS
        
                nShipmentCounter = nShipmentCounter  + 1
            EndDo    && SHIPMENT
 
        * CTT - TRANSACTION TOTALS
        oSegment = oTransactionset.CreateDataSegment("CTT")
        oSegment.DataElementValue(1) = "6"     && Number of Line Items
 
        * TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES)
        * THE EDIDOC OBJECT INTO AN EDI FILE.
        oEdiDoc.Save("856OUTPUT.X12",0)
 
        ? "Done"
    

    Click here to download a trial version of the Framework EDI