Anuncio

Colapsar
No hay anuncio todavía.

Ayuda en una rutina de inicio

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Ayuda en una rutina de inicio

    Hola,
    Disculpen la molestia, pero de ABAP conozco muy poco, yo trabajo con el modulo de BW y tengo un problema en una rutina, ¿podrían ayudarme?,
    Estoy tratando con una cadena de texto ( WA_EXPORT-AMOUNT ) debe de cumplir cierta posicion siempre, 16 c enteros y 2 decimales.

    lo hace bien para los que vienen por ejemplo asi: 125.23- pero si tengo un numero entero 123, mi campo se desfasa. Intente buscar el punto decimal pero con la instrucción que le estoy dando no lo encuentro.

    Porfa se aceptan todas las sugerencias, pero si me lo explican con manzanitas mejor, de abap se muy poco.
    les dejo el código, muchas gracias.


    CONSTANTS c_ceros(17) TYPE C VALUE '0000000000000000'.
    CONSTANTS c_ceros2(17) TYPE C VALUE'0000000000000000'.

    * MI DUDA ES AQUI, PORQUE NO ENCUENTRA EL PUNTO DECIMAL?

    search WA_EXPORT-AMOUNT for '.'.
    if sy-subrc = 0.
    search WA_EXPORT-AMOUNT for '-'.
    if sy-subrc = 0.
    replace ALL OCCURRENCES OF '-' IN
    WA_EXPORT-AMOUNT WITH space.
    shift WA_EXPORT-AMOUNT by 1 places right.
    OVERLAY WA_EXPORT-AMOUNT WITH c_ceros.
    WA_EXPORT-AMOUNT+0(1) = space.
    WA_EXPORT-AMOUNT+1(1) = '-'.

    else.

    OVERLAY WA_EXPORT-AMOUNT WITH c_ceros.
    shift WA_EXPORT-AMOUNT by 1 places right.
    WA_EXPORT-AMOUNT+0(1) = space.
    WA_EXPORT-AMOUNT+1(1) = space.
    endif.

    else.
    shift WA_EXPORT-AMOUNT by 2 places left.
    search WA_EXPORT-AMOUNT for '-'.
    if sy-subrc = 0.
    replace ALL OCCURRENCES OF '-' IN
    WA_EXPORT-AMOUNT WITH space.
    shift WA_EXPORT-AMOUNT by 1 places right.
    OVERLAY WA_EXPORT-AMOUNT WITH c_ceros.
    WA_EXPORT-AMOUNT+0(1) = space.
    WA_EXPORT-AMOUNT+1(1) = '-'.

    else.

    OVERLAY WA_EXPORT-AMOUNT WITH c_ceros.
    shift WA_EXPORT-AMOUNT by 1 places right.
    WA_EXPORT-AMOUNT+0(1) = space.
    WA_EXPORT-AMOUNT+1(1) = space.
    endif.

    endif.

  • #2
    Hola, lo que puedes hacer es primero, saber la longitud de la variable y despues recorrer posición a posición buscando el "." .
    Saludos

    Comentario


    • #3
      Hola, pero si tu cadena se llena con un entero de esta forma 123 y no 123.00 entonces no vas encontrar el . en ese caso, en el else de tu primera condición puedes concatenar el . y agregarle los dos ceros . Según tu ejemplo entendi que quiere que quede .

      concatenate WA_EXPORT-AMOUNT '.' 00' into WA_EXPORT-AMOUNT.

      Comentario

      Trabajando...
      X