Ich kann das Problem eigentlich auch nicht nachvollziehen.

Arbeitet man mit Identity Columns und fügt einen einzelnen Satz mit SQL oder native I/O ein, kann man der eingefügten Identity-Wert mit dem SQL Befehl Identity_Val_Local ermitteln.
Dabei ist es unerheblich, wie der Satz erzeugt wurde (SQL oder Native I/O). Das der Job und innerhalb des Jobs das Job-Level wird berückichtigt, d.h. auch wenn durch einen anderen Job oder einen Trigger ein weiterer Datensatz hinzugefügt wurde, wird der Wert des vorhergehenen Inserts oder Writes ermittelt.

Bei Sequences ermittelt man den Wert zuerst und schreibt dann.

Werden bei einem SQL Insert mehrere Sätze eingefügt, kann man die soeben eingefügten Datensätze (ab 6.1) mit allen (generierten) Werten wie folgt ermitteln. Das Insert-Statement wird innerhalb eines Select-Statements ausgeführt.
z.B.

PHP-Code:
'
Select HdrId, OrderNo
  From Final Table(Insert OrderHdr(OrderNo,  CustNo,  DelTerms, 
                                   DelDate, OrderType) 
                          Select IFORDN,     IFCUST,  IFDELT,
                                 Date(Digits(IFDELT concat '
000000',
                                 IFORDT)
                              From  Interface
                             Where IFSTAT = ' ')
Order By Input Sequence 
Birgitta