DATA: GCF_A TYPE CHAR10,
LDS_HEADDATA TYPE BAPIMATHEAD,"ヘッダセグメントと管理情報.
LDS_RETURN TYPE BAPIRET2, "リターンパラメータ.
LDS_BAPIPAREX TYPE BAPIPAREX, "追加項目-変更番号
LDS_BAPIPAREXX TYPE BAPIPAREXX, "追加項目-変更番号
LDT_BAPIPAREX TYPE TABLE OF BAPIPAREX, "追加項目-変更番号
LDT_BAPIPAREXX TYPE TABLE OF BAPIPAREXX, "追加項目-変更番号
LDS_UNITSOFMEASURE TYPE BAPI_MARM, "数量単位.
LDS_UNITSOFMEASUREX TYPE BAPI_MARMX, "UNITSOFMEASURE の更新情報.
LDT_UNITSOFMEASURE TYPE TABLE OF BAPI_MARM, "数量単位.
LDT_UNITSOFMEASUREX TYPE TABLE OF BAPI_MARMX, "UNITSOFMEASURE更.
LDT_RETURNMESSAGES TYPE TABLE OF BAPI_MATRETURN2. "リターンP.
*--------------------------------------------------------------*
*--------------ヘッダデータ------------------------------------*
*--------------------------------------------------------------*
LDS_HEADDATA-MATERIAL = 'VAVU8-302'. "品目コード.
LDS_HEADDATA-BASIC_VIEW = 'X'. "基本データビュー
**基本数量単位の変換が必須
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = '個'
language = sy-langu
IMPORTING
output = lds_unitsofmeasure-alt_unit
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
* 項目設定(数量単位) ---------------------------------------------------
LDS_UNITSOFMEASURE-ALT_UNIT = '22'. "基本数量単位-FM
LDS_UNITSOFMEASURE-NUMERATOR = '555'. "分子:基数量単位
LDS_UNITSOFMEASURE-DENOMINATR = '2'. "分母:基数量単位
APPEND LDS_UNITSOFMEASURE TO LDT_UNITSOFMEASURE.
* 更新対象フラグ(数量単位) ---------------------------------------------
LDS_UNITSOFMEASUREX-ALT_UNIT = '22'. "基本数量単位-FM
LDS_UNITSOFMEASUREX-NUMERATOR = 'X'. "分子:基本数量単位
LDS_UNITSOFMEASUREX-DENOMINATR = 'X'. "分母:基本数量単位
APPEND LDS_UNITSOFMEASUREX TO LDT_UNITSOFMEASUREX.
* 項目設定(数量単位) ---------------------------------------------------
LDS_UNITSOFMEASURE-ALT_UNIT = '10'. "基本数量単位-g
LDS_UNITSOFMEASURE-NUMERATOR = '1111'. "分子:基数量単位
LDS_UNITSOFMEASURE-DENOMINATR = '3'. "分母:基数量単位
APPEND LDS_UNITSOFMEASURE TO LDT_UNITSOFMEASURE.
* 更新対象フラグ(数量単位) ---------------------------------------------
LDS_UNITSOFMEASUREX-ALT_UNIT = '10'. "基本数量単位-g
LDS_UNITSOFMEASUREX-NUMERATOR = 'X'. "分子:基本数量単位
LDS_UNITSOFMEASUREX-DENOMINATR = 'X'. "分母:基本数量単位
APPEND LDS_UNITSOFMEASUREX TO LDT_UNITSOFMEASUREX.
*--------------------------------------------------------------*
*--------------変更番号関連----------------------------------------*
*--------------------------------------------------------------*
lds_bapiparex-structure = 'BAPI_TE_MARA'.
lds_bapiparex-valuepart1+0(18) = 'VAVU8-302'. "品目
lds_bapiparex-valuepart1+18(12) = 'Z20010101'. "変更番号
APPEND lds_bapiparex TO ldt_bapiparex.
lds_bapiparexx-structure = 'BAPI_TE_MARAX'.
lds_bapiparexx-valuepart1+0(18) = 'VAVU8-302'. "品目
lds_bapiparexx-valuepart1+18(1) = 'X'. "変更番号
APPEND lds_bapiparexx TO ldt_bapiparexx.
* 【品目マスタ登録BAPI処理】*
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = LDS_HEADDATA
IMPORTING
RETURN = LDS_RETURN
TABLES
UNITSOFMEASURE = LDT_UNITSOFMEASURE
UNITSOFMEASUREX = LDT_UNITSOFMEASUREX
EXTENSIONIN = LDT_BAPIPAREX
EXTENSIONINX = LDT_BAPIPAREXX
RETURNMESSAGES = LDT_RETURNMESSAGES
.
DATA:
LDS_HDATA TYPE BAPIMATHEAD, "ヘッダセグメントと管理情報
LDS_VALUATIONDATA TYPE BAPI_MBEW, "評価データ
LDS_VALUATIONDATAX TYPE BAPI_MBEWX, "評価データの更新情報
LDS_BAPI_TE_MARA TYPE BAPI_TE_MARA, "得意先定義項目: 品目データ (クライアントレベル)
LDS_BAPI_TE_MARAX TYPE BAPI_TE_MARAX, "得意先定義項目: 品目データ (クライアントレベル)の更新情報
LDF_DATA(1000) TYPE C, "拡張構造用
LDS_BAPIPAREX TYPE BAPIPAREX, "追加項目
LDS_BAPIPAREXX TYPE BAPIPAREXX, "追加項目
LDT_BAPIPAREX TYPE TABLE OF BAPIPAREX, "追加項目
LDT_BAPIPAREXX TYPE TABLE OF BAPIPAREXX, "追加項目
LDS_RETURN TYPE BAPIRET2, "リターンパラメータ
LDT_RETURNMESSAGES TYPE STANDARD TABLE OF BAPI_MATRETURN2 "全メッセージ
.
* ヘッダセグメントと管理情報
LDS_HDATA-MATERIAL = PVF_MATNR. "品目コード
LDS_HDATA-ACCOUNT_VIEW = ABAP_ON. "会計ビュー
* 評価データ
LDS_VALUATIONDATA-VAL_AREA = PVF_WERKS. "プラント
LDS_VALUATIONDATA-PRICE_CTRL = PVF_VPRSV. "原価管理区分
LDS_VALUATIONDATAX-VAL_AREA = PVF_WERKS.
LDS_VALUATIONDATAX-PRICE_CTRL = ABAP_ON.
*------------追加項目(編集)------------*
* 変更管理番号があれば、変更管理番号を渡す
IF GDF_AENNR IS NOT INITIAL.
LDS_BAPI_TE_MARA-MATERIAL = PVF_MATNR. "品目コード
LDS_BAPI_TE_MARA-AENNR = GDF_AENNR. "変更管理番号
LDS_BAPI_TE_MARAX-MATERIAL = PVF_MATNR.
LDS_BAPI_TE_MARAX-AENNR = 'X'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LDS_BAPI_TE_MARA-AENNR
IMPORTING
OUTPUT = LDS_BAPI_TE_MARA-AENNR.
LDF_DATA = LDS_BAPI_TE_MARA.
LDS_BAPIPAREX-STRUCTURE = 'BAPI_TE_MARA'.
LDS_BAPIPAREX-VALUEPART1 = LDF_DATA+0(240).
LDS_BAPIPAREX-VALUEPART2 = LDF_DATA+240(240).
LDS_BAPIPAREX-VALUEPART3 = LDF_DATA+480(240).
LDS_BAPIPAREX-VALUEPART4 = LDF_DATA+720(240).
APPEND LDS_BAPIPAREX TO LDT_BAPIPAREX.
LDF_DATA = LDS_BAPI_TE_MARAX.
LDS_BAPIPAREXX-STRUCTURE = 'BAPI_TE_MARAX'.
LDS_BAPIPAREXX-VALUEPART1 = LDF_DATA+0(240).
LDS_BAPIPAREXX-VALUEPART2 = LDF_DATA+240(240).
LDS_BAPIPAREXX-VALUEPART3 = LDF_DATA+480(240).
LDS_BAPIPAREXX-VALUEPART4 = LDF_DATA+720(240).
APPEND LDS_BAPIPAREXX TO LDT_BAPIPAREXX.
ENDIF.
*------------追加項目(編集)------------*
* 品目マスタを更新
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = LDS_HDATA
VALUATIONDATA = LDS_VALUATIONDATA
VALUATIONDATAX = LDS_VALUATIONDATAX
IMPORTING
RETURN = LDS_RETURN
TABLES
EXTENSIONIN = LDT_BAPIPAREX
EXTENSIONINX = LDT_BAPIPAREXX
RETURNMESSAGES = LDT_RETURNMESSAGES.
* エラー判定
LOOP AT LDT_RETURNMESSAGES INTO DATA(LDS_RETURNMESSAGES)
WHERE TYPE = 'E'
OR TYPE = 'A'.
MESSAGE S000(SU) WITH LDS_RETURNMESSAGES-MESSAGE
DISPLAY LIKE 'E'.
ROLLBACK WORK.
RETURN.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.