Todo material en Sap, tiene asignada una unidad de medida base. Se puede ver la unidad de medida base asignada a un material en el maestro de materiales, transacción MM03, en la pestaña de Datos básicos 1.
![]() |
| Unidad de medida base para el material en le maestro de materiales |
Se pueden definir otras unidades de medida alternativa para el material y su factor de conversión en el Maestro de Materiales -> Datos adicionales -> Unidades de medida.
![]() |
| Unidades de medida alternativa y su relación |
En Abap, cuando necesitemos realizar alguna conversion entre unidades de medida podemos utilizar:
MATERIAL_UNIT_CONVERSION
Esta bapi, convierte una cantidad de un material en unidades de medida base a una unidad de medida alternativa y viceversa. Es obligatorio que una de las dos unidades de medida implicadas en la conversión sea la unidad de medida base del material (MARA-MEINS).
*&---------------------------------------------------------------------*
*& Form convert_unit_con_material
*&---------------------------------------------------------------------*
* pi_um_inicial / pi_um_final: 1 de ellas, debe ser la UMB del material
*&---------------------------------------------------------------------*
FORM convert_unit_con_material USING pi_matnr TYPE mara-matnr
pi_cantida_ini TYPE gsmng
pi_um_inicial TYPE t006-msehi
pi_um_final TYPE t006-msehi
CHANGING po_cantida_fin TYPE gsmng.
call function 'MATERIAL_UNIT_CONVERSION'
exporting
input = pi_cantida_ini
* kzmeinh = 'X'
matnr = pi_matnr
meinh = pi_um_inicial
meins = pi_um_final
* type_umr = '3'
importing
output = po_cantida_fin
exceptions
conversion_not_found = 1
input_invalid = 2
material_not_found = 3
meinh_not_found = 4
meins_missing = 5
no_meinh = 6
output_invalid = 7
overflow = 8
others = 9.
IF sy-subrc <> 0.
* Mensaje de error
ENDIF.
ENDFORM.
UNIT_CONVERSION_SIMPLE
Con esta bapi no es necesario especificar el material ni la unidad de medida base. Convierte la cantidad que indiquemos de una unidad de medida a otra. También permite redondear el resultado.
Los factores de conversión de las unidades de medida se configuran en:
SPRO -> Sap Netweaver -> Parametrizaciones generales -> Verificar unidades de medida
*&---------------------------------------------------------------------*
*& Form convert_unit_sin_material
*&---------------------------------------------------------------------*
FORM convert_unit_sin_material USING pi_cantida_ini TYPE gsmng
pi_um_inicial TYPE t006-msehi
pi_um_final TYPE t006-msehi
CHANGING po_cantida_fin TYPE gsmng.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
input = pi_cantida_ini
* NO_TYPE_CHECK = 'X'
* ROUND_SIGN = ' '
unit_in = pi_um_inicial
unit_out = pi_um_final
IMPORTING
* ADD_CONST =
* DECIMALS =
* DENOMINATOR =
* NUMERATOR =
output = po_cantida_fin
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10.
IF sy-subrc <> 0.
* Mensaje de error
ENDIF.
ENDFORM. "convert_unit_sin_material
RS_CONV_EX_2_IN_NO_DD
No es una bapi para conversión entre unidades. Convierte un string a tipo cantidad, muy útil cuando la fuente de los datos es un fichero de texto plano y necesitas convertir los datos para poder trabajar con ellos.
*&---------------------------------------------------------------------*
*& Form convert_to_quan
*&---------------------------------------------------------------------*
FORM convert_to_quan USING p_mengec TYPE c
CHANGING p_mengei LIKE marc-eisbe.
CONDENSE p_mengec NO-GAPS.
CALL FUNCTION 'RS_CONV_EX_2_IN_NO_DD'
EXPORTING
input_external = p_mengec
* CONVERT =
* CURRENCY = ' '
IMPORTING
output_internal = p_mengei
EXCEPTIONS
input_not_numerical = 1
too_many_decimals = 2
more_than_one_sign = 3
ill_thousand_separator_dist = 4
too_many_digits = 5
sign_for_unsigned = 6
too_large = 7
too_small = 8
invalid_date_format = 9
invalid_date = 10
invalid_time_format = 11
invalid_time = 12
invalid_hex_digit = 13
unexpected_error = 14
input_too_long = 15
no_decimals = 16
invalid_float = 17
illegal_type = 18
conversion_exit_error = 19
OTHERS = 20.
ENDFORM. " convert_to_quan


Muchas gracias por la información, me ha sido muy util.
ResponderEliminar