private void btnGenerate_Click(object sender, System.EventArgs e) { //This is just an example program to demonstrate how to generate an EDI 856 file in C# // using the Framework EDI component ediDocument oEdiDoc = null; ediSchema oSchema = null; ediSchemas oSchemas = null; ediInterchange oInterchange = null; ediGroup oGroup = null; ediTransactionSet oTransactionset = null; ediDataSegment oSegment = null; string sPath = AppDomain.CurrentDomain.BaseDirectory; string sSefFile = "856_X12-4010.SEF"; string sEdiFile = "856OUTPUT.X12"; Cursor = Cursors.WaitCursor; //CREATES OEDIDOC OBJECT ediDocument.Set(ref 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(ref oSchemas,(ediSchemas) oEdiDoc.GetSchemas()); oSchemas.EnableStandardReference = false; //ENABLES FORWARD WRITE, AND INCREASES BUFFER I/O TO IMPROVE PERFORMANCE oEdiDoc.CursorType = DocumentCursorTypeConstants.Cursor_ForwardWrite; oEdiDoc.set_Property(DocumentPropertyIDConstants.Property_DocumentBufferIO, 2000); //SET TERMINATORS oEdiDoc.SegmentTerminator = "~{13:10}"; oEdiDoc.ElementTerminator = "*"; oEdiDoc.CompositeTerminator = ">"; //LOADS THE SEF FILE ediSchema.Set(ref oSchema, (ediSchema) oEdiDoc.LoadSchema(sPath + sSefFile, 0)); //CREATES THE ISA SEGMENT ediInterchange.Set(ref oInterchange, (ediInterchange) oEdiDoc.CreateInterchange("X","004010")); ediDataSegment.Set(ref oSegment, (ediDataSegment) oInterchange.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"00"); //Authorization Information Qualifier oSegment.set_DataElementValue(2,0," "); //Authorization Information oSegment.set_DataElementValue(3,0,"00"); //Security Information Qualifier oSegment.set_DataElementValue(4,0," "); //Security Information oSegment.set_DataElementValue(5,0,"14"); //Interchange ID Qualifier oSegment.set_DataElementValue(6,0,"0073268795005 "); //Interchange Sender ID oSegment.set_DataElementValue(7,0,"ZZ"); //Interchange ID Qualifier oSegment.set_DataElementValue(8,0,"RECEIVERISA "); //Interchange Receiver ID oSegment.set_DataElementValue(9,0,"960807"); //Interchange Date oSegment.set_DataElementValue(10,0,"1548"); //Interchange Time oSegment.set_DataElementValue(11,0,"U"); //Interchange Control Standards Identifier oSegment.set_DataElementValue(12,0,"00401"); //Interchange Control Version Number oSegment.set_DataElementValue(13,0,"000000020"); //Interchange Control Number oSegment.set_DataElementValue(14,0,"0"); //Acknowledgment Requested oSegment.set_DataElementValue(15,0,"T"); //Usage Indicator oSegment.set_DataElementValue(16,0,">"); //Component Element Separator //CREATES THE GS SEGMENT ediGroup.Set(ref oGroup, (ediGroup) oInterchange.CreateGroup("004010")); ediDataSegment.Set( ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"SH"); //Functional Identifier Code oSegment.set_DataElementValue(2,0,"007326879"); //Application Sender's Code oSegment.set_DataElementValue(3,0,"RECEIVERGS"); //Application Receiver's Code oSegment.set_DataElementValue(4,0,"19960807"); //Date oSegment.set_DataElementValue(5,0,"1548"); //Time oSegment.set_DataElementValue(6,0,"1"); //Group Control Number oSegment.set_DataElementValue(7,0,"X"); //Responsible Agency Code oSegment.set_DataElementValue(8,0,"004010"); //Version / Release / Industry Identifier Code //CREATES THE ST SEGMENT ediTransactionSet.Set(ref oTransactionset, (ediTransactionSet) oGroup.CreateTransactionSet("856")); ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"856"); //Transaction Set Identifier Code oSegment.set_DataElementValue(2,0,"00001"); //Transaction Set Control Number //BSN - BEGINNING SEGMENT FOR SHIP NOTICE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("BSN")); oSegment.set_DataElementValue(1,0,"00"); //Transaction Set Purpose Code oSegment.set_DataElementValue(2,0,txtShipmentID.Text ); //Shipment Identification oSegment.set_DataElementValue(3,0,"20020301"); //Date oSegment.set_DataElementValue(4,0,"1340"); //Time oSegment.set_DataElementValue(5,0,"0002"); //Hierarchical Structure Code // hypothetical numbers of shipments, orders and items int nShipmentCounter = 1; int nShipments = 1; int nOrderCounter = 1; int nOrders = 1; int nItemCounter = 1; int nItems = 6; int nHlCounter = 0; int nHlOrderParent ; int nHlItemParent ; //******************************************************************************************** //HL - HIERARCHICAL LEVEL - SHIPMENTS ******************************************************** while (nShipmentCounter <= nShipments) { nHlCounter = nHlCounter + 1; nHlOrderParent = nHlCounter; //HL - HIERARCHICAL LEVEL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1,0,nHlCounter.ToString() ); //Hierarchical ID Number oSegment.set_DataElementValue(3,0,"S"); //Hierarchical Level Code oSegment.set_DataElementValue(4,0,"1"); //Hierarchical Child Code //TD1 - CARRIER DETAILS (QUANTITY AND WEIGHT) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\TD1")); oSegment.set_DataElementValue(1,0,"TKT"); //Packaging Code oSegment.set_DataElementValue(2,0,"207"); //Lading Quantity oSegment.set_DataElementValue(6,0,"A3"); //Weight Qualifier oSegment.set_DataElementValue(7,0,"46.09"); //Weight oSegment.set_DataElementValue(8,0,"01"); //Unit or Basis for Measurement Code //TD5 - CARRIER DETAILS (ROUTING SEQUENCE/TRANSIT TIME) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\TD5")); oSegment.set_DataElementValue(2,0,"2"); //Identification Code Qualifier oSegment.set_DataElementValue(3,0,"IDCODE"); //Identification Code oSegment.set_DataElementValue(4,0,"M"); //Transportation Method/Type Code oSegment.set_DataElementValue(5,0,"FREEFORM"); //Routing //TD3 - CARRIER DETAILS (EQUIPMENT) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\TD3")); oSegment.set_DataElementValue(1,0,"TN"); //Equipment Description Code oSegment.set_DataElementValue(2,0,"BPL3"); //Equipment Initial oSegment.set_DataElementValue(3,0,"777777"); //Equipment Number //REF - REFERENCE IDENTIFICATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\REF")); oSegment.set_DataElementValue(1,0,"BM"); //Reference Identification Qualifier oSegment.set_DataElementValue(2,0,"33333"); //Reference Identification //DTM - DATE/TIME REFERENCE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\DTM")); oSegment.set_DataElementValue(1,0,"011"); //Date/Time Qualifier oSegment.set_DataElementValue(2,0,"19971211"); //Date //DTM - DATE/TIME REFERENCE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\DTM(2)")); oSegment.set_DataElementValue(1,0,"017"); //Date/Time Qualifier oSegment.set_DataElementValue(2,0,"19971211"); //Date //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1\\N1")); oSegment.set_DataElementValue(1,0,"BT"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"BUYSNACKS"); //Name oSegment.set_DataElementValue(3,0,"1"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"1223334444"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1\\N3")); oSegment.set_DataElementValue(1,0,"P.O. BOX 0000"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1\\N4")); oSegment.set_DataElementValue(1,0,"TEMPLE"); //City Name oSegment.set_DataElementValue(2,0,"TX"); //State or Province Code oSegment.set_DataElementValue(3,0,"76503"); //Postal Code //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1(2)\\N1")); oSegment.set_DataElementValue(1,0,"ST"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"BUYSNACKS PORT"); //Name oSegment.set_DataElementValue(3,0,"1"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"1223334445"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1(2)\\N3")); oSegment.set_DataElementValue(1,0,"1000 N. SAMPLE HIGHWAY"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\N1(2)\\N4")); oSegment.set_DataElementValue(1,0,"ATHENS"); //City Name oSegment.set_DataElementValue(2,0,"GA"); //State or Province Code oSegment.set_DataElementValue(3,0,"30603"); //Postal Code //******************************************************************************************** //HL - HIERARCHICAL LEVEL - ORDER ************************************************************ while (nOrderCounter <= nOrders) { nHlCounter = nHlCounter + 1; nHlItemParent = nHlCounter; //HL - HIERARCHICAL LEVEL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1,0,nHlCounter.ToString() ); //Hierarchical ID Number oSegment.set_DataElementValue(2,0,nHlOrderParent.ToString() ); //Hierarchical Parent ID Number oSegment.set_DataElementValue(3,0,"O"); //Hierarchical Level Code oSegment.set_DataElementValue(4,0,"1"); //Hierarchical Child Code //PRF - PURCHASE ORDER REFERENCE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\PRF")); oSegment.set_DataElementValue(1,0,"A99999-01"); //Purchase Order Number oSegment.set_DataElementValue(2,0,"016900"); //Release Number oSegment.set_DataElementValue(4,0,"19971207"); //Date //REF - REFERENCE IDENTIFICATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\REF")); oSegment.set_DataElementValue(1,0,"IV"); //Reference Identification Qualifier oSegment.set_DataElementValue(2,0,"00001"); //Reference Identification //FOB - F.O.B. RELATED INSTRUCTIONS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\FOB")); oSegment.set_DataElementValue(1,0,"PS"); //Shipment Method of Payment oSegment.set_DataElementValue(2,0,"DE"); //Location Qualifier //******************************************************************************************** //HL - HIERARCHICAL LEVEL - ITEMS ************************************************************ while (nItemCounter <= nItems) { nHlCounter = nHlCounter + 1; //HL - HIERARCHICAL LEVEL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\HL")); oSegment.set_DataElementValue(1,0,nHlCounter.ToString()); //Hierarchical ID Number oSegment.set_DataElementValue(2,0,nHlItemParent.ToString()); //Hierarchical Parent ID Number oSegment.set_DataElementValue(3,0,"I"); //Hierarchical Level Code oSegment.set_DataElementValue(4,0,"0"); //Hierarchical Child Code //LIN - ITEM IDENTIFICATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\LIN")); oSegment.set_DataElementValue(1,0,"1"); //Assigned Identification oSegment.set_DataElementValue(2,0,"UA"); //Product/Service ID Qualifier oSegment.set_DataElementValue(3,0,"Product ID of item 1"); //Product/Service ID //SN1 - ITEM DETAIL (SHIPMENT) ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\SN1")); oSegment.set_DataElementValue(2,0,"13"); //Number of Units Shipped oSegment.set_DataElementValue(3,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(5,0,"13"); //Quantity Ordered oSegment.set_DataElementValue(6,0,"CA"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(8,0,"AC"); //Line Item Status Code //PRF - PURCHASE ORDER REFERENCE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\PRF")); oSegment.set_DataElementValue(1,0,"A99999-01"); //Purchase Order Number oSegment.set_DataElementValue(2,0,"016900"); //Release Number oSegment.set_DataElementValue(4,0,"19971207"); //Date //PID - PRODUCT/ITEM DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("HL\\PID")); oSegment.set_DataElementValue(1,0,"F"); //Item Description Type oSegment.set_DataElementValue(5,0,"Description of item 1"); //Description nItemCounter = nItemCounter + 1; } //nItems nOrderCounter = nOrderCounter + 1; } //nOrders nShipmentCounter = nShipmentCounter + 1; } // nShipments //CTT - TRANSACTION TOTALS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("CTT")); oSegment.set_DataElementValue(1,0,nItems.ToString()); //Number of Line Items //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED WHEN FREDI COMMITS (SAVES) //THE EDIDOC OBJECT INTO AN EDI FILE. oEdiDoc.Save(sPath + sEdiFile); Cursor = Cursors.Default; //DESTROYS OBJECTS oSegment.Dispose(); oTransactionset.Dispose(); oGroup.Dispose(); oInterchange.Dispose(); oSchema.Dispose(); oSchemas.Dispose(); oEdiDoc.Dispose(); MessageBox.Show("Done. Output = " + sPath + sEdiFile); }