Non ho controllato bene tutto il codice perchè i nomi delle variabili sono troppo simili e fanno venire il mal di testa

ma credo che il problema sia che con
B4X:
For I = 0 To MapRowApp.Size -1
Dim sSelRowA As RowList
sSelRowA.Initialize
sSelRowA = MapRowApp.Get(I)
MapRowList.Put(I, sSelRowA)
Next
sSelRowA diventa un riferimento del Type contenuto in MapRowApp.Get(I), non ne diventa una copia a sè stante.
Quindi è come lavorare sempre con il Type originario.
MapRowList conterrà i riferimenti ai Type di MapRowApp, quindi ogni modifica agirà su entrambi perchè puntano allo stesso oggetto (Type).
Puoi provare ad aggiungere una sub tipo questa
B4X:
Private Sub CopyType (source As RowList, target As RowList)
target.PrgPie = source.PrgPie
target.PrgAgg = source.PrgAgg
target.sCod = source.sCod
target.sDes = source.sDes
target.nQta = source.nQta
target.nTot = source.nTot
target.bAct = source.bAct
target.sKey = source.sKey
e dove ti serve una nuova copia di un type, indipendente, chiama
[CODE=b4x]CopyType(MapRowApp.Get(I), sSelRowA)
In questo modo sSelRowA sarà uguale come contenuto al type in MapRowApp.Get(I), ed eventuali modifiche a sSelRowA agiranno solo su di esso.
Lascio a te il divertimento di fare tutte le chiamate corrette con i nomi variabili che per te probabilmente sono più familiari.

Sperando di non aver fatto casino, fai sapere se risolvi.
Il ciclo diventerebbe così
B4X:
For I = 0 To MapRowApp.Size -1
Dim sSelRowA As RowList
sSelRowA.Initialize
CopyType(MapRowApp.Get(I), sSelRowA)
MapRowList.Put(I, sSelRowA)
Next
Magari ci sono soluzioni migliori ma ora mi è venuta così.