João,
Você precisa fazer isso utilizando o modelo e dois loops, veja um exemplo abaixo de forma bem macro:
//-------------------------------------------------------------------
/*/{Protheus.doc} meuExemploDeLadoEntreModelos
Exemplo de loop entre dois modelos, pai e filho
@author Daniel Mendes
@since 27/07/2022
@version 1.0
/*/
//-------------------------------------------------------------------
static function meuExemploDeLadoEntreModelos()
local oModel as object
local oParticipantes as object
local oTurmas as object
local nX as numeric
local nY as numeric
local nLineParticipantes as numeric
local nLineTurmas as numeric
//Pega o modelo ativo, talvez você receba o mesmo por parâmetro dependendo do lugar e como a função será chamada
oModel := FwModelActive()
//Pego os modelos de turmas e participantes
oTurmas := oModel:getModel("Turmas")
oParticipantes := oModel:getModel("Participantes")
//Salvo as linhas atuais
nLineTurmas := oTurmas:getLine()
nLineParticipantes := oParticipantes:getLine()
//Efetuo o laço entre o modelo pai e o filho
for nX := 1 to oTurmas:GetQTDLine()
//Vou para a linha de turmas
oTurmas:goLine(nX)
//...Efetuo meus processamentos, se necessário...
for nY := 1 to oParticipantes:getQTDLine()
//Vou para a linha de participantes
oParticipantes:goLine(nY)
//... Efetuo meus processamentos, se necessários...
next
next
//Restauro as linhas
oTurmas:goLine(nLineTurmas)
oParticipantes:goLine(nLineParticipantes)
return
Documentação: https://tdn.totvs.com.br/display/framework/FWFormGridModel