A função ProcName() retorna o nome da rotina ou função, definida pelo usuário, corrente ou anterior. Esta função pode muito ser útil quando queremos condicionar nosso fonte a executar algo se ele passar por alguma função dentro de uma rotina padrão ou customizada. Sintaxe ProcName ( [ nAtivacao] ) --> cRet Parâmetros/Elementos
Nome | Tipo | Descrição | Obrigatório | Referência |
nAtivacao | Numérico | Indica um valor numérico que especifica qual ativação será questionada. Sendo: 0- Refere-se à ativação corrente; 1-Refere-se à ativação anterior, etc. No entanto, caso nenhum valor seja especificado, o padrão será zero (0). |
User Function AT400GRV If FunName() = "TECA400" If Alltrim(ProcName(3))!="AT400PROC" MSMM(AB3->AB3_CODOBS, Nil, Nil, M->AB3_OBS, 1, Nil, Nil, "AB3","AB3_CODOBS") Endif Endif ReturnOu por exemplo:
User Function M410STTS() Private _cArea := GetArea() Private _cAreaSC6 := SC6->(GetArea()) Private _nRecSC6 Private _cPedido For x := 1 to Len(ProcName()) If ProcName(x) == "A410DEVOL" //se encontrar a função A410DEVOL, fará alguma ação dbSelectArea("SC6") _nRecSC6 := RecNo() _cPedido := SC6->C6_NUM dbSetOrder(1) dbSeek( xFilial("SC6") + _cPedido ) While !Eof() .and. SC6->C6_NUM == _cPedido .and. SC6->C6_FILIAL == xFilial("SC6") dbSelectArea("SD1") dbSetOrder(1) If dbSeek( xFilial("SD1") + SC6->C6_NFORI + SC6->C6_SERIORI + SC6->C6_CLI + SC6->C6_LOJA + SC6->C6_PRODUTO + SC6->C6_ITEMORI ) dbSelectArea("SC6") RecLock("SC6",.F.) SC6->C6_NUMSERI := SD1->D1_MSERIAL MsUnlock() Endif dbSkip() EndDo Goto _nRecSC6 Endif Next RestArea(_cAreaSC6) RestArea(_cArea) ReturnCaso não saiba qual posição encontra-se o processo, você pode utilizar o FOR conforme exemplo acima.
For x := 1 to Len(ProcName()) If ProcName(x) == "FUNCAOPROCURADA" /*SEU CODIGO CASO ENCONTRE*/ Endif Next