Because here you used loop and it will assign one by one row to out_TransactionItem till last row. So, when going to Process TransactionData state it contains last row value only. Because of that its doing like that.
Don’t use For Each Row loop here. Instead of that try below way.
First read data from input source in Init state and pass that output DataTable from Init state to Get TransactionData state.
IF in_TransctionNumber <= inputDT.rows.count
out_TransactionItem = inputDT(in_TransctionNumber - 1)
In one iteration, it will read one row and pass it to Process TransactionData state and will process it. Once completed again it will go back to Get TransactionData state and will read next transctionItem. This process will continue till last transaction item found.