Rellanar con caracteres.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • DCErick
    Moderator
    • mar
    • 1090

    #1

    Rellanar con caracteres.

    Existe alguna funcion para rellanar una cadena con algun caracter especial...

    Por ejemplo: Los numeros (6789 ,12, 123,1023, 123456)

    Me gustaria formatearlos a :

    000000000006798
    000000000000012
    000000000000123
    000000000001023
    000000000123456

    En este caso lo que hago es meter ceros a la izquierda hasta que la cadena tenga una longitud de 15 carecteres???

    Alguna idea?

    Trate de hacerlo como sigue:
    Código:
      DATA : v_ean11(10) TYPE c.
      DATA: v_length(4) TYPE n.
    
      v_ean11 = '000000000000000'.
    
    'Pero no encontre la funcion que me regrese la longitud de la cadena inicial.
      v_length =  strlen P_EAN11.
      
      REPLACE '0' WITH '' INTO v_ean11  LENGTH v_length.
    
      CONCATENATE v_ean11 p_ean11 INTO p_ean11.
    Editado por última vez por DCErick; 11/07/2006, 00:13:21.
    -------------------
    ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?
  • bono
    Junior Member
    • mar
    • 21

    #2
    Hola,
    Prueba con la función CONVERSION_EXIT_ALPHA_INPUT

    Saludos

    Comentario

    • asuarez
      Member
      • jun
      • 63

      #3
      Relleno de Strings

      Hola, intenta con la instrucción ABAP:

      OVERLAY String WITH '000000000000000'.
      Espero que sirva de algo.

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #4
        Hola me resulto con tu ayuda BONO....


        asuarez la instruccion que me pasaste me lo llena pero a la derecha.....

        GraCIAS a ambos
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        • Carlos J. Ortega González
          Junior Member
          • jun
          • 28

          #5
          Esto es sólo para el caso de ceros a la izquerda en campos numéricos y enteros.

          v_numero type i, (o like sy-index)
          v_nummero_n(15) type n,
          v_num_char(15) type c.


          v_numero = 1234.

          v_numero_n = v_numero. ( move: v_numero to v_numero_n.)

          write v_numero_n to v_num_char.

          Ahora v_numero_char es '000000000001234'.

          puedes presentar este en pantalla o transferirlo, si lo presentas en pantalla tambien puedes usar como salida v_numero_n.

          Comentario

          • tomasm
            Member
            • jun
            • 87

            #6
            report zprue_.

            data: matriz(15) type N value '0'.

            data: begin of itab occurs 0,
            numero(15) type n,
            end of itab.



            start-of-selection.


            move '12' to itab-numero.
            append itab.
            clear itab.

            move '1234' to itab-numero.
            append itab.
            clear itab.

            move '123456' to itab-numero.
            append itab.
            clear itab.

            move '123456789' to itab-numero.
            append itab.
            clear itab.

            loop at itab.
            move itab-numero to matriz.
            Write:/ matriz.
            endloop.

            SALIDA ------------------------>

            000000000000012
            000000000001234
            000000000123456
            000000123456789


            salud !!!!!!

            Comentario

            • DCErick
              Moderator
              • mar
              • 1090

              #7
              Horale, ya salieron varias formas de hacerlo, vere cual es la mejor .
              -------------------
              ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

              Comentario

              • albevidu
                Junior Member
                • jul
                • 7

                #8
                una explicación

                Hola DCErick,
                como bien lo comenta 'tomasm'

                en mi punto de vista la mejor forma de hacer lo que necesitas es asi como el te sugiere, ya que los datos tipo n se rellenan automaticamente con ceros a la izquierda, si de antemano sabes que tu campo o numero debe ser de logitud 15, declaras una variable tipo n de logitud 15 y despues asignas el valor que desees.

                data: num(15) type n,
                num_string type string.

                MOVE num_string TO num.
                con esto automáticamente conviertes num_string en un numero de 15 posiciones quedando este valor en num, pudes imprimir el valor para verlo.

                espero que te sea de ayuda.
                Saludos

                Comentario

                Trabajando...