Está en la página 1de 4

Bapis para cambiar la unidad de medida

La unidad de medida base, es la base para la gestión de stock y evaluación. Las cantidades de
material disponible o en almacén (cuantos) se cuentan utilizando la unidad de medida base.
toda cantidad que este medida en otra unidad, se convierte a la unidad de medida base para el
calculo.

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


En la base de datos, esta información se encuentra en el campo MARA-MEINS.

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


La información sobre las unidades de medida alternativa esta almacenada en la tabla MARM:
Unidades de medida para el material.
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

También podría gustarte