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