Online Help TEDITransactionSet

Unit JclEDI_ANSIX12

Types

TEDITransactionSet

   The TEDITransactionSet object contains and manages TEDISegment objects.

   In JclEDI_UNEDIFACT.pas: Use the TEDIMessage object instead since TEDITransactionSet object is not defined.

 Procedure and Properties

procedure InternalCreateHeaderTrailerSegments; virtual;
property SegmentST: TEDITransactionSetSegment
  read FSTSegment write SetSTSegment;
property SegmentSE: TEDITransactionSetSegment
  read FSESegment write SetSESegment;

   InternalCreateHeaderTrailerSegments creates the EDI transaction set header and trailer segments and is called in the constructor.

   The SegmentST property is the transaction set header segment. The "ST" segment contains the "Transaction Set Identifier Code" and "Transaction Set Control Number" data elements in ANSI X12.

   The SegmentSE property is the transaction set trailer segment. The "SE" segment contains the "Number of Included Segments" and "Transaction Set Control Number" data elements in ANSI X12.

   It is important to note that the TEDITransactionSet does not make any assumptions on the data contained within the "ST" and "SE" segments, and it is up the programmer to accurately maintain the data within these segments.

   For custom EDI implementations the "ST" and "SE" segments can be used with a varying number of elements within these segments.

 Function

function InternalCreateSegment: TEDISegment; virtual;

   InternalCreateaSegment will create a TEDISegment object and is used by InternalCreateEDIDataObject.

 Function

function InternalAssignDelimiters: TEDIDelimiters; override;

   Acquires a TEDIDelimiter reference from the TEDITransactionSet parent object.

 Function

function InternalCreateEDIDataObject: TEDIDataObject; override;

   This function calls InternalCreateSegment

 Functions and Procedures

function AddSegment: Integer;
function AppendSegment(Segment: TEDISegment): Integer;
function InsertSegment(InsertIndex: Integer): Integer; overload;
function InsertSegment(InsertIndex: Integer; Segment: TEDISegment): Integer;
  overload;
procedure DeleteSegment(Index: Integer); overload;
procedure DeleteSegment(Segment: TEDISegment); overload;
function AddSegments(Count: Integer): Integer;
function AppendSegments(SegmentArray: TEDISegmentArray): Integer;
function InsertSegments(InsertIndex, Count: Integer): Integer; overload;
function InsertSegments(InsertIndex: Integer;
  SegmentArray: TEDISegmentArray): Integer; overload;
procedure DeleteSegments; overload;
procedure DeleteSegments(Index, Count: Integer); overload;

   Segment item management functions and procedures.

 Function

function Assemble: string; override;

   This function implements the assembling of EDI data into EDI file format.

 Procedure

procedure Disassemble; override;

   This procedure implements the disassembling of EDI data from EDI file format.

 Property

property Segment[Index: Integer]: TEDISegment read GetSegment write SetSegment;
  default;

   This property allows direct and easy access to the TEDISegment objects managed by the object list in TEDITransactionSet.

 Property

property Segments: TEDIDataObjectList read FEDIDataObjects;

   A property that exposes the object list in TEDITransactionSet.

 Property

property SegmentCount: Integer read GetCount;

   Gets the count of TEDISegment objects. The "ST" and "SE" segments are not included in this count.

Usage

Notes & Examples

A simple example:

 Create 997 Example:

procedure Create997Transaction(TS: TEDITransactionSet);
var
  TSCN: string;
begin
  TSCN := GetTransactionSetControlNumber;
  //Transaction Set Header
  TS.SegmentST.DeleteElements;
  TS.SegmentST.AddElements(2);
  //Transaction Set Identifier Code
  TS.SegmentST[0].Data := '997';
  //Transaction Set Control Number
  TS.SegmentST[1].Data := TSCN;
  TS.DeleteSegments;
  TS.AddSegments(4);
  //Functional Group Response Header
  TS[0].AddElements(2);
  TS[0].SegmentId := 'AK1';
  //Functional Identifier Code
  TS[0][0].Data := 'HC';
  //Payment Order/Remittance Advice (820)
  TS[0][1].Data := '1';
  //Transaction Set Response Header
  TS[1].AddElements(2);
  TS[1].SegmentId := 'AK2';
  //Transaction Set Identifier Code
  TS[1][0].Data := '837';
  //Transaction Set Control Number
  TS[1][1].Data := '031711';
  //Transaction Set Response Trailer
  TS[2].AddElements(1);
  TS[2].SegmentId := 'AK5';
  //Transaction Set Acknowledgment Code
  TS[2][0].Data := 'A';
  //Functional Group Response Trailer
  TS[3].AddElements(2);
  TS[3].SegmentId := 'AK9';
  //Functional Group Acknowledge Code
  TS[3][0].Data := 'A';
  //Number of Transaction Sets Included
  TS[3][1].Data := '1';
  //Number of Received Transaction Sets
  TS[3][2].Data := '1';
  //Number of Accepted Transaction Sets
  TS[3][3].Data := '1';
  //Transaction Set Trailer
  TS.SegmentSE.DeleteElements;
  TS.SegmentSE.AddElements(2);
  //Number of Included Segments
  TS.SegmentSE[0].Data := IntToStr(TS.SegmentCount);
  //Transaction Set Control Number
  TS.SegmentSE[1].Data := TSCN;
end;