Gravar campo customizado OPs filhas - msExecAuto({|x,Y| Mata650(x,Y)},aMata650,nOpc)

Boa tarde ! Tenho uma rotina ExecAuto para abertura automatica de OPs.

Ela funciona bem. Tenho um campo customizado C2_PROGRAM que é preenchio com o número do programa.

A rotina gera a OP principal e suas filhas ... porém o campo C2_PROGRAM só é preenchido na OP pai. Alguém sabe como faço para gravar um campo customizado nas ops filhas ?

aMata650 := { {"C2_FILIAL" , xFilial("SC2") ,Nil},; {"C2_PRODUTO", oGetDados:aCols[i,5],NIL},; {"C2_QUANT" , 1 ,NIL},; {"C2_DATPRI" , dDatabase ,NIL},; {"C2_DATPRF" , dDatabase ,NIL},; {"C2_TPOP" , cTGet09 ,Nil},; {"C2_OBS" , cTGet10 ,Nil},; {"C2_PROGRAM" , cTGet10 ,Nil},; {"AUTEXPLODE" , "S" ,NIL}}

msExecAuto({|x,Y| Mata650(x,Y)},aMata650,nOpc)

Obrigado.

Daniel, uma saída que uso nesses casos do execauto não respeitar os campos customizados enviados no array é uma gravação posterior protegida por transação, mais ou menos nesse formato:

BEGIN TRANSACTION

aMata650 := { {"C2_FILIAL" , xFilial("SC2") ,Nil},; {"C2_PRODUTO", oGetDados:aCols[i,5],NIL},; {"C2_QUANT" , 1 ,NIL},; {"C2_DATPRI" , dDatabase ,NIL},; {"C2_DATPRF" , dDatabase ,NIL},; {"C2_TPOP" , cTGet09 ,Nil},; {"C2_OBS" , cTGet10 ,Nil},; {"C2_PROGRAM" , cTGet10 ,Nil},; {"AUTEXPLODE" , "S" ,NIL}}

msExecAuto({|x,Y| Mata650(x,Y)},aMata650,nOpc)

_cfilial := SC2->C2_FILIAL _cop := SC2->C2_COD

//aqui faz uma query para puxar os registros gerados como op filhas // essa query tem que retornar o re_c_n_o do registro para posicionar depois

Do while !calias(eof())

SC2->(Dbgoto(calias->RECNO

reclock com campos que precisar aqui

calias->(Dbseek())

Enddo

END TRANSACTION

Obrigado. Estava tendo via PE. Ainda não consegui. Vou tentar da forma que você sugeriu.

USER FUNCTION MTA650I

DBSELECTAREA(“SC2”)

If (SC2->C2_NUM == C2_NUM )
reclock(“SC2”,.F.)
SC2->C2_PROGRAM := C2_PROGRAM
SC2->(MSUNLOCK())
Endif

RETURN