Retorno Sib

Discussão em 'Progress 4GL' iniciado por eder.luca2012, Junho 23, 2014.

  1. eder.luca2012

    eder.luca2012 Membro Participativo

    Bom dia

    Pessoal estou desenvolvendo uma aplicação para importar um arquivo com extensão .RPX vindo da ANS que é o arquivo de Retorno do Sib, porém quando abro o arquivo por exemplo no notepad++ vem um monte de informações em apenas uma unica linha, com isso quando tento importar o conteúdo do arquivo em uma variável o tamanho comportado por uma variável é pequeno para a quantidade de informações, gostaria de saber se existe algum comando progress que faça à quebra de linhas alinhando às tag´s do arquivo xml com isso resolveria e muito o meu problema pois hoje esta vindo assim:

    <registrosIncluidos> <registroIncluido codigoBeneficiario="00000000000000000"> <cco>000000000000</cco> <nomeBeneficiario>NONONONO</nomeBeneficiario> </registroIncluido></registrosIncluidos>

    Tudo isso em uma unica linha e precisava importar assim :

    <registrosIncluidos>
    <registroIncluido codigoBeneficiario="00000000000000000">
    <cco>000000000000</cco>
    <nomeBeneficiario>NONONONO</nomeBeneficiario>
    </registroIncluido>
    </registrosIncluidos>

    Abaixo segue à ideia que tive:

    DEFINE VARIABLE c-file AS CHARACTER NO-UNDO.
    DEFINE VARIABLE c-linha AS CHARACTER NO-UNDO.
    DEFINE STREAM s-entrada.

    ASSIGN c-file = 'C:\RETORNOSIB\TESTE.RPX'.

    INPUT STREAM s-entrada FROM VALUE(c-file).

    REPEAT:
    IMPORT STREAM s-entrada UNFORMATTED c-linha.
    END.

    Lembrando que à estrutura acima existem vários outros dados peguei uma amostra para entenderem.
  2. muertebr

    muertebr Membro Participativo

    As tag tão errada né, primeiro de tudo?
  3. muertebr

    muertebr Membro Participativo

    Opa... verificando alguns exemplos e implementando mais um poco, consegui chega num programa que faz oq vc precisa:


    Código:
    DEFINE TEMP-TABLE registroIncluido
        FIELD codigoBeneficiario AS CHAR
        FIELD cco                AS CHAR
        FIELD nomeBeneficiario   AS CHAR.
    
    DEF DATASET dsNFe
        FOR registroIncluido.
    
    RUN geraTt.
    RUN recriaTt.
    
    /*------------------------------------------------------------------------------
      Purpose:    
      Parameters:  <none>
      Notes:       Criar novo XML
    ------------------------------------------------------------------------------*/
    PROCEDURE recriaTt.
        DEFINE VARIABLE cTargetType     AS CHARACTER NO-UNDO.
        DEFINE VARIABLE cFile           AS CHARACTER NO-UNDO.
        DEFINE VARIABLE lFormatted      AS LOGICAL NO-UNDO.
        DEFINE VARIABLE cEncoding       AS CHARACTER NO-UNDO.
        DEFINE VARIABLE cSchemaLocation AS CHARACTER NO-UNDO.
        DEFINE VARIABLE lWriteSchema    AS LOGICAL NO-UNDO.
        DEFINE VARIABLE lMinSchema      AS LOGICAL NO-UNDO.
        DEFINE VARIABLE retOK           AS LOGICAL NO-UNDO.
    
        ASSIGN cTargetType = "file"
               cFile = "C:\Temp\teste\testeImp2.xml"
               lFormatted = YES
               cEncoding = "utf-8"
               cSchemaLocation = ?
               lWriteSchema = NO
               lMinSchema = NO.
       
        ASSIGN retOK = DATASET dsNFe:WRITE-XML(cTargetType, cFile, lFormatted,
                                               cEncoding, cSchemaLocation, lWriteSchema,
                                               lMinSchema).
    END PROCEDURE.
    PROCEDURE geraTt :
    /*------------------------------------------------------------------------------
      Purpose:    
      Parameters:  <none>
      Notes:       Ler XML e carregar Dataset
    ------------------------------------------------------------------------------*/
    def var cSourceType             as char     no-undo.
    def var cReadMode               as char     no-undo.
    def var lOverrideDefaultMapping as log      no-undo.
    def var cFile                   as char     no-undo.
    def var cEncoding               as char     no-undo.
    def var cSchemaLocation         as char     no-undo.
    def var cFieldTypeMapping       as char     no-undo.
    def var cVerifySchemaMode       as char     no-undo.
    def var retOK                   as log      no-undo.
    
       dataset dsNfe:empty-dataset no-error.
    
       assign cSourceType             = "FILE"
              cFile                   = "C:\Temp\teste\testeImp.xml" /* arquivo da nfe - Realiza a leitura do procNFe */
              cReadMode               = "empty"
              cSchemaLocation         = ?
              lOverrideDefaultMapping = ?
              cFieldTypeMapping       = ?
              cVerifySchemaMode       = "IGNORE".
    
       assign retOK = dataset dsNfe:read-xml(cSourceType,
                                             cFile,
                                             cReadMode,
                                             cSchemaLocation,
                                             lOverrideDefaultMapping,
                                             cFieldTypeMapping,
                                             cVerifySchemaMode) no-error.
    
    END PROCEDURE.

Compartilhe esta Página