Rellenar con espacios campos de archivo plano

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Jarpi
    Senior Member
    • abr
    • 453

    #1

    Rellenar con espacios campos de archivo plano

    Buenas tardes,

    Los molesto en esta oportunidad porque estoy teniendo problemas con la composición de un archivo plano para procesar luego en su respectivo aplicativo.

    Este aplicativo me pide un formato en particular para cada campo de su estructura. En algunos de ellos me pide que se complete con espacios en blanco hasta el final de los mismos.

    Por ejemplo: tengo el campo t_datos-namee = 'NO INTERVIENE', que es un char de 30. Lo que necesito es que el campo se autocomplete con espacios en blanco hasta llegar a los 30, o sea 'NO INTERVIENE '.

    Alguien sabría como hacer esto?

    Desde ya muchas gracias,
    Saludos.
  • negrogho
    Member
    • ene
    • 65

    #2
    Hola jarpi

    En esos casos yo lo que es usar el + y los "()" para indicar la posiciones que van a avarcar cada dato, ejemplo:

    t_textoplano(8) = t_tabla-codigo
    t_textoplano+8(30) = t_tabla-nombre
    t_textoplano+38(10) = t_tabla-telefono
    ...

    No se si te sirva

    Comentario

    • DavidXD_XD
      Moderator
      • ago
      • 1255

      #3
      Hola, pruebale con lo q comento negrogho y con la funcion GUI_DOWNLOAD utiliza el parametro TRUNC_TRAILING_BLANKS, espero te pueda servir
      David Carballido Córdova

      Comentario

      • Jarpi
        Senior Member
        • abr
        • 453

        #4
        Muchas gracias a ambos.

        Voy a probar lo que me dicen y luego les cuento.

        Saludos.

        Comentario

        • gugutin
          Member
          • jul
          • 71

          #5
          Hola Jarpi,

          Quizas con esta instruccion te sea mas facil y rapido.

          SHIFT it_name left DELETING LEADING ' '.

          te justifica a izquierda y resto a blancos, espero que te haya podido ayudar.

          Saludos

          Comentario

          • Jarpi
            Senior Member
            • abr
            • 453

            #6
            Bueno, les cuento que me sirvió la info que me pasaron. Fue un trabajo largo ya que el archivo plano cuenta con 56 campos! Pero bueno, ya está resuelto.

            Muchas gracias,
            Saludos.

            Comentario

            • cosagaucha
              Member
              • ago
              • 64

              #7
              hola jarpi, de que forma lo resolviste? con el shift?

              ya que yo estoy en la misma, pero con el ultimo campo de mi linea, donde tengo que asignarle 42 espacios en blanco,

              wa_archivo+48(42) = v_reserva_c.

              y no logro que me asigne ni uno..

              gracias!!
              CG

              Comentario

              • Jarpi
                Senior Member
                • abr
                • 453

                #8
                Hola cosagaucha,

                Te cuento que lo que hice fue hacer un move. Te muestro.

                move t_datos-tcpte to wa_lineas-linea.
                move t_datos-ncpte to wa_lineas-linea+1(12).
                move t_datos-codet to wa_lineas-linea+13(6).

                Y así me respetó el tamaño de los espacios. Deberías probar de hacerlo así, pero no se si funcionará porque tu campo es sólo un espacio en blanco.

                Espero te sirva.

                Saludos.

                Comentario

                • Jarpi
                  Senior Member
                  • abr
                  • 453

                  #9
                  Creo que sé como podés resolverlo.

                  Tenés que ir al Mapa de caracteres de Windows y copiate el espacio en blanco (lo seleccionas y copias). Cuando tenes eso, dentro del programa ponés

                  OVERLAY VARIABLE WITH '******************************' (pegas 42 veces el caracter copiado).

                  Espero que te sirva esto.

                  Saludos.

                  Comentario

                  • alberto06
                    Junior Member
                    • jun
                    • 4

                    #10
                    Hola cosagaucha me puedes decir si pudiste solucionar problema de rellenar con espacios en blanco al final de la linea del archivo, yo tengo el mismo problema y no encuentro la solucion he intentando con concatenate, OVERLAY, shift, replace, etc. y nunca me imprime los espacios en blanco al finasl de la línea, si alguien ha encontrado la forma sería de gran ayuda, saludos.

                    Comentario

                    • cosagaucha
                      Member
                      • ago
                      • 64

                      #11
                      hola Alberto,

                      si bien hace bocha de esto, -ya ni trabajo en esa consultora-, si mal no recuerdo, me parece que lo habia resuelto agregandole -ademas de lo que comentaron aca- un campo mas, de solo un caracter, a la estructura que me recibe los datos de la linea.. y con eso creo que me respeto el ancho que yo deseaba,..

                      Espero que de algo sirva..
                      Saludos

                      Comentario

                      • agarrido
                        Junior Member
                        • dic
                        • 2

                        #12
                        Declaras una variable para asignar el caracter Enter y al final de los campos que van al archivo, creas otro para asignar esa variable que contiene el Enter.

                        Nota: en el GUI_DOWNLOAD, debes mandar este parámetro así:

                        trunc_trailing_blanks_eol = 'X'

                        --------------------------------------------
                        data: c_newline(1) type c value cl_abap_char_utilities=>newline.

                        data: begin of it_fin occurs 0 ,
                        linea(25) ,
                        end of it_fin.

                        data: begin of it_c occurs 0, "
                        tipreg(3) type c, " Tipo de Registro
                        ctacar(20) type c, " Cuenta
                        center(1) type c, " Caracter enter
                        end of it_c.


                        it_c-tipreg = 'A'.
                        it_c-ctacar = ''.
                        it_c-center = c_newline.
                        append it_c.

                        insert it_c into it_fin index 1 .


                        call function 'GUI_DOWNLOAD'
                        exporting
                        filename = w_namefile
                        filetype = 'ASC'
                        trunc_trailing_blanks_eol = 'X'
                        header = '00'
                        write_lf = 'X'
                        write_lf_after_last_line = 'X'
                        tables
                        data_tab = it_fin[].

                        Comentario

                        • assai
                          Junior Member
                          • sep
                          • 14

                          #13
                          Parametro de función GUI_DOWNLOAD

                          Hola,

                          Esto funciona seguro....

                          Con la función 'GUI_DOWNLOAD'
                          fijar el parámetro TRUNC_TRAILING_BLANKS_EOL = ' '

                          Te crea el fichero relleno de blancos al final de cada registro con la longitud del campo.

                          Saludos
                          Saludos
                          Jaime

                          Comentario

                          Trabajando...