Boa Tarde, Tenho um webservice configurado e funcionando e preciso receber de algum client dados enviados onde meu WS irá receber esse dados e executar uma API que e retornara para o client as mensagens de erro ou sucesso. Só para entender o programa que criei ele está recebendo os dados enviados pelo client e consigo até exportar essas informações, mas se eu adicionar a api dentro do programa o mesmo retorna um error (Error in SOAP request execution: 4GL STOP condition: The Server application has returned an error. (7243) (7241) (10926)). Código: /*Definições e Tabelas Temporarias do WS*/ DEF TEMP-TABLE ttPedidoPeca FIELD numpedido AS CHAR FORMAT "X(10)" FIELD datapedido AS CHAR FORMAT "X(10)" FIELD codcliente AS CHAR FORMAT "X(10)" FIELD cpf_cnpj AS CHAR FORMAT "X(15)" INDEX chPedidoPeca IS PRIMARY numpedido. DEF TEMP-TABLE ttItemPedPeca FIELD codmaterial AS CHAR FORMAT "X(20)" FIELD qtd AS INT INDEX chItemPedPeca IS PRIMARY codmaterial. DEF TEMP-TABLE ttPedido FIELD numpedido AS CHAR FORMAT "X(10)" FIELD datapedido AS CHAR FORMAT "X(10)" FIELD codcliente AS CHAR FORMAT "X(10)" FIELD cpf_cnpj AS CHAR FORMAT "X(15)" INDEX chPedido IS PRIMARY numpedido. DEF TEMP-TABLE ttItemPedido FIELD numpedido AS CHAR FORMAT "X(20)" FIELD cpf_cnpj AS CHAR FORMAT "X(15)" FIELD codmaterial AS CHAR FORMAT "X(20)" FIELD qtd AS INT INDEX chItemPedido IS PRIMARY numpedido codmaterial. DEF TEMP-TABLE tterros FIELD Identif-msg AS CHAR FORMAT "X(60)" FIELD Num-sequencia-erro AS INT FORMAT "999" FIELD Cod-erro AS INT FORMAT "99999" FIELD Des-erro AS CHAR FORMAT "X(60)" FIELD Cod-maq-origem AS INT FORMAT "999" FIELD Num-processo AS INT FORMAT "999999999". DEF DATASET dsPedidoPeca FOR ttPedidoPeca. DEF DATASET dsItemPedPeca FOR ttItemPedPeca. DEF INPUT PARAM DATASET FOR dsPedidoPeca. DEF INPUT PARAM DATASET FOR dsItemPedPeca. DEF OUTPUT PARAM c-retorno AS CHAR. /*OK ou NOK*/ DEF OUTPUT PARAM c-msg AS CHAR. /*definições da API a mesma aqui está incompleta pois é muito grande*/ define temp-table tt-ped-venda no-undo field cod-estabel as char format "x(3)" field nome-abrev as char format "x(12)" field nr-pedcli as char format "x(12)" field nr-pedido as inte format ">>>,>>>,>>9" . . . /*Definições e programa simples o mesmo se executado fora do ambiente WS retorna erro da API*/ DEF VAR l-calcula AS LOG. DEF VAR i-cod-maq-origem AS INT. DEF VAR i-num-processo AS INT. FOR EACH ttPedidoPeca: c-retorno = "OK". IF ttPedidoPeca.numpedido = "" THEN DO: ASSIGN c-retorno = "NOK" c-msg = "Pedido não foi informado!!!". END. IF ttPedidoPeca.datapedido = "" THEN DO: ASSIGN c-retorno = "NOK" c-msg = "Data não foi informada!!!". END. IF ttPedidoPeca.codcliente = "" THEN DO: ASSIGN c-retorno = "NOK" c-msg = "Cod. Cliente não foi informado!!!". END. IF ttPedidoPeca.codcliente = "" THEN DO: ASSIGN c-retorno = "NOK" c-msg = "CPF ou CNPJ não foram informados!!!". END. IF c-retorno = "OK" THEN DO: FIND emitente WHERE emitente.cgc = ttPedidoPeca.cpf_cnpj NO-ERROR. IF AVAIL emitente THEN DO: CREATE ttPedido. ASSIGN ttPedido.numpedido = ttPedidoPeca.numpedido ttPedido.datapedido = ttPedidoPeca.datapedido ttPedido.codcliente = ttPedidoPeca.codcliente ttPedido.cpf_cnpj = ttPedidoPeca.cpf_cnpj. FOR EACH ttItemPedPeca: CREATE ttItemPedido. ASSIGN ttItemPedido.numpedido = ttPedidoPeca.numpedido ttItemPedido.cpf_cnpj = ttPedidoPeca.cpf_cnpj ttItemPedido.codmaterial = ttItemPedPeca.codmaterial ttItemPedido.qtd = ttItemPedPeca.qtd. END. CREATE tt-ped-venda. ASSIGN tt-ped-venda.Ind-tipo-movto = 1 /*É o tipo de movimentação da API : 1-Inclusão, 2-Modifica, 3-Elimina, 5-Suspende, 6- Reativa, 7-Cancela.*/ tt-ped-venda.cod-estabel = "2" /*codigo do estabelecimento*/ tt-ped-venda.nome-abrev = "ALESSANDRA" /*nome abreviado do cliente*/ tt-ped-venda.nr-pedcli = "TESTE1234" /*número do pedido do cliente*/ tt-ped-venda.dt-emissao = TODAY /*DATE(SUBSTR(v-data,7,2) + SUBSTR(v-data,5,2) + SUBSTR(v-data,1,4))*/ /*data em que o pedido foi emitido pelo representante / cliente */ tt-ped-venda.dt-implant = TODAY /*data em que o pedido foi implantando no sistema */ tt-ped-venda.dt-entrega = TODAY /*data prevista para entrega do pedido*/ tt-ped-venda.dt-entorig = TODAY /*data de entrega solicitada pelo cliente */ tt-ped-venda.nat-operacao = "6949H" /*natureza de operação*/ tt-ped-venda.cod-cond-pag = 0 /*código da condição de pagamento*/ tt-ped-venda.nr-tabpre = "005/2004" /*tabela de preços*/ tt-ped-venda.nr-tab-finan = 1 /*número da tabela de financiamento*/ tt-ped-venda.tp-pedido = "GR" /*disponível para classificação / indicação própria do usuário*/ tt-ped-venda.cod-entrega = "Padrao" /*codigo da entrega já cadastrada para o cliente*/ tt-ped-venda.cod-portador = 99999 /*código do portador*/ tt-ped-venda.Modalidade = 6 /*modalidade de cobrança*/ tt-ped-venda.user-impl = "woliveira" /*contém o userid de quem implantou o pedido */ tt-ped-venda.dt-userimp = TODAY /*contem a data corrente em que o pedido foi implantado*/ tt-ped-venda.nome-transp = "CORREIO/QMD" /*nome do transportador*/ tt-ped-venda.mo-codigo = 0 /*código da moeda de referência dos valores*/ tt-ped-venda.nr-ind-finan = 0 /*número do índice de financiamento*/ tt-ped-venda.no-ab-reppri = "ASSIST.TECN." /*nome abreviado do representante principal */ tt-ped-venda.cod-emitente = 209613 /*código do cliente*/ tt-ped-venda.esp-ped = 1 /*espécie de pedido*/ tt-ped-venda.cod-gr-cli = 0 /*código do grupo do cliente*/ tt-ped-venda.cod-canal-venda = 2 /*código do canal de venda*/ . l-calcula = NO. run pdp/pdapi152.p (input-output table tt-ped-venda, input-output table tt-ped-item, input-output table tt-ped-ent, input-output table tt-ped-repre, input-output table tt-con-pges, input-output table tt-ped-antecip, input-output table tt-versao-integr, output table tt-erros-geral, input i-cod-maq-origem, input i-num-processo, input l-calcula, input table tt-pd-vendor). OUTPUT TO c:\temp\errors.txt. FOR EACH tt-erros-geral: PUT tt-erros-geral.Identif-msg tt-erros-geral.Num-sequencia-erro tt-erros-geral.Cod-erro tt-erros-geral.Des-erro tt-erros-geral.Cod-maq-origem tt-erros-geral.Num-processo SKIP. END. OUTPUT CLOSE. OUTPUT TO c:\temp\ttt1.txt. FOR EACH ttpedido: EXPORT ttpedido. END. OUTPUT CLOSE. /*verificar momento correto para a utilização desta mensagem*/ ASSIGN c-retorno = "OK" c-msg = "Pedido implantado no sistema!!!". /*OUTPUT TO c:\temp\errors.txt. FOR EACH tt-erros-geral: DISP tt-erros-geral. END. OUTPUT CLOSE. */ END. ELSE DO: ASSIGN c-retorno = "NOK" c-msg = "Cliente não cadastrado!!!". END. END. END.
Da uma olhada nestas apostilas derre pente te da uma luz. http://www.4each.com.br/resources/apostila-webservice-progress.24/ http://www.4each.com.br/resources/apostila-webservice-totovs.25/ Espero que ajude.
bom dia, Você já executou esta API manualmente com estes dados para ver o retorno, pode ser alguma informação não tratada dentro da API que esta dando erro. E depois tenta fazer a chamada da API com NO-ERROR e trata o retorno para ver se encontra o problema. Código: RUN API (...) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: OUTPUT TO c:\temp\errors.txt. PUT ERROR-STATUS:GET-MESSAGE(1) SKIP RETURN-VALUE SKIP(1). OUTPUT CLOSE. END. abs