在sap中有些单位在前台看到的与在底层数据库看到不一致,这时如果开发报表或者做bdc的时候就要进行必要的转化,下面介绍常用的几个函数。
DATA: BEGIN OF sbook OCCURS 0,
wunit TYPE sbook-wunit,
short_text TYPE string,
END OF sbook.
***需要转换的单位
sbook-wunit = 'KG'.
***接受转换后单位
DATA output_unit TYPE sbook-wunit.
***内部单位转换成外部单位 均不涉及到数量的变化
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = sbook-wunit
language = sy-langu
IMPORTING
output = output_unit
short_text = sbook-short_text
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
*WRITE / sbook-short_text.
EXPORTING
input = output_unit
language = sy-langu
IMPORTING
output = output_unit
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
***以上转换均不牵涉到数量的变化,如果涉及到数量的变化 如 1M = 100CM.请使用如函数: CF_UT_UNIT_CONVERSION
实例如下
DATA NEW_VALUE TYPE PLFH-MGVGW.
CALL FUNCTION 'CF_UT_UNIT_CONVERSION'
EXPORTING
* MATNR_IMP = ' '
* MEINS_IMP = ' '
unit_new_imp = 'M'
unit_old_imp = 'CM'
value_old_imp = 100
IMPORTING
VALUE_NEW_EXP = NEW_VALUE
EXCEPTIONS
OVERFLOW = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
|