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.
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.
Comentario