Bom dia pessoal, Estou criando uma API REST que cria estruturas dentro do Datasul, mas estou tendo erros internos, mas esses erros não são retornados na TT indicada na documentação, estou seguinte a documentação: ENAPI301 - Consistir e gravar informações referentes a estruturas de itens - Linha Datasul - TDN Inicialmente ainda não estou usando a ENAPI302, mas vou implementar, Estou enviando via POST o seguinte JSON, deixei bem enxuto mesmo pra ter os campos da tela ali do EN0105 apenas: { "estrutura": [ { "codigoItem": "0002", "sequencia": 10, "componente": "0032", "quantidadeComponente": 1, "logFantasma": false, "revisao": "01", "serieInicial": null, "serieFinal": null, "localMontagem": "LINHA-PRODUCAO-01", "fatorPerda": 0, "proporcao": 100, "quantidadeUsada": 2.5, "observacao": "Inclusão via API REST", "tempoReserva": 0, "tipoSobra": 1, "quantidadeLiquida": 2.5, "quantidadeItem": 1, "logQuantidadeFixa": false, "codigoRoteiro": null, "codigoOperacao": null } ] } Eu faço o seguinte na minha API: PROCEDURE pi-create: DEFINE INPUT PARAMETER oJsonInput AS JsonObject NO-UNDO. DEFINE OUTPUT PARAMETER oJsonOutput AS JsonObject NO-UNDO. DEFINE VARIABLE oList AS JsonObject NO-UNDO. DEFINE VARIABLE aJsonErrors AS JsonArray NO-UNDO. DEFINE VARIABLE oJsonErrors AS JsonObject NO-UNDO. DEFINE VARIABLE oBody AS JsonObject NO-UNDO. DEFINE VARIABLE oRequest AS JsonAPIRequestParser NO-UNDO. DEFINE VARIABLE lHasNext AS LOGICAL NO-UNDO. DEFINE VARIABLE iCount AS INTEGER INITIAL 1 NO-UNDO. DEFINE VARIABLE iErro AS INTEGER NO-UNDO. oRequest = NEW JsonAPIRequestParser(oJsonInput). oBody = oRequest:getPayload(). TEMP-TABLE ttEstruturaItem:READ-JSON('LONGCHAR',oBody:getJsonText(),'EMPTY'). //TEMP-TABLE tt-ref-estrut:READ-JSON('LONGCHAR',oRequest:getJsonText(),'EMPTY'). IF NOT CAN-FIND(FIRST ttEstruturaItem) THEN DO: create RowErrors. assign RowErrors.ErrorNumber = 1 RowErrors.ErrorDescription = "Json de entrada não pode ser convertido para tabela tt-estrutura" RowErrors.ErrorHelp = "Verifique se a estrutura do json de entrada esta correto!" RowErrors.ErrorType = "ERROR":U. oJsonOutput = JsonAPIResponseBuilder:asError(TEMP-TABLE RowErrors:HANDLE). END. ELSE DO: CREATE tt-versao-integr. ASSIGN cod-versao-integracao = 1. FOR EACH ttEstruturaItem: CREATE tt-estrutura. BUFFER-COPY ttEstruturaItem TO tt-estrutura. ASSIGN tt-estrutura.ind-tipo-movto = 1. // Inclusão END. run enp/enapi301.p (input table tt-versao-integr, output table tt-erros-geral, input-output table tt-estrutura, input table tt-ref-estrut, input NO, output table tt-componente). IF RETURN-VALUE = "NOK" THEN DO: MESSAGE 'Erros geral' VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. FOR EACH tt-erros-geral: CREATE RowErrors. ASSIGN RowErrors.ErrorNumber = tt-erros-geral.cod-erro RowErrors.ErrorSequence = tt-erros-geral.num-sequencia-erro RowErrors.ErrorDescription = tt-erros-geral.des-erro RowErrors.ErrorHelp = 'Máquina origem: ' + STRING(tt-erros-geral.cod-maq-origem) + ' - ' + 'Número processo:' + STRING(tt-erros-geral.num-processo) RowErrors.ErrorType = "ERROR":U. END. oJsonOutput = JsonAPIResponseBuilder:asError(TEMP-TABLE RowErrors:HANDLE). END. ELSE DO: oList = NEW JsonObject(). oList:Read(TEMP-TABLE tt-estrutura:HANDLE). oJsonOutput = JsonAPIResponseBuilderk(INPUT oList, 201). // Retorna json tt-estrutura com status code 201 END. END. // FIRST tt-estrutura fim CATCH verropro AS PROGRESS.Lang.ProError: DO iErro = 1 TO verropro:NumMessages: create RowErrors. assign RowErrors.ErrorNumber = verropro:GetMessageNum(iErro) RowErrors.ErrorDescription = verropro:GetMessage(iErro) RowErrors.ErrorHelp = verropro:CallStack RowErrors.ErrorSubType = "ERROR":U. END. oJsonOutput = JsonAPIResponseBuilder:asError(TEMP-TABLE RowErrors:HANDLE). END CATCH. END PROCEDURE. Validei que está dando RETURN 'NOK', mas não retorna, mas ao colocar uma message ali no for each, nem tem registros, acaba complicando meu debug, não sei se é algum erro já conhecido, ou se estou fazendo algo de errado.
Então coloquei pra sair no PASOE, ele sai ali que entrou como return NOK, eu tinha feito outro teste, de colocar dentro do FOR EACH, mas nem passou por dentro do FOR EACH, logo entendo que tá vazia essa tabela de tt-erros-geral
Achei o problema pessoal, ali na RowErrors eu defini um campo errado: RowErrors.ErrorSubType = "ERROR":U. estava RowErrors.ErrorType = "ERROR":U. acabava não criando os registros, aproveitando, também notei uma coisa, na chamada, JsonAPIResponseBuilder:asError: Se faz necessário a chamada ser executada da seguinte forma: h-handle = TEMP-TABLE RowErrors:HANDLE. oOutput = JsonAPIResponseBuilder:asError(h-handle). Caso o contrário os erros ocorridos não são retornados