BAPI_MATERIAL_SAVEDATA-基本単位 & 変更番号編集

本文详细描述了在ABAP编程中如何处理材料Master数据,涉及基本数量单位的转换,多个数量单位的设置和变更,以及利用BAPIs如BAPI_MATERIAL_SAVEDATA进行品目代码的保存和变更管理。
摘要由CSDN通过智能技术生成

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'.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值