Compañero Edgar, hay más de una forma de pelar un gato.
No te entiendo muy bien para qué quieres hacer eso, porque ya la funcionalidad del DW identifica si hubo cambios para almacenarlos o no. Tampoco entiendo si se trata de una comparación de un registro a otro o de muchos contra muchos.
En fin... si es de muchos contra muchos.
Lo básico podría ser comparar el DS con el DW de la siguiente forma:
For li_1=1 to ds_1.RowCount() // Comparar Filas
For li_2=1 to (Cantidad Columnas del DS) // Comparar Columnas
If ds_1.Object.Data .PRIMARY.Current[li_1, li_2 ] <> dw_1.Object.Data .PRIMARY.Current[li_1, li_2 ] Then
// Hay Diferencia.
End If
Next
Next
Pero esto te da mucho problema, comenzando porque tendrías que evaluar si hubo registro borrados.
Te recomiendo que emplees las utilidades de los DataWindow, en donde puedes obtener el estado de cada fila y cada columna, para ver si hubo variaciones, utilizando GetItemStatus(registro, columna, PRIMARY!)
columna - puede ser el número una específica o 0 para la todo el registro.
También puedes utilizar las funciónes GetNextModified, ModifiedCount, DeletedCount
Recuerda que también pueden existir registros borrados.
Espero que te sirva.