物料主数据批导 BAPI_MATERIAL_SAVEDATA

物料批量导入,视图扩展注意这个bapi无法实现分类视图和质量视图的扩展,这个2个视图需要单独调用2个bapi 分类视图BAPI:BAPI_OBJCL_CREATE和质量视图BAPI BAPI_MATINSPCTRL_SAVEREPLICA 这2个bapi必须在下边bapi成功以后 才能使用

&---------------------------------------------------------------------
*& Form FRM_IMPORT_DATA
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------

  • –> p1 text
  • <-- p2 text
    ----------------------------------------------------------------------
    FORM frm_import_data .
    DATA: lv_line(10),
    lv_percent(6),
    lv_text(40).
    DATA: ls_header LIKE bapimathead,
    ls_ebew TYPE ebew.

CLEAR: gw_data.
LOOP AT gt_data INTO gw_data WHERE box = ‘X’.
CLEAR :
wa_mbew,
wa_mbewx.
PERFORM frm_add_zero USING gw_data-matnr CHANGING gw_data-matnr."物料号补0

  • TRANSLATE gw_data-lgort TO UPPER CASE.
    lv_line = lv_line + 1.
    lv_percent = lv_line * 100 / g_lines.
    CONCATENATE ‘已完成’ lv_line ‘条/’ g_lines ‘条’ INTO lv_text.
    CONDENSE lv_text.
    CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
    EXPORTING
    percentage = lv_percent
    text = lv_text.
CLEAR: lv_percent,lv_text.
CLEAR: wa_header.

*物料抬头信息
wa_header-material = gw_data-matnr."物料号
wa_header-matl_type = gw_data-mtart."物料类型

*启用的扩展视图
wa_header-basic_view = gc_x.
wa_header-purchase_view = gw_data-kz_cgview."扩展采购视图
wa_header-mrp_view = gw_data-kz_scview."生产视图

  • wa_header-account_cost_view = gw_data-kz_kjview."会计视图
    wa_header-storage_view = gc_x.
    wa_header-sales_view = gw_data-kz_xsview."扩展销售视图
IF gw_data-kz_kjview = gc_x.
  wa_header-account_view = gc_x.
  wa_header-cost_view = gc_x.
ENDIF.

*----------mara-------------------------------------------------
IF gw_data-meins IS NOT INITIAL.
CALL FUNCTION ‘CONVERSION_EXIT_CUNIT_INPUT’
EXPORTING
input = gw_data-meins

  •     LANGUAGE             = SY-LANGU
      IMPORTING
        output = gw_data-meins.
    wa_mara-base_uom                     = gw_data-meins."基本计量单位
    wa_marax-base_uom                    = gc_x."基本计量单位
    

    ENDIF.

    IF gw_data-mhdrz IS NOT INITIAL.
    wa_mara-minremlife = gw_data-mhdrz."最小剩余货架寿命
    wa_marax-minremlife = gc_x."最小剩余货架寿命
    ENDIF.

    IF gw_data-mhdhb IS NOT INITIAL.
    wa_mara-shelf_life = gw_data-mhdhb."总货架寿命
    wa_marax-shelf_life = gc_x."总货架寿命
    ENDIF.
    IF gw_data-iprkz IS NOT INITIAL.

  •  PERIOD_IND_EXPIRATION_DATE
    CALL FUNCTION 'CONVERSION_EXIT_PERKZ_INPUT'
      EXPORTING
        input  = gw_data-iprkz
      IMPORTING
        output = wa_mara-period_ind_expiration_date.
    
  •  wa_mara-period_ind_expiration_date  = gw_data-iprkz."货架寿命到期日的期间标识
    wa_marax-period_ind_expiration_date  = gc_x."货架寿命到期日的期间标识
    

    ENDIF.

  • wa_mara-shelf_life = gw_data-mhdhb."总货架寿命
    *----------marc-------------------------------------------------
    IF gw_data-werks IS NOT INITIAL.
    wa_marc-plant = gw_data-werks."工厂
    wa_marcx-plant = gw_data-werks."工厂
    ENDIF.

IF gw_data-xchpf IS NOT INITIAL.
  wa_marc-batch_mgmt        = gw_data-xchpf."批次管理
  wa_marcx-batch_mgmt        = gc_x."批次管理
ENDIF.

IF gw_data-xchpf IS NOT INITIAL.
  wa_marc-batch_mgmt        = gw_data-xchpf."批次管理
  wa_marcx-batch_mgmt        = gc_x."批次管理
ENDIF.
IF gw_data-ekgrp IS NOT INITIAL.
  wa_marc-pur_group         = gw_data-ekgrp."采购组
  wa_marcx-pur_group         = gc_x."采购组
ENDIF.
IF gw_data-dismm IS NOT INITIAL.
  wa_marc-mrp_type          = gw_data-dismm."MRP类型
  wa_marcx-mrp_type          = gc_x."MRP类型
ENDIF.
  • IF gw_data-disgr IS NOT INITIAL.
    wa_marc-mrp_group = gw_data-disgr."MRP组
    wa_marcx-mrp_group = gc_x."MRP组
    ENDIF.

  • IF gw_data-dispo IS NOT INITIAL.
    wa_marc-mrp_ctrler = gw_data-dispo."MRP控制者
    wa_marcx-mrp_ctrler = gc_x.
    ENDIF.

  • IF gw_data-disls IS NOT INITIAL.
    wa_marc-lotsizekey = gw_data-disls."批量大小
    wa_marcx-lotsizekey = gc_x.
    ENDIF.

*BESKZ
IF gw_data-beskz IS NOT INITIAL.
wa_marc-proc_type = gw_data-beskz."采购类型
wa_marcx-proc_type = gc_x.
ENDIF.
*
IF gw_data-kzkup IS NOT INITIAL.
wa_marc-co_product = gw_data-kzkup."联产品
wa_marcx-co_product = gc_x."联产品
ENDIF.
*
IF gw_data-lgpro IS NOT INITIAL.
wa_marc-iss_st_loc = gw_data-lgpro."生产仓储地点
wa_marcx-iss_st_loc = gc_x."生产仓储地点
ENDIF.

  • IF gw_data-dzeit IS NOT INITIAL.
    wa_marc-inhseprodt = gw_data-dzeit."自制生产
    wa_marcx-inhseprodt = gc_x."自制生产
    ENDIF.

  • IF gw_data-webaz IS NOT INITIAL.
    wa_marc-gr_pr_time = gw_data-webaz."收货处理时间
    wa_marcx-gr_pr_time = gc_x."收货处理时间
    ENDIF.

  • IF gw_data-plifz IS NOT INITIAL.
    wa_marc-plnd_delry = gw_data-plifz."计划交货时间
    wa_marcx-plnd_delry = gc_x."计划交货时间
    ENDIF.

  • IF gw_data-fhori IS NOT INITIAL.
    wa_marc-sm_key = gw_data-fhori."计划边际码
    wa_marcx-sm_key = gc_x."计划边际码
    ENDIF.

  • IF gw_data-mtvfp_g IS NOT INITIAL.
    wa_marc-availcheck = gw_data-mtvfp_g."可用性检查的检查组
    wa_marcx-availcheck = gc_x."可用性检查的检查组
    ENDIF.

  • IF wa_marc-availcheck IS INITIAL.
    IF gw_data-mtvfp IS NOT INITIAL.
    wa_marc-availcheck = gw_data-mtvfp."可用性检查的检查组
    wa_marcx-availcheck = gc_x."可用性检查的检查组
    ENDIF.
    ENDIF.

  • IF gw_data-altsl IS NOT INITIAL.
    wa_marc-alt_bom_id = gw_data-altsl."选择方法
    wa_marcx-alt_bom_id = gc_x."选择方法
    ENDIF.

  • IF gw_data-ueetk IS NOT INITIAL .
    wa_marc-unlimited = gw_data-ueetk."允许无限过量交货
    wa_marcx-unlimited = gc_x."允许无限过量交货
    ENDIF.

  • IF gw_data-frtme IS NOT INITIAL.
    wa_marc-prod_unit = gw_data-frtme."生产单位
    wa_marcx-prod_unit = gc_x."生产单位
    ENDIF.

  • IF gw_data-prctr IS NOT INITIAL.
    wa_marc-profit_ctr = gw_data-prctr."允许无限过量交货
    wa_marcx-profit_ctr = gc_x."允许无限过量交货
    ENDIF.

  • 差异码
    IF gw_data-awsls IS NOT INITIAL.
    wa_marc-variance_key = gw_data-awsls."差异码
    wa_marcx-variance_key = gc_x.
    ENDIF.

  • IF gw_data-ueetk IS NOT INITIAL.
    wa_marc-unlimited = gw_data-ueetk."允许无限过量交货
    wa_marcx-unlimited = gc_x."允许无限过量交货
    ENDIF.

    IF gw_data-ladgr IS NOT INITIAL.
    wa_marc-loadinggrp = gw_data-ladgr."装载组
    wa_marcx-loadinggrp = gc_x."装载组
    ENDIF.

*MBEW
IF gw_data-werks IS NOT INITIAL.
wa_mbew-val_area = gw_data-werks."工厂
wa_mbewx-val_area = gw_data-werks."工厂
ENDIF.
*
IF gw_data-bklas IS NOT INITIAL.
wa_mbew-val_class = gw_data-bklas."评估分类
wa_mbewx-val_class = gc_x."评估分类
ENDIF.

  • IF gw_data-bwtty IS NOT INITIAL.
    wa_mbew-val_cat = gw_data-bwtty."评估类别
    wa_mbewx-val_cat = gc_x."评估类别
    ENDIF.

  • IF gw_data-mlast IS NOT INITIAL.
    wa_mbew-ml_settle = gw_data-mlast."价格确定
    wa_mbewx-ml_settle = gc_x."价格确定
    ENDIF.

  • IF gw_data-vprsv IS NOT INITIAL.
    wa_mbew-price_ctrl = gw_data-vprsv."价格控制
    wa_mbewx-price_ctrl = gc_x."价格控制
    ENDIF.
    *标准价格

    IF wa_mbew-price_ctrl = ‘S’.

  • 标准价格
    CLEAR :gv_std_price.
    gv_std_price = gw_data-stprs.
    IF gv_std_price IS NOT INITIAL .
    wa_mbew-std_price = gv_std_price.
    wa_mbewx-std_price = gc_x.
    ENDIF.

    ELSEIF wa_mbew-price_ctrl = ‘V’.
    CLEAR :gv_std_price.
    gv_std_price = gw_data-stprs.
    wa_mbew-std_price = gv_std_price.
    wa_mbewx-std_price = gc_x.
    IF gw_data-pvprs IS NOT INITIAL.
    wa_mbew-moving_pr = gw_data-pvprs.
    wa_mbewx-moving_pr = gc_x.
    ELSE.
    IF gw_data-stprs IS NOT INITIAL.
    wa_mbew-moving_pr = gw_data-stprs.
    wa_mbewx-moving_pr = gc_x.
    ENDIF.
    ENDIF.

    ENDIF.
    IF gw_data-peinh IS NOT INITIAL.
    wa_mbew-price_unit = gw_data-peinh.“价格单位
    wa_mbewx-price_unit = gc_x.”
    ENDIF.

  • 用QS的成本核算
    IF gw_data-ekalr IS NOT INITIAL.
    wa_mbew-qty_struct = gw_data-ekalr."用QS的成本核算
    wa_mbewx-qty_struct = gc_x.
    ENDIF.

  • 物料来源
    IF gw_data-hkmat IS NOT INITIAL.
    wa_mbew-orig_mat = gw_data-hkmat."用QS的成本核算
    wa_mbewx-orig_mat = gc_x.
    ENDIF.
    --------------------------------------------------

  • 销售组织
    IF gw_data-vkorg IS NOT INITIAL.
    wa_mvke-sales_org = gw_data-vkorg.
    wa_mvkex-sales_org = gw_data-vkorg.
    ENDIF.

  • 分销渠道
    IF gw_data-vtweg IS NOT INITIAL.
    wa_mvke-distr_chan = gw_data-vtweg.
    wa_mvkex-distr_chan = gw_data-vtweg.
    ENDIF.

  • 产品层次
    IF gw_data-prodh IS NOT INITIAL.
    wa_mvke-prod_hier = gw_data-prodh."产品层次
    wa_mvkex-prod_hier = gc_x."产品层次
    ENDIF.

  • 销售单位
    IF gw_data-vrkme IS NOT INITIAL.
    wa_mvke-sales_unit = gw_data-vrkme."销售单位
    wa_mvkex-sales_unit = gc_x."销售单位
    ENDIF.

  • 交货工厂
    IF gw_data-dwerk IS NOT INITIAL.
    wa_mvke-delyg_plnt = gw_data-dwerk."交货工厂
    wa_mvkex-delyg_plnt = gc_x."交货工厂
    ENDIF.

  • 物料统计组
    IF gw_data-versg IS NOT INITIAL.
    wa_mvke-matl_stats = gw_data-versg."物料统计组
    wa_mvkex-matl_stats = gc_x."物料统计组
    ENDIF.

  • 科目设置组
    IF gw_data-ktgrm IS NOT INITIAL.
    wa_mvke-acct_assgt = gw_data-ktgrm."物料统计组
    wa_mvkex-acct_assgt = gc_x."物料统计组
    ENDIF.

  • 项目类别组
    IF gw_data-mtpos IS NOT INITIAL.
    wa_mvke-item_cat = gw_data-mtpos."项目类别组
    wa_mvkex-item_cat = gc_x."项目类别组
    ENDIF.

  • 项目类别组
    IF gw_data-prat1 IS NOT INITIAL.
    wa_mvke-prod_att_1 = gw_data-prat1."是否喷码
    wa_mvkex-prod_att_1 = gc_x."是否喷码
    ENDIF.

    "税分类
    CLEAR:it_mlan[].
    IF gw_data-kz_xsview = ‘X’.
    IF gw_data-taxkm IS NOT INITIAL.
    it_mlan-depcountry = ‘CN’.
    it_mlan-depcountry_iso = ‘CN’.
    it_mlan-tax_type_1 = ‘MWST’.
    it_mlan-taxclass_1 = gw_data-taxkm.
    APPEND it_mlan.
    ENDIF.
    ENDIF.
    CLEAR: wa_return.

  • 增加销售视图旧物料号
    IF gw_data-kz_xsview = ‘X’.
    t_extensionin-structure = ‘BAPI_TE_MVKE’.

  wa_temvke-sales_org  = gw_data-vkorg.
  wa_temvke-distr_chan = gw_data-vtweg.
  CONDENSE gw_data-zbismt.
  wa_temvke-zbismt = gw_data-zbismt.
  wa_temvke-vrkme  = gw_data-vrkme.
  t_extensionin-valuepart1 = wa_temvke.
  APPEND  t_extensionin.
  t_extensioninx-structure = 'BAPI_TE_MVKEX'.
  wa_temvkex-sales_org  = gw_data-vkorg.
  wa_temvkex-distr_chan = gw_data-vtweg.
  wa_temvkex-zbismt = 'X'.
  wa_temvkex-vrkme = 'X'.
  t_extensioninx-valuepart1 = wa_temvkex.
  APPEND  t_extensioninx.
  CLEAR:
    wa_temvke,
    wa_temvkex.
ENDIF.
  • IF gw_data-sd_text IS NOT INITIAL.
  •  CLEAR: it_mltx,ls_mltx.
    
  •  ls_mltx-applobject  = 'MVKE'.
    
  •  ls_mltx-text_name+0(18) = gw_data-matnr.
    
  •  ls_mltx-text_name+18(4) = gw_data-vkorg.
    
  •  ls_mltx-text_name+22(2) = gw_data-vtweg.
    
  •  ls_mltx-text_id     = '0001'.
    
  •  ls_mltx-langu       = sy-langu.
    
  •  "ls_mltx-format_col  = ''.
    
  •  ls_mltx-text_line   = gt_itab-sd_text.
    
  •  APPEND ls_mltx TO it_mltx.
    
  • ENDIF.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    headdata           = wa_header
    clientdata         = wa_mara
    clientdatax        = wa_marax
    plantdata          = wa_marc
    plantdatax         = wa_marcx
    valuationdata      = wa_mbew
    valuationdatax     = wa_mbewx
    salesdata          = wa_mvke
    salesdatax         = wa_mvkex
  IMPORTING
    return             = wa_return
  TABLES
    materiallongtext   = it_mltx
    taxclassifications = it_mlan
    extensionin        = t_extensionin
    extensioninx       = t_extensioninx.

IF wa_return-type = 'E' OR wa_return-type = 'A'.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  gw_data-msg = wa_return-message.
  gw_data-status = '@0A@'.
ELSE.
  COMMIT WORK.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = gc_x.
  MESSAGE s001(zcoft) WITH '视图扩展成功' INTO gw_data-msg.
  gw_data-status = '@08@'.
ENDIF.
MODIFY gt_data FROM gw_data TRANSPORTING status msg.
CLEAR: wa_header,wa_mara,wa_marax,wa_marc,wa_marcx,wa_mard,wa_mardx,

wa_mbew,wa_mbewx,wa_mvke,wa_mvkex,wa_return.
CLEAR: it_makt,it_marm,it_marmx,it_mlan,it_makt[],it_marm[],it_marmx[],
it_mlan[].

CLEAR:t_extensionin[],t_extensioninx[],t_extensionin,t_extensioninx.
CLEAR:gw_data.

ENDLOOP.
ENDFORM.

分类视图扩展
DATA: l_key TYPE bapi1003_key-object.
DATA:
it_return TYPE bapiret2 OCCURS 0,
w_return TYPE bapiret2.

REFRESH it_return.
CALL FUNCTION ‘BAPI_OBJCL_CREATE’
EXPORTING
objectkeynew = ‘000000000000110010’ "物料号或者设备号
objecttablenew = ‘MARA’ "主数据表 如果是设备就是“EQUI”
classnumnew = ‘Z_BATCH01’ "
classtypenew = ‘022’ "类别种类
standardclass = ‘X’
TABLES
return = it_return.
READ TABLE it_return INTO w_return WITH KEY type = ‘E’ id = ‘CL’ number = ‘731’.
IF sy-subrc = 0.
DELETE it_return INDEX sy-tabix.
ENDIF.
READ TABLE it_return INTO w_return WITH KEY type = ‘E’.
IF sy-subrc = 0.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

  • return-message = return-message && ‘/’ && w_return-message.
  •  concatenate '分类特性创建失败!'(091) RETURN-MESSAGE into RETURN-MESSAGE separated by '/'.
    

ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
ENDIF.

*REFRESH it_return.
LOOP AT it_return INTO w_return .
WRITE : / w_return-type.
ENDLOOP.

在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值