単位処理

 

SAP ECCシステムでは、数量はすべて数量単位と結びつけられます。

単位は長さや広さなどの次元を元に管理されます。同じ次元の単位はシステムテーブルに定義された換算係数を元に換算することができます。なお、次元なしの単位も存在します。

SI単位取得

SI単位を取得するには、汎用モジュールSI_UNIT_GET(ステータス:リリース)を使用することができます。 単位と次元のどちらかをパラメータとして指定可能です。

次元取得又はチェック

次元の取得又はチェックするには、以下の汎用モジュールを使用することができます。

  • DIMENSION_CHECK
    内部測定単位が指定された次元に対応しているかどうかをチェックします。
  • DIMENSION_GET_FOR_UNIT
    内部測定単位の次元を取得します。
  • UNIT_CORRESPONDENCE_CHECK 
    2つの単位が同じ次元に属するかどうかをチェックします。

換算係数取得

単位間の換算係数は、元情報がT006に定義されており、精度を維持するため、分子・分母により表現されます。 例えばインチとメトルの換算係数は、1平方インチ=(0.0254×0.0254=0.00064516)=125/193,752平米のように、分子125と分母193752で定義されています。

単位の換算係数を取得するには、汎用モジュールCONVERSION_FACTOR_GET(ステータス:リリース)を使用することができます。 変換には以下の式が使用されます。 (単位 UNIT_OUT の値) = (単位 UNIT_IN の値) *分子/分母 + 追加定数

REPORT  Y_UNIT_TEST1.

DATA: UNIT_1  LIKE T006-MSEHI,
      UNIT_2  LIKE T006-MSEHI,
      VAR1    TYPE F,
      ZAEHL   TYPE F,
      NENNR   TYPE F,
      ANDEC   LIKE T006-ANDEC,
      DIMID   LIKE T006-DIMID.

UNIT_1 = 'IN2'.
UNIT_2 = 'M2'.

CALL FUNCTION 'CONVERSION_FACTOR_GET'
    EXPORTING
       UNIT_IN      = UNIT_1
       UNIT_OUT     = UNIT_2
*NO_TYP_CHECK = ' '
    IMPORTING
      ADD_CONST   = VAR1
      NUMERATOR   = ZAEHL
      DENOMINATOR = NENNR
      DECIMALS    = ANDEC
      DIMENSION   = DIMID
    EXCEPTIONS
      CONVERSION_NOT_FOUND    = 01
      OVERFLOW                = 02
      TYPE_INVALID            = 03
      UNITS_MISSING           = 04
      UNIT_IN_NOT_FOUND       = 05
      UNIT_OUT_NOT_FOUND      = 06.

WRITE :/ '平方インチから平米へ変換'.
WRITE :/ ' 次元キー:', DIMID.
WRITE :/ ' 変換係数(分子):',ZAEHL DECIMALS 0  EXPONENT  0.
WRITE :/ ' 変換係数(分母):',NENNR DECIMALS 0  EXPONENT  0.
WRITE :/ ' 追加定数:', VAR1 DECIMALS 0  EXPONENT  0.

数量換算

異なる単位間の数量換算を行うには、以下の汎用モジュールを使用することができます。

  • UNIT_CONVERSION_WITH_FACTOR(ステータス:リリース)
    換算係数はパラメータにより指定されます。
  • UNIT_CONVERSION_SIMPLE(ステータス:リリース)
    換算係数はシステムテーブルT006から自動的に取得されます。

内部表現⇔外部表現変換

単位の内部表現と外部表現を変換するには、以下の汎用モジュールを使用することができます。

  • CONVERSION_EXIT_CUNIT_INPUT
    商用測定単位(3文字の外部測定単位)に対応する内部測定単位を取得します
  • CONVERSION_EXIT_CUNIT_OUTPUT
    内部測定単位に対応する商用測定単位(3文字の外部測定単位)を取得します
  • CONVERSION_EXIT_LUNIT_INPUT
    技術測定単位(6文字の外部測定単位)に対応する内部測定単位を取得します
  • CONVERSION_EXIT_LUNIT_OUTPUT
    内部測定単位に対応する技術測定単位(6文字の外部測定単位)を取得します

SAP単位⇔ISO単位変換

SAP単位とISO単位変換を変換するには、以下の汎用モジュールを使用することができます。

  • UNIT_OF_MEASURE_ISO_TO_SAP
    ISO単位からSAP単位を取得します
  • UNIT_OF_MEASURE_SAP_TO_ISO
    SAP単位からISO単位を取得します

品目は、品目固有の単位換算数式を品目マスタ画面で入力管理することができます。その情報を元に、品目の単位換算を行う汎用モジュールは標準から用意されております。

基本数量単位への変換

「基本数量単位への変換」を行なうには、汎用モジュール「MATERIAL_UNIT_CONVERSION」を使用します。

CALL FUNCTION 'MATERIAL_UNIT_CONVERSION'
	EXPORTING
		MATNR = vl_matnr     	 "品目
 		INPUT =  vl_source_value "変換数量
		MEINH = vl_source_meinf	 "変換前数量単位
 	IMPORTING
 		OUTPUT = vl_target_value "変換後数量
  	EXCEPTIONS
 		OTHERS = 1.

数量単位間の変換

「基本単位に限らない二つの単位間の変換」をなうには、汎用モジュール「MD_CONVERT_MATERIAL_UNIT」を使用します。

CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
  EXPORTING
    i_matnr      = vl_matnr         "品目
    i_in_me      = vl_source_unit   "変換前単位
    i_out_me     = vl_target_unit   "変換後単位
    i_menge      = vl_source_value  "変換前数量
  IMPORTING
    e_menge      = vl_target_value  "変換後数量
  EXCEPTIONS
    OTHERS       = 1.