Inicio > ABAP/4 > Mantener el valor de un monto/moneda

Mantener el valor de un monto/moneda

Caso: se busca modificar el campo moneda (WAERS) en las posiciones de un ALV que muestra precios, pero SIN MODIFICAR EL MONTO CARGADO en el ALV (dicho monto está referenciado a la moneda).

Es decir, suponiendo que el usuario posee montos en el ALV cargados y puede cambiar la moneda a todas las posiciones mediante un combobox, no se desea que se modifique el monto cargado por el usuario (ver la imagen).

Les paso la forma con lo que pude hacerlo, quizás haya una forma mejor..

Nota: en caso de pasar de USD a CLP, como USD trabaja con decimales y CLP no (generalmente), el sistema al querer convertir dará un mensaje de error B1532 (Traspasar el importe de la moneda con más de 0 decimales), se deberá modificar los montos primero a un formato sin decimales y luego hacer la conversión de la moneda.

LOOP AT it_tabla INTO wa_tabla.

CHECK g_waers NE wa_tabla-waers.
* Actualizo el monto al formato correcto
PERFORM cambiar_monto_moneda USING wa_tabla-waers
g_waers
CHANGING wa_tabla-precio_total.
* Actualizo el campo moneda
MOVE g_waers TO wa_tabla-waers.

MODIFY it_tabla FROM wa_tabla INDEX sy-tabix.
ENDLOOP.

*&———————————————————————*
*&      Form  cambiar_monto_moneda
*&———————————————————————*
*       Ajusta el monto ingresado por parámetro a la moneda nueva
*———————————————————————-*
FORM cambiar_monto_moneda USING p_moneda_vieja TYPE waers
p_moneda_nueva 
TYPE waers
CHANGING p_monto.

DATA: lv_value TYPE bapicurr-bapicurr.

lv_value =  p_monto.

CALL FUNCTION ‘BAPI_CURRENCY_CONV_TO_EXTERNAL’
EXPORTING
currency        = p_moneda_vieja
amount_internal = lv_value
IMPORTING
amount_external = lv_value.

CALL FUNCTION ‘CURRENCY_AMOUNT_BAPI_TO_SAP’
EXPORTING
currency    = p_moneda_nueva
bapi_amount = lv_value
IMPORTING
sap_amount  = lv_value.

p_monto = lv_value.

ENDFORM.                    “cambiar_monto_moneda

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: