Boa tarde!
Segue um exemplo, no seu caso basta chamar o modelo da ZZQ na parte do GetModel e preencher os campos com seu devido conteúdo:
Lembre-se que ao chamar o método AddLine toda a linha será validada de acordo com as regras do campo/modelo, então caso existir algum dado preenchido incorretamente, será necessário tratar o mesmo.
Static Function fLoadData
Local oModel As Object
Local oGridZPS As Object
Local nCount As Numeric
Local _cAlias As Character
nCount := 0
oModel := FwModelActive()
oGridZPS := oModel:GetModel('GridZPS')
If(oGridZPS:IsEmpty())
_cAlias := GetNextAlias()
BeginSql Alias _cAlias
%NoParser%
SELECT * FROM ZVW_MOVIMENTACAO_PALLET_CARGAS
WHERE
FILIAL = %Exp:DAK->DAK_FILIAL% AND
CARGA = %Exp:DAK->DAK_COD% AND
TIPO = 'S'
ORDER BY
FILIAL,
CARGA,
CODCLI,
LOJCLI
EndSql
Count To nCount
ProcRegua(nCount)
(_cAlias)->(DbGoTop())
While(!(_cAlias)->(EoF()))
If(!oGridZPS:IsEmpty())
oGridZPS:AddLine()
EndIf
oGridZPS:SetValue('ZPS_CODIGO' , AllTrim((_cAlias)->CODPRO))
oGridZPS:SetValue('ZPS_DSCPRO' , AllTrim((_cAlias)->DSCPRO))
oGridZPS:SetValue('ZPS_CLIENT' , (_cAlias)->CODCLI)
oGridZPS:SetValue('ZPS_LOJA' , (_cAlias)->LOJCLI)
oGridZPS:SetValue('ZPS_RAZSOC' , (_cAlias)->RAZSOC)
oGridZPS:SetValue('ZPS_DTDIGI' , sToD(cValToChar((_cAlias)->DTDIGI)))
oGridZPS:SetValue('ZPS_QUANT' , (_cAlias)->QUANT)
(_cAlias)->(DbSkip())
IncProc()
EndDo
oGridZPS:GoLine(1)
(_cAlias)->(DbCloseArea())
Else
Help(,,'Opção Não Disponível',,'Esta opção só está disponível quando ainda não foram preenchidos itens para a carga.',1,0,,,,,,{''})
EndIf
Return