物料批量导入,视图扩展注意这个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.
扫描二维码关注公众号,回复: 4677547 查看本文章 -
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.