procedure TForm1.cmdTranslateClick(Sender: TObject);
        //This is just an example program to demonstrate how to create a functional acknowledgment 997 4010 file
        //in Delphi using the Framework EDI component

        var
           oEdiDoc : IediDocument;
           oAck : IediAcknowledgment;
           oSchemas : IediSchemas;
           oSegment : IediDataSegment;

           sPath : String;
           sSefFile : String;
           sEdiFile : String;
           sAckFile : String;

        begin

           cmdTranslate.Enabled := False;

           sPath := Trim(GetCurrentDir) + '\';'

           //edi file to be acknowledge
           sEdiFile := '835.X12';

           oEdiDoc := CoediDocument.Create();

           //change cursor type from dynamic (default) to ForwardOnly to improve performance
           oEdidoc.CursorType := Cursor_ForwardOnly;

           //By default, FREDI uses the  universal coordinated time (UTC), however you can change it to local time
           oEdiDoc.Option[12] := 1;

           //Disable standard reference.  Use SEF file only
           oSchemas := oEdidoc.GetSchemas as IediSchemas;
           oSchemas.EnableStandardReference := false;

           //Load SEF files
           //for reading the EDI file to be acknowledged (in this example it is the 835)
           oEdidoc.LoadSchema(spath + '835_X091.SEF',0);

           //for creating 997 EDI file
           oEdidoc.LoadSchema(spath + '997_4010.SEF',0);

           //Enable acknowledgment
           oAck := oEdiDoc.GetAcknowledgment as IediAcknowledgment;
           oAck.EnableFunctionalAcknowledgment := true;

           //Property to enable TA1 acknowledgment in the 997
           oAck.EnableInterchangeAcknowledgment := true;

           //Option to combine the TA1 and 997 into one Interchange
           oAck.Option[4] := 1;

           //Do not show segments AK2, AK3, AK5 if transaction set is accepted (AK501 = "A")
           oAck.Option[OptAcknowledgment_ShowReportingLevel] := 0;

           //Set starting point of EDI Ack control numbers
           oAck.Property_[PropertyAck_StartInterchangeControlNum]:= 1010;
           oAck.Property_[PropertyAck_StartGroupControlNum]:= 10;
           oAck.Property_[PropertyAck_StartTransactionSetControlNum]:= 1;


           //Property to specify that the transaction set is accepted even with errors
           //oAck.AcceptSetWithErrors = True ;

            //Property to specify that the group set is accepted even with errors
            //oAck.AcceptGroupWithErrors = True ;

           // Errors that are not automatically included by FREDI in the 997 file can be added
           //  by mapping FREDI's error code number to the 997 error code.
           // In this example, errors caused by leading zeros in numeric data type are mapped to
           // 997 error code 5 (Element too long)
           oAck.MapDataElementLevelError(13209, 5,'','','','');
    
           //Load EDI file to be acknowledged
           oEdiDoc.LoadEdi(sPath + sEdiFile);

           //When the cursor type is set to ForwardOnly, make sure to traverse through all segments to allow FREDI to validate them.
           oSegment := oEdiDoc.FirstDataSegment as IediDataSegment;
           while oSegment <> Nil do begin
                oSegment := oSegment.Next as IediDataSegment;
           End;

           // After the entire EDI file has been read, the oAck object that FREDI created automatically
           // can be read or even modified e.g.
 
           // Gets the first data segment of the Acknowledgment 
           // oSegment := oAck.GetFirst997DataSegment as IediDataSegment;

           // Check to see if the acknpwedgment was a rejection
           // oSegment := oSegment.GetDataSegmentByPos('\ISA\GS\ST\AK9')  as IediDataSegment;
           // if oSegment.DataElementValue[1] = "R" then begin  //Reject
           // End;

           //save acknowledgment file
           oAck.Save(sPath + '997_' + sEdiFile);

           ShowMessage('Done.  Output = ' + sPath + '997_' + sEdiFile);
           cmdTranslate.Enabled := true;

    End;

    Click here to download a trial version of the Framework EDI