Cómo referenciar un campo de precio con su moneda en ALV

Cuando muestras importes en un ALV, es fundamental que el sistema sepa qué moneda aplica a cada cantidad. Si no, el ALV no podrá formatear correctamente los números (decimales, separadores de miles) ni mostrar el símbolo de moneda adecuado.

En ABAP, esto se resuelve en el fieldcatalog: indicas cuál es el campo de moneda asociado a cada campo de cantidad mediante la propiedad cfieldname.

Configuración en el fieldcatalog

Supón que tienes dos campos en tu tabla interna:

  • XPRICE: el importe (campo cantidad)
  • XCURRENCY: la moneda (p.ej. 'EUR', 'USD')

En el fieldcatalog, defines:

WHEN 'XPRICE'.
<fs_fieldcat>-col_pos = 4.
<fs_fieldcat>-edit = 'X'.
<fs_fieldcat>-cfieldname = 'XCURRENCY'. " ← Nombre del campo moneda
<fs_fieldcat>-datatype = 'CURR'. " ← Tipo cantidad

WHEN 'XCURRENCY'.
<fs_fieldcat>-col_pos = 5.
<fs_fieldcat>-edit = 'X'.
<fs_fieldcat>-just = 'C'.

Referenciar un campo cantidad con su moneda en ALV es sencillo: en el fieldcatalog, marca datatype = 'CURR' y apunta al campo moneda con cfieldname. El ALV se encargará del resto: formato de números, decimales y símbolo de moneda, todo por fila.