private void btnGenerate_Click(object sender, System.EventArgs e) { //This is just an example program to demonstrate how to generate an EDI X12 211 file using the Framework EDI component in C# 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 sEdiFile = "211Output.X12"; string sSefFile = "211_003070.SEF"; //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","003070")); 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,"ZZ"); //Interchange ID Qualifier oSegment.set_DataElementValue(6,0,"AABB "); //Interchange Sender ID oSegment.set_DataElementValue(7,0,"01"); //Interchange ID Qualifier oSegment.set_DataElementValue(8,0,"112233445 "); //Interchange Receiver ID oSegment.set_DataElementValue(9,0,"080304"); //Interchange Date oSegment.set_DataElementValue(10,0,"1116"); //Interchange Time oSegment.set_DataElementValue(11,0,"U"); //Interchange Control Standards Identifier oSegment.set_DataElementValue(12,0,"00307"); //Interchange Control Version Number oSegment.set_DataElementValue(13,0,"000017859"); //Interchange Control Number oSegment.set_DataElementValue(14,0,"0"); //Acknowledgment Requested oSegment.set_DataElementValue(15,0,"P"); //Usage Indicator oSegment.set_DataElementValue(16,0,">"); //Component Element Separator //CREATES THE GS SEGMENT ediGroup.Set(ref oGroup, (ediGroup) oInterchange.CreateGroup("003070")); ediDataSegment.Set( ref oSegment, (ediDataSegment) oGroup.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"BL"); //Functional Identifier Code oSegment.set_DataElementValue(2,0,"AABB"); //Application Sender's Code oSegment.set_DataElementValue(3,0,"112233445"); //Application Receiver's Code oSegment.set_DataElementValue(4,0,"080304"); //Date oSegment.set_DataElementValue(5,0,"1116"); //Time oSegment.set_DataElementValue(6,0,"1"); //Group Control Number oSegment.set_DataElementValue(7,0,"X"); //Responsible Agency Code oSegment.set_DataElementValue(8,0,"003070"); //Version / Release / Industry Identifier Code //CREATES THE ST SEGMENT ediTransactionSet.Set(ref oTransactionset, (ediTransactionSet) oGroup.CreateTransactionSet("211")); ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.GetDataSegmentHeader()); oSegment.set_DataElementValue(1,0,"211"); //Transaction Set Identifier Code oSegment.set_DataElementValue(2,0,"000010001"); //Transaction Set Control Number //BOL - BEGINNING SEGMENT FOR THE MOTOR CARRIER BILL OF LADING ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("BOL")); oSegment.set_DataElementValue(1,0,"SCAC"); //Standard Carrier Alpha Code oSegment.set_DataElementValue(2,0,"PP"); //Shipment Method of Payment oSegment.set_DataElementValue(3,0,"12345"); //Shipment Identification Number oSegment.set_DataElementValue(4,0,"990501"); //Date oSegment.set_DataElementValue(6,0,"1231234561"); //Reference Identification //B2A - SET PURPOSE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("B2A")); oSegment.set_DataElementValue(1,0,"00"); //Transaction Set Purpose Code //MS2 - EQUIPMENT OR CONTAINER OWNER AND TYPE ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("MS2")); oSegment.set_DataElementValue(1,0,"SCAC"); //Standard Carrier Alpha Code oSegment.set_DataElementValue(2,0,"123456"); //Equipment Number //SHIPPER INFO LOOP //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N1")); oSegment.set_DataElementValue(1,0,"SH"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"SHIPPER NAME"); //Name oSegment.set_DataElementValue(3,0,"93"); //Identification Code Qualifier oSegment.set_DataElementValue(4,0,"123456789"); //Identification Code //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N3")); oSegment.set_DataElementValue(1,0,"9999 SHIPPER STREET"); //Address Information oSegment.set_DataElementValue(2,0,"ADDITIONAL ADDRESS LINE"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1\\N4")); oSegment.set_DataElementValue(1,0,"SHIPPER CITY"); //City Name oSegment.set_DataElementValue(2,0,"ST"); //State or Province Code oSegment.set_DataElementValue(3,0,"00000"); //Postal Code //CONSIGNEE INFO LOOP //N1 - NAME ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N1")); oSegment.set_DataElementValue(1,0,"CN"); //Entity Identifier Code oSegment.set_DataElementValue(2,0,"CONSIGNEE NAME"); //Name //N3 - ADDRESS INFORMATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N3")); oSegment.set_DataElementValue(1,0,"9999 CONSIGNEE STREET"); //Address Information oSegment.set_DataElementValue(2,0,"ADDITIONAL ADDRESS LINE"); //Address Information //N4 - GEOGRAPHIC LOCATION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\N4")); oSegment.set_DataElementValue(1,0,"CONSIGNEE CITY"); //City Name oSegment.set_DataElementValue(2,0,"ST"); //State or Province Code oSegment.set_DataElementValue(3,0,"99999"); //Postal Code //G61 - CONTACT ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("N1(2)\\G61")); oSegment.set_DataElementValue(1,0,"DC"); //Contact Function Code oSegment.set_DataElementValue(2,0,"DELIVERY CONTACT NAME"); //Name oSegment.set_DataElementValue(3,0,"TE"); //Communication Number Qualifier oSegment.set_DataElementValue(4,0,"5559999999"); //Communication Number //AT1 - BILL OF LADING LINE ITEM NUMBER ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT1")); oSegment.set_DataElementValue(1,0,"1"); //Lading Line Item Number //L11 - BUSINESS INSTRUCTIONS AND REFERENCE NUMBER ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\L11")); oSegment.set_DataElementValue(1,0,"999"); //Reference Identification oSegment.set_DataElementValue(2,0,"AE"); //Reference Identification Qualifier //AT4 - BILL OF LADING DESCRIPTION ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT4")); oSegment.set_DataElementValue(1,0,"COMMODITY 1"); //Lading Description //AT2 - BILL OF LADING LINE ITEM DETAIL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\AT2")); oSegment.set_DataElementValue(1,0,"5"); //Lading Quantity oSegment.set_DataElementValue(2,0,"CTN"); //Packaging Form Code oSegment.set_DataElementValue(3,0,"N"); //Weight Qualifier oSegment.set_DataElementValue(4,0,"L"); //Weight Unit Code oSegment.set_DataElementValue(5,0,"210"); //Weight oSegment.set_DataElementValue(9,0,"999999-01"); //Commodity Code //MAN - MARKS AND NUMBERS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\MAN")); oSegment.set_DataElementValue(1,0,"GM"); //Marks and Numbers Qualifier oSegment.set_DataElementValue(2,0,"00000858050113093100"); //Marks and Numbers //MAN - MARKS AND NUMBERS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\MAN(2)")); oSegment.set_DataElementValue(1,0,"GM"); //Marks and Numbers Qualifier oSegment.set_DataElementValue(2,0,"00000858050113093101"); //Marks and Numbers //MAN - MARKS AND NUMBERS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\MAN(3)")); oSegment.set_DataElementValue(1,0,"GM"); //Marks and Numbers Qualifier oSegment.set_DataElementValue(2,0,"00000858050113093102"); //Marks and Numbers //MAN - MARKS AND NUMBERS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\MAN(4)")); oSegment.set_DataElementValue(1,0,"GM"); //Marks and Numbers Qualifier oSegment.set_DataElementValue(2,0,"00000858050113093103"); //Marks and Numbers //MAN - MARKS AND NUMBERS ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\MAN(5)")); oSegment.set_DataElementValue(1,0,"GM"); //Marks and Numbers Qualifier oSegment.set_DataElementValue(2,0,"00000858050113093104"); //Marks and Numbers //SPO - SHIPMENT PURCHASE ORDER DETAIL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\SPO")); oSegment.set_DataElementValue(1,0,"PO123567"); //Purchase Order Number oSegment.set_DataElementValue(2,0,"RF1144"); //Reference Identification oSegment.set_DataElementValue(3,0,"CP"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"12"); //Quantity //SPO - SHIPMENT PURCHASE ORDER DETAIL ediDataSegment.Set(ref oSegment, (ediDataSegment) oTransactionset.CreateDataSegment("AT1\\AT2\\SPO(2)")); oSegment.set_DataElementValue(1,0,"PO456789"); //Purchase Order Number oSegment.set_DataElementValue(2,0,"RF1144"); //Reference Identification oSegment.set_DataElementValue(3,0,"CP"); //Unit or Basis for Measurement Code oSegment.set_DataElementValue(4,0,"15"); //Quantity //TRAILING SEGMENTS ARE AUTOMATICALLY CREATED //DISPLAY EDI STRING MessageBox.Show(oEdiDoc.GetEdiString(),"EDI File"); //SAVE THE EDI DOCUMENT OBJECT INTO AN EDI FILE. oEdiDoc.Save(sPath + sEdiFile); MessageBox.Show(sPath + sEdiFile, "EDI File saved"); //DESTROYS OBJECTS oSegment.Dispose(); oTransactionset.Dispose(); oGroup.Dispose(); oInterchange.Dispose(); oSchema.Dispose(); oSchemas.Dispose(); oEdiDoc.Dispose(); }