Boa tarde! Estou tentando interceptar a tt-movto que o ceapi001k está recebendo. Para isso, fiz uma UPC simples para fazer o message os pontos de entrada. Adicionei a UPC no ceapi001 (conforme o suporte instruiu), mas estou recebendo erro "Numero incompatível de parâmetros passado para a rotina". Ou seja, a UPC está sendo chamada, mas a quantidade de parâmetros está incorreta. Testei tanto com o modelo de UPC para tela quanto com o modelo de UPC para BO, mas ambas apresentam esse erro. Alguém teria um exemplo funcional de UPC para a ceapi001k para eu me basear?
olá, talvez esse tópico te ajude... lá tem uma upc funcional: https://www.4each.com.br/threads/upc-no-programa-cp0309.13634/#google_vignette
Não sei se está 100%, fiz alguns recortes para tirar minhas regras especificas, mas creio que o escopo te dê um norte Código: {utp/ut-glob.i} {include/i-epc200.i1} {cep/ceapi001.i} DEFINE TEMP-TABLE tt-movto-upc LIKE tt-movto. DEFINE VARIABLE htt-movto AS HANDLE NO-UNDO. DEFINE VARIABLE hqr-movto AS HANDLE NO-UNDO. DEFINE VARIABLE hbf-movto AS HANDLE NO-UNDO. DEFINE VARIABLE hbf-movto-upc AS HANDLE NO-UNDO. DEFINE VARIABLE htt-erro AS HANDLE NO-UNDO. PROCEDURE piInicio-pi-valida-lote: DEF VAR l-alternativo AS LOGICAL NO-UNDO. DEFINE INPUT PARAMETER p-ind-event AS CHARACTER NO-UNDO. DEFINE INPUT-OUTPUT PARAMETER TABLE FOR tt-epc. FOR EACH tt-epc NO-LOCK WHERE tt-epc.cod-event = p-ind-event AND tt-epc.cod-parameter = "tt-movto(handle)": ASSIGN htt-movto = HANDLE(tt-epc.val-parameter) hbf-movto = htt-movto:DEFAULT-BUFFER-HANDLE. hbf-movto:FIND-CURRENT(EXCLUSIVE-LOCK). IF NOT hbf-movto:AVAILABLE THEN NEXT. ASSIGN hbf-movto-upc = TEMP-TABLE tt-movto-upc:DEFAULT-BUFFER-HANDLE. IF hbf-movto:AVAILABLE THEN DO: hbf-movto-upc:BUFFER-CREATE(). hbf-movto-upc:BUFFER-COPY(hbf-movto). END. FOR EACH tt-movto-upc: //regras para consulta de dados htt-erro:BUFFER-CREATE. ASSIGN htt-erro:BUFFER-FIELD(1):BUFFER-VALUE = 1 htt-erro:BUFFER-FIELD(2):BUFFER-VALUE = 2 htt-erro:BUFFER-FIELD(3):BUFFER-VALUE = "Exemplo de erro". END. END. END.
Boa tarde, eu ia postar a minha upc, mas o Anderson chegou antes, nessa ceapi001 especificamente eles mudaram o jeito de agir. Vc tem que criar uma procedure com o nome do ponto de UPC.
Muito obrigado Paulino, Anderson e Richard! Com o link do Paulino, conseguir achar alguns posts do Richard e Anderson conversando sobre o assunto e apresentando exemplos. Se alguém chegar depois procurando sobre o assunto, vou deixar aqui a UPC que o reissobr comentou nesse post: https://www.4each.com.br/threads/upc-em-api-segurança-de-depósitos.17873/page-3. Me ajudou muito a entender e conseguir resolver meu problema. Comunidade excelente! Obrigado a todos mais uma vez! Código: {include/i-epc200.i1} def var l-erro as log no-undo. procedure piInicio-pi-valida-lote: def input param p-ind-event as char no-undo. def input-output param table for tt-epc. def var h-bo as widget-handle no-undo. def var h-buffer as widget-handle no-undo. def var h-query as widget-handle no-undo. if p-ind-event = "Inicio-pi-valida-lote" then do: assign l-erro = no. /* neste evento, na tt-epc.val-parameter contem o handle da tt-movto pois o movimento ainda nao foi criado */ find first tt-epc where tt-epc.cod-event = "Inicio-pi-valida-lote" and tt-epc.cod-parameter = 'tt-movto(handle)' no-error. if avail tt-epc then do: /* bloco de valida‡äes */ /* o codigo abaixo serve apenas como exemplo, para ler o deposito */ assign h-bo = widget-handle(tt-epc.val-parameter). assign h-buffer = h-bo:default-buffer-handle. create query h-query. h-query:set-buffers(h-buffer). h-query:query-prepare('for each tt-movto'). h-query:query-open(). h-query:get-first(). message h-buffer:buffer-field('cod-depos'):buffer-value view-as alert-box. h-query:query-close(). if l-erro then return "NOK":U. else return "OK":U. end. end. end. procedure piEND-CEAPI001: def input param p-ind-event as char no-undo. def input-output param table for tt-epc. if p-ind-event = "END-CEAPI001" then do: find first tt-epc where tt-epc.cod-event = "END-CEAPI001" and tt-epc.cod-parameter = "MOVTO-ESTOQ-ROWID" no-error. /* neste evento, na tt-epc.val-parameter contem o rowid do movimento, que ja foi criado, mas pode ser desfeito */ if avail tt-epc then do: if avail tt-epc then do: /* bloco de valida‡äes */ for first movto-estoq no-lock where rowid(movto-estoq) = to-rowid(tt-epc.val-parameter): message movto-estoq.cod-depos view-as alert-box. end. /* se precisar desfazer neste ponto */ if l-erro then do: create tt-epc. assign tt-epc.cod-event = "END-CEAPI001" tt-epc.cod-parameter = "Retorno Erro" tt-epc.val-parameter = "YES". end. end. end. end. end.