Problemas en descarga de archivo plano

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • felix_cid
    Member
    • mar
    • 73

    #1

    Problemas en descarga de archivo plano

    Amigos:

    Tengo un programa sencillo que me genera un archivo plano en UNIX. Esto lo hago recorriendo una tabla interna con n registros y a través de la sentencia TRANSFER lo voy escribiendo en el archivo de salida.

    Hasta aqui todo bien, pero mi problema se presenta porque al final del archivo plano, tengo un campo con 249 caracteres (el registro en total tiene 337), el cual lo debo entregar en blanco, pero al revisar el archivo, no me genera este espacio en blanco, sino que concatena el siguiente registro inmediatamente. Probé agregando al transfer la sentencia LENGTH 337, pero la verdad es que obtuve el mismo resultado, ¿alguien me podría ayudar con ideas para solucionar este problema?.

    Muchas gracias.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola ... yo hice algo similar pero con tabuladores, lo hice asi:

    DATA: l_espace TYPE x VALUE '20'.

    Y comienzo a concatenar el espacio en blanco que quieres con l_espace, es en hexadecimal y el 20 es el codigo de espacio simple, aver pruebalo y me comentas como te fue, un saludo
    David Carballido Córdova

    Comentario

    • J_Delcanto
      Member
      • may
      • 84

      #3
      Me surgio el mismo problema....el punto es que me llena con "CEROS" los espacios en blanco.

      Por otro lado, me descargar el fichero plano pero no me considera los espacios en blanco al final del ultimo caracter, al momento de guardar.

      De antemano muchas gracias.

      Comentario

      • daniel1050
        Member
        • oct
        • 58

        #4
        Esto si mal no recuerdo se solucionaba poniendo en el caracter 249, el valor el espacio pero ' ' (ese caracter espacio hacelo con la combinacion de teclas ALT + 255 ).

        Yo una vez hice algo parecido.

        la estructura del archivo era algo asi:
        archivo:
        campo1 (3c)
        campo2 (3c)
        campo3 (3c)
        filler (239) - todos blancos
        espacioBlanco (1) ---- este va a tener el espacio que obtenes con alt+255.

        Comentario

        • J_Delcanto
          Member
          • may
          • 84

          #5
          Daniel,

          Tu sabes si existe algun metodo para que cuando guarde el archivo en txt me conserve los espacios en blanco al final del ultimo caracter?

          Ejemplo:

          AAAAAAA AAAAAAAAA AAAAAAAAAAAA x

          Donde x es la ultima posicion en blanco.

          Comentario

          • daniel1050
            Member
            • oct
            • 58

            #6
            Originalmente publicado por J_Delcanto
            Daniel,

            Tu sabes si existe algun metodo para que cuando guarde el archivo en txt me conserve los espacios en blanco al final del ultimo caracter?

            Ejemplo:

            AAAAAAA AAAAAAAAA AAAAAAAAAAAA x

            Donde x es la ultima posicion en blanco.

            Mira, te pongo un ejemplo de algo parecido, podes hacer un write.



            DATA: NAME(5) VALUE ’Harry’,

            DEST(18) VALUE ’Robert James Smith’,

            OFF TYPE I,

            LEN TYPE I.

            OFF = 7.

            LEN = 8.

            WRITE (NAME) TO DEST+OFF(LEN).

            La variable DEST ahora contiene el valor "Robert Harry ith".




            Otro ejemplo:

            Si tengo una variable v_archivo = '1234567890' y quiero una 'a' en la posicion 12 de esa variable:

            WRITE 'a' TO v_archivo+12(1).


            Esto me tendria que hacer : v_archivo = '1234567890 a'

            Aclaraciones: el 12 es el offset, o sea a partir de que posicion quiero que me escriba y el 1, es que cuantos digitos queremos insertar, en nuestro caso a tiene 1 solo entonces va un "1".
            Editado por última vez por daniel1050; 01/06/2011, 19:11:10.

            Comentario

            • J_Delcanto
              Member
              • may
              • 84

              #7
              Daniel,

              Me explico, tengo un fichero plano de largo 610 y por ejemplo la primera linea ocupa hasta 500 caracteres. Ahora el punto es que cuando lo descargo a txt, cuando lo abro me aparece hasta los 500 caracteres....y no me cuenta los 110 faltantes en blanco.

              No se si es problema de codigo o si es otra cosa al momento de descargar.

              No es problema de cuando muestro por pantalla, sino que cuando descargo el documento.
              Editado por última vez por J_Delcanto; 01/06/2011, 19:12:53.

              Comentario

              • daniel1050
                Member
                • oct
                • 58

                #8
                Originalmente publicado por J_Delcanto
                Daniel,

                Me explico, tengo un fichero plano de largo 610 y por ejemplo la primera linea ocupa hasta 500 caracteres. Ahora el punto es que cuando lo descargo a txt, cuando lo abro me aparece hasta los 500 caracteres....y no me cuenta los 110 faltantes en blanco.

                No se si es problema de codigo o si es otra cosa al momento de descargar.

                fijate si le escribis un espacio a la variable donde esta todo el string del archivo, o sea algo asi:

                WRITE ' ' TO v_archivo+609(1).

                Acordate de donde te puse ' ' hacerlo al espacio ese con la combinacion de teclas ALT+255 o no te lo va a tomar.

                Al grabar ese caracter en esa posicion te va a conservar los lugares, yo tuve un problema parecido.

                Comentario

                • J_Delcanto
                  Member
                  • may
                  • 84

                  #9
                  Originalmente publicado por daniel1050
                  fijate si le escribis un espacio a la variable donde esta todo el string del archivo, o sea algo asi:

                  WRITE ' ' TO v_archivo+609(1).

                  Acordate de donde te puse ' ' hacerlo al espacio ese con la combinacion de teclas ALT+255 o no te lo va a tomar.

                  Al grabar ese caracter en esa posicion te va a conservar los lugares, yo tuve un problema parecido.

                  eso de ALT+255 debo ponerlo donde dice ' ' ? No comprendo bien

                  Comentario

                  • daniel1050
                    Member
                    • oct
                    • 58

                    #10
                    Originalmente publicado por J_Delcanto
                    eso de ALT+255 debo ponerlo donde dice ' ' ? No comprendo bien
                    si correcto, fijate si apretas eso te genera un espacio.

                    o sea apreta la tecla ALT y manteniendo apretada los nros 255 del teclado numerico...


                    Es como cuando apretas alt+160 en el word para que te ponga la a acentuada.

                    Aunque no parezca, no es lo mismo poner entre medio de las comillas un espacio creado por la barra esparciadora que por esa combinacion de teclas.
                    Editado por última vez por daniel1050; 01/06/2011, 19:23:44.

                    Comentario

                    • J_Delcanto
                      Member
                      • may
                      • 84

                      #11
                      Ahhhhhhhhhhh Ok, comprendo...

                      Dejame probar y te cuento...

                      Gracias = )

                      Comentario

                      • J_Delcanto
                        Member
                        • may
                        • 84

                        #12
                        No me resulta porque la tabla es un string....


                        DATA: BEGIN OF ls_salida
                        , registro TYPE c LENGTH 610
                        , END OF ls_salida.

                        DATA: BEGIN OF ls_salida_f
                        , registro_f TYPE string
                        , END OF ls_salida_f.

                        lo que hago es guardar en ls_salida-registro+N(n) todos los campos...y finalmete le asigno a ls_salida_f-registro_f = ls_salida-registro.

                        y cuando imprimo es algo asi....



                        LOOP AT lt_salida_f INTO ls_salida_f.
                        WRITE:/ ls_salida_f-registro_f.
                        ENDLOOP.

                        El problema es que como es un string no me permite hacer lo de ls_salida_f-registro_f+500(110)


                        =/

                        Comentario

                        • daniel1050
                          Member
                          • oct
                          • 58

                          #13
                          O sea la tabla donde vas guardando los datos es ls_salida segun entiendo.

                          Cuando vas guardando los campos en ls_salida-registro+N(n) añadi tambien el guardado del espacio que te dije:

                          WRITE ' ' TO ls_salida-registro+609(1).


                          cosa que todas las lineas del archivo tengan la terminacion del espacio


                          la otra que se me ocurre que pruebes es definir asi:

                          DATA: BEGIN OF ls_salida
                          registro TYPE c LENGTH 609,
                          blanco TYPE c DEFAULT ' ', (con el alt+255)
                          , END OF ls_salida.

                          con los cambios que fueran necesarios.
                          Editado por última vez por daniel1050; 01/06/2011, 19:51:27.

                          Comentario

                          • J_Delcanto
                            Member
                            • may
                            • 84

                            #14
                            Originalmente publicado por daniel1050
                            O sea la tabla donde vas guardando los datos es ls_salida segun entiendo.

                            Cuando vas guardando los campos en ls_salida-registro+N(n) añadi tambien el guardado del espacio que te dije:

                            WRITE ' ' TO ls_salida-registro+609(1).


                            cosa que todas las lineas del archivo tengan la terminacion del espacio
                            TE PASASTE!!!!!!!!!!!!!!!!!!

                            ME FUNCIONA A LA PERFECCION!!!!

                            MUCHAS GRACIAS!!! ERA LO QUE NECESITABA!!!!

                            GRACIAS GRACIAS!!!!

                            Comentario

                            • daniel1050
                              Member
                              • oct
                              • 58

                              #15
                              Originalmente publicado por J_Delcanto
                              TE PASASTE!!!!!!!!!!!!!!!!!!

                              ME FUNCIONA A LA PERFECCION!!!!

                              MUCHAS GRACIAS!!! ERA LO QUE NECESITABA!!!!

                              GRACIAS GRACIAS!!!!
                              Buenisimo, me alegro que te haya servido!

                              Comentario

                              Trabajando...