Bom dia, Adriano!
Dependendo de como estiver as suas chamadas no MenuDef, você pode fazer isso diretamente dentro de uma User Function.
Por exemplo: digamos que eu possua dois botões com operação 4, e irei fazer tratativas diferentes para cada um deles. Pra isso, crio uma User Function e passo um parâmetro pra ela:
Add Option aRotina Title 'Aprovar' Action 'U_FINA23UP(.T.)' Operation 4 Access 0
Add Option aRotina Title 'Processar' Action 'U_FINA23UP(.F.)' Operation 4 Access 0
Dentro da função, eu realizo tratativas de acordo com o parâmetro da função:
User Function FINA23UP(lAprv)
Local lRet := .T.
Default lAprv := .F.
If(lAprv .and. ZE1->ZE1_STATUS == '2')
lRet := .F.
Help(,,'Ação Inválida',,'O status do documento não permite a aprovação.',1,0,,,,,,{''})
ElseIf(!lAprv .and. ZE1->ZE1_STATUS == '1')
lRet := .F.
Help(,,'Ação Inválida',,'O status do documento não permite o processamento.',1,0,,,,,,{''})
EndIf
If(lRet)
FwExecView('Título da View', 'ELFINA23', 4)
EndIf
Return
Adriano, o que você deseja fazer?
— Daniel Mendes 23 de Sep de 2021Eu precisaria tratar o campo clicado para dar determinados tratamentos que são específicos de cada botão. Ou seja, O botao "Aprovar" possui 4 no retorno do GetOperation porém antes de abrir a tela, tenho que fazer algumas validações. Já o botão "Processar" também possui o GetOperation igual a 4 e os tratamentos sao outros. Entende? Por isso queria saber o botão clicado.
— Adriano Moreira 23 de Sep de 2021