Bom dia a todos. Preciso de um help urgente, pois estou com o projeto parado devido a este erro. Tenho a seguinte situação: - Estou importando um arquivo de EDI. O problema que o arquivo vem todo (dados) em uma única linha separado por TAG´s. E ao importar a parte final do arquivo (ultimas colunas) não está sendo importado. Testei com 2 arquivos: 1 com 14.090 colunas (caracteres) e outro com 4.930 colunas (caracteres) e o problema é o mesmo. Tentei, utilizando uma stream, com o comando import unformatted e nada resolve. Ex.parte final – últimas colunas) QTY+1:2000'DTM+2:20180607:102'QTY+1:2000'DTM+2:20180621:102'QTY+1:2000'DTM+2:20180705:102'QTY+1:4000'DTM+2:20180719:102'UNT+89+1'UNZ+1+1'IT*000210038*0000*00001 Ao executar e com o message importa até: QTY+1:2000'DTM+2:20180607:102'QTY+1 A parte final vem com o message em branco. Tentei com o comando copy-lob para uma variável do tipo longchar, o mesmo problema. Segue o meu código abaixo. DEFINE VARIABLE v-linha AS CHARACTER NO-UNDO. DEFINE TEMP-TABLE ttLinha FIELD c-linha AS CHARACTER . DEFINE VARIABLE c-dir AS CHARACTER NO-UNDO. DEFINE VARIABLE c-arquivo AS CHARACTER NO-UNDO. assign c-dir = 'c:\temp\Entrada' c-arquivo = c-dir + "~\meu_arquivo.TXT". IF SEARCH (c-arquivo) <> ? THEN DO: INPUT FROM VALUE (c-arquivo). REPEAT ON ERROR UNDO, NEXT: v-linha = ''. CREATE ttLinha. IMPORT v-linha. MESSAGE v-linha VIEW-AS ALERT-BOX INFO BUTTONS OK. Aqui a parte final fica em branco ASSIGN ttLinha.c-linha = v-linha. END. INPUT CLOSE. END. FOR EACH ttLinha: MESSAGE ttLinha.c-linha VIEW-AS ALERT-BOX INFO BUTTONS OK. END.
Conforme escrevi acima , já tentei com esta opção e também usando uma stream. E nos dois testes, não importa os caracteres finais do arquivo.
A questão é que no arquivo TXT não tem uma quebra de linha, se vc editar o arquivo pelo bloco de notas e ir no final da linha, der um ENTER, salvar, a sua rotina vai funcionar, mas se esse arquivo é gerado por terceiros, tente esse codigo .... Código: define variable linha as character no-undo. define variable linha1 as longchar no-undo. copy-lob from file 'c:\temp\teste_000004.txt' to linha1. assign linha = string(linha1). message string(linha) view-as alert-box info buttons ok.
Tava esquecendo, caso seu arquivo tenha mais de uma linha, mas na ultima não tem a quebra de linha, vc tem que fatiar o campo linha1 por char(10): Código: define variable linha as character no-undo. define variable linha1 as longchar no-undo. define variable contador as integer no-undo. copy-lob from file 'c:\temp\teste_000004.txt' to linha1. assign linha = string(linha1). repeat contador = 1 to num-entries(linha, chr(10)): message entry(contador, linha, chr(10)) view-as alert-box info buttons ok. end.