1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Tag <Rastro> no XML

Discussão em 'Progress 4GL' iniciado por Cristiano Petry, Maio 10, 2024.

  1. Cristiano Petry

    Cristiano Petry Sem Pontuação

    Olá pessoal.
    Estou com dúvidas de como estruturar a lógica para ler o XML dos produtos identificando a tag <rastro> correspondente de cada produto e então gravar num browse em cada linha de cada produto com seu respectivo nr de lote <rastro><nlote>
    E nos casos tbm em que cada produto possui duas ou mais tags rastro.
  2. lcpaulino

    lcpaulino Membro Participativo

    Olá... acho que o quê você está querendo os programas padrões do Datasul já entregam uma tabela preenchida:
    Tente pegar o XML que contem a tag<rastro>, salve em alguma pasta(diretório) qualquer e depois importe através do programa re0522 (basta informar o caminho do diretório onde está o xml e executar). Depois basta ler a tabela "rat-lote-medic-nfe", ou seja, o programa oficial do Datasul irá pegar as informações da tag<rastro> e gravá-las na tabela "rat-lote-medic-nfe"... depois disso é só utilizar essa tabela "rat-lote-medic-nfe" para alimentar o seu browse. Observação: o objetivo do re0522 é alimentar o programa re0708 (que é tipo uma pré-digitação das notas baseadas no XML), então, a tabela "rat-lote-medic-nfe", assim como outras tabelas com informações do XML que são utilizadas pelo re0708, terá sempre 2(dois) registros para cada informação das tags do XML = a original e a traduzida (de acordo com os de-paras cadastrados) ,então, ao ler a tabela "rat-lote-medic-nfe" , o ideal seria algo assim:
    FOR EACH rat-lote-medic-nfe NO-LOCK
    WHERE rat-lote-medic-nfe.ch-acesso-comp-nfe = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    AND rat-lote-medic-nfe.idi-orig-trad = 1 /* 1 = informacao original do xml*/:
    END.
    Lembre-se que sempre primeiro deverá importar o xml através do re0522 para que esse processo alimente a tabela "rat-lote-medic-nfe"... mas se precisar de "algo mais automático" é possível ficar rodando o re0522 a cada "X" tempo através de agendamento do RPW... cadastrando a rotina no cd8600.
    Espero que ajude!
  3. Cristiano Petry

    Cristiano Petry Sem Pontuação

    Muito obrigado lcpaulino. É que na verdade eu tenho uma solução específica que faz exatamente o que o produto padrão Datasul faz. Mas a dica da tabela ajuda sim, vou verificar para tentar entender como são tratados os dados.
    Minha solução já lê o XML, identifica a Tag <rastro> e lista em um browse para cada item do XML. Minha dificuldade está nos caos em que existem mais de uma Tag <rastro> para cada item. Na forma como listar essas linhas e colunas no browse. Acredito que deveria quebrar pelo rastro/lote e repetir a linha do item que tem mais de um rastro.
  4. Cristiano Petry

    Cristiano Petry Sem Pontuação

    Muito obrigado lcpaulino. É que na verdade eu tenho uma solução específica que faz exatamente o que o produto padrão Datasul faz. Mas a dica da tabela ajuda sim, vou verificar para tentar entender como são tratados os dados.
    Minha solução já lê o XML, identifica a Tag <rastro> e lista em um browse para cada item do XML. Minha dificuldade está nos caos em que existem mais de uma Tag <rastro> para cada item. Na forma como listar essas linhas e colunas no browse. Acredito que deveria quebrar pelo rastro/lote e repetir a linha do item que tem mais de um rastro.
  5. lcpaulino

    lcpaulino Membro Participativo

    Entendi, estou enviando um exemplo de como eu faria... talvez não seja o jeito mais eficiente... mas acho que funcionaria... (essa é basicamente uma lógica que eu utilizo para jogar os dados de um xml qualquer em uma temp-table... e depois trata-los conforme minha necessidade... apenas fiz uma gambiarra para você ter a sequencia do item da NF... e uma sequencia dos dados da tag <rastro>.... que provavelmente é importante para sua necessidade)... Espero que ajude a pelo menos dar uma ideia de como resolver o seu problema!

    Arquivos Anexados:

  6. Cristiano Petry

    Cristiano Petry Sem Pontuação

    Opa, valeu mesmo...com certeza vai me ajudar bastante.

Compartilhe esta Página