Amigos, Gostaria de uma dica para seguinte situação: Criei uma UPC que verificar o valor da ultima compra de um ITEM, caso o valor seja maior que o ultimo valor comprado, o usuário não deve conseguir incluir o item. Gostaria de saber como faço para enviar um comando via UPC, que ao clicar no botão salvar...."BEFORE-SAVE-FIELDS" , o programa não evolua e volte para o campo que eu definir. Fazer volta pro campo em já consegui fazer com o comando entry, preciso agora saber como faço para para a evolução do programa. Obrigado pelo sempre apoio dado por vocês do fórum. André.
Se houver BO da tabela, utilize-a, conforme o exemplo de código a seguir, dentro da tag Código: , para fazer o cancelamento do processamento: Esse exemplo abaixo se refere a processamento de Pedido de Venda: [code] {include/i-epc200.i bodi159} /*INFORMAR A BO QUE EXECUTARµ O EVENTO DE UPC*/ /* Include com definicao da temp-table RowErrors */ DEFINE TEMP-TABLE RowErrors NO-UNDO FIELD ErrorSequence AS INTEGER FIELD ErrorNumber AS INTEGER FIELD ErrorDescription AS CHARACTER FIELD ErrorParameters AS CHARACTER FIELD ErrorType AS CHARACTER FIELD ErrorHelp AS CHARACTER FIELD ErrorSubType AS CHARACTER. DEF INPUT PARAM p-ind-event AS CHAR NO-UNDO. DEF INPUT-OUTPUT PARAM TABLE FOR tt-epc. define temp-table tt-ped-venda no-undo like ped-venda field r-rowid as rowid. def var h-bo as handle no-undo. DEFINE VAR level AS INT INITIAL 1. DEF VAR PROGRAMA AS char NO-UNDO init "". REPEAT WHILE PROGRAM-NAME(level) <> ?. IF PROGRAM-NAME(level) = "deleteRecord dibo/bodi159.p" then do: assign programa = "deleteRecord". LEAVE. end. ASSIGN level = level + 1. END. FIND tt-epc WHERE tt-epc.cod-event = "afterValidateRecord" and tt-epc.cod-parameter = "Object-Handle" and programa <> "deleteRecord" NO-ERROR . IF AVAIL tt-epc Then Do: ASSIGN h-bo = WIDGET-HANDLE(tt-epc.val-parameter). RUN getRecord IN h-bo (OUTPUT TABLE tt-ped-venda). FIND FIRST tt-ped-venda NO-LOCK NO-ERROR. if tt-ped-venda.cod-canal-venda <= 216 THEN DO: RUN _insertErrorManual IN h-bo ( INPUT "0", INPUT "EMS":U, INPUT "INFORMATION":U, /*"INFORMATION OU WARNING" ou "ERROR":U*/ INPUT "Teste de erro de canal de venda", /*Customizável*/ INPUT "IGNORAR ESTA MENSAGEM", /*Customizável*/ INPUT "":U). END. END. return "ok". Caso você não queira usar UPC de BO, pode fazer via UPC de tela, mas aí você terá que criar um botão que fique em cima do botão de Salvar padrão, de modo que apenas o novo botão esteja disponível para acesso do usuário... Daí, no choose deste novo botão você faz a validação que deseja e logo em seguida dá um apply choose no botão padrão... mas a UPC de BO é sempre a mais adequada para validações com bloqueio do processamento. Certo?