Ayuda a rellenar un Char con ceros Izq

Colapsar
Este tema está cerrado
X
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • vamp_01
    Senior Member
    • jun
    • 109

    #1

    Ayuda a rellenar un Char con ceros Izq

    Hola a todos , si aca nuevamente consultando a ustedes como se hacen las cosas...
    he intentado resolver mi problema, pero no doy con la solucion, a lo mejor es mas facil de lo que yo creo.

    Bueno mi problema es el siguiente, tengo un campo declarado como char de largo 20 (data a7_1 like ztbl-char20.)

    el dato que se agrega a ese campo por ejemplo es 1-k...
    este dato tiene un largo de 3, es decir, me quedan 17 espacio en el total del largo del campo que ocupar, aca la pregunta, como lo hago para que este char se rellene los 17 espacios que quedan con ceros a la izquierda.

    data a7_1 like ztbl-char20.
    *asi esta ahora
    a7_1 = '1-k'.
    *debe quedar asi
    a7_1 = '000000000000000001-k'.
    Que hago para que el campo quede completo, en su largo total.
    de ante mano Gracias
  • Vique
    Pregúntame por las Bolas Vique
    • mar
    • 146

    #2
    Hola,
    si tu texto inicial no contiene ningún espacio, puedes usar la sentencia OVERLAY.

    Primero define una constante del mismo tipo que tu campo (CHAR20) cuyo valor sea todo ceros. Y usala para sobreescribir sobre tu campo, de la siguiente forma:

    OVERLAY a7_1 WITH c_ceros.

    Los caracteres que esten en blanco en tu campo serán reemplazados por los ceros de la constante.
    Si quieres que los ceros queden al principio antes tendras que justificar el texto a la derecha.

    Espero te sirva de ayuda.
    Un saludo.
    ¿Pero nadie me va a preguntar por las bolas Vique?

    Comentario

    • jmenendez
      Member
      • may
      • 54

      #3
      Otra es usar FM: CONVERSION_EXIT_ALPHA_INPUT

      Comentario

      • eljota
        Member
        • dic
        • 48

        #4
        puedes usar la función anterior (x lo general la uso)

        o puedes intentar escribir tu variable sobre otra d tipo N:

        var_final(20) TYPE N.

        WRITE var_orig TO var_final.

        y var_final se completará con 0
        Jaime Zegarra V.
        ________________
        ABAP Developer

        Comentario

        • vamp_01
          Senior Member
          • jun
          • 109

          #5
          gracias voy a probar

          ahi les cuento como me fue
          Gracias

          Comentario

          • vamp_01
            Senior Member
            • jun
            • 109

            #6
            no funciono ninguna de las que aca expusieron...nada de nada aun continuo con el problema.....si me pueden ayudar...

            GRacias

            Comentario

            • Tonnyman
              Member
              • dic
              • 53

              #7
              data: a7_1 TYPE string,
              val TYPE i,
              val1 TYPE string.

              a7_1 = '1-k'.
              val1 = strlen( a7_1 ).

              IF val1 < 20.
              val = 20 - val1.
              ENDIF.


              DO val TIMES.
              CONCATENATE '0' a7_1 INTO a7_1.
              ENDDO.


              WRITE a7_1.

              Comentario

              • Tonnyman
                Member
                • dic
                • 53

                #8
                O también podrias manejarlo de esta forma:

                data: a7_1 TYPE string,
                a7_2 TYPE char20,
                val TYPE i,
                val1 TYPE string.

                a7_1 = '1-k'.
                val1 = strlen( a7_1 ).

                IF val1 < 20.
                val = 20 - val1.
                DO val TIMES.
                CONCATENATE '0' a7_1 INTO a7_1.
                ENDDO.
                ENDIF.

                a7_2 = a7_1.
                WRITE a7_2.

                Espero haber podido ayudar.

                Saludos.

                Comentario

                • DLR
                  Junior Member
                  • abr
                  • 10

                  #9
                  Lo primero es que la funcion CONVERSION_EXIT_ALPHA_INPUT, no funciona si hay caracteres alfabeticos en la cadena.

                  Y por otro lado, si el valor que vas a añadir es siempre '1_K', una manera sencilla es la siguiente:

                  DATA: lv_numc20(20) TYPE n,
                  lv_char20 TYPE char20.

                  lv_char20 = lv_numc20.
                  lv_char20+17(3) = '1_K'.

                  Un saludo.

                  Comentario

                  • Atlas
                    Senior Member
                    • ago
                    • 107

                    #10
                    prueba:

                    shift <var> RIGHT DELETING TRAILING space.

                    transalte <var> using ' 0'.

                    Comentario

                    Trabajando...