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.