2009/02/05

UNIT_CONVERSION_SIMPLE ABAP

DATA: LW_1 TYPE BSEG-MENGE,
       LW_2 TYPE SY-SUBRC.

PERFORM CONVERT_QUANTITY USING 1 'KG' 'G'
                                              CHANGING LW_1 LW_2.

WRITE LW_1.


*&---------------------------------------------------------------------*
*&      Form  CONVERT_QUANTITY
*&---------------------------------------------------------------------*
*       基本数量単位による換算
*----------------------------------------------------------------------*
*      -->IOW_MENGE     数量(前)
*      -->IW_MEEHT_BEF  数量単位(前)
*      -->IW_MEEHT_AFT  数量単位(後)
*      <--OW_MENGE      数量(後)
*----------------------------------------------------------------------*
FORM CONVERT_QUANTITY USING IW_MENGE TYPE ANY
                     IW_MEEHT_AFT TYPE ANY
                     IW_MEEHT_BEF TYPE ANY
          CHANGING
                     OW_MENGE TYPE ANY
                     OW_SUBRC TYPE ANY.

*----- 数量単位の変換
  CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
    EXPORTING
      INPUT                      = IW_MENGE      "数量
*     NO_TYPE_CHECK              = 'X'
      ROUND_SIGN                 = 'X'           "丸め[四捨五入]
      UNIT_IN                    = IW_MEEHT_BEF  "数量単位(前)
      UNIT_OUT                   = IW_MEEHT_AFT  "数量単位(後)
    IMPORTING
      OUTPUT                     = OW_MENGE      "数量
    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.
*
  OW_SUBRC = SY-SUBRC.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " CONVERT_QUANTITY