**清空内表
CLEAR: it_rount,
it_bapiret2,
it_head,
it_clinetdata,
it_clinetdatax,
it_salesdata,
it_salesdatax,
it_plantdata,
it_plantdatax,
it_storagelocationdata,
it_storagelocationdatax,
it_valuationdata,
it_valuationdatax.
it_head-material = it_matnr. "物料号*
*基本数据录入
IF itab_ext-magrv <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-mat_grp_sm = itab_ext-magrv. "进口/国产
it_clinetdatax-mat_grp_sm = 'X'.
ENDIF.
IF itab_ext-matkl <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-matl_group = itab_ext-matkl. "物料组*
it_clinetdatax-matl_group = 'X'.
ENDIF.
IF itab_ext-spart <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-division = itab_ext-spart. "产品组
it_clinetdatax-division = 'X'.
ENDIF.
*销售视图录入
IF itab_ext-vkorg <> '' AND itab_ext-vtweg <> ''.
it_head-sales_view = 'X'. "销售视图
it_salesdata-sales_org = itab_ext-vkorg. "销售组织*
it_salesdata-distr_chan = itab_ext-vtweg. "分销渠道*
it_salesdata-delyg_plnt = itab_ext-dwerk. "交货工厂
it_salesdata-acct_assgt = itab_ext-ktgrm. "科目设置组
it_salesdata-mat_pr_grp = itab_ext-kondm. "物料定价组
it_salesdata-matl_stats = itab_ext-versg. "物料统计组
it_clinetdata-trans_grp = itab_ext-tragr. "运输组*
it_plantdata-loadinggrp = itab_ext-ladgr. "装载组*
it_plantdata-availcheck = itab_ext-mtvfp. "可用性检查*
it_salesdatax-sales_org = itab_ext-vkorg.
it_salesdatax-distr_chan = itab_ext-vtweg.
it_salesdatax-delyg_plnt = 'X'.
it_salesdatax-acct_assgt = 'X'.
it_salesdatax-mat_pr_grp = 'X'.
it_salesdatax-matl_stats = 'X'.
it_clinetdatax-trans_grp = 'X'.
it_plantdatax-loadinggrp = 'X'.
it_plantdatax-availcheck = 'X'.
ENDIF.
*税分类
IF itab_ext-taxkm <> ''.
it_mlan-depcountry = 'CN'. "发货国(由该国家发货)
it_mlan-tax_type_1 = 'MWSI'."税类别(销项税)
it_mlan-taxclass_1 = itab_ext-taxkm.
APPEND it_mlan.
ENDIF.
**&&&工厂数据维护
IF itab_ext-werks <> ''.
it_plantdata-plant = itab_ext-werks."工厂
it_plantdatax-plant = itab_ext-werks.
it_valuationdata-val_area = itab_ext-werks. "估价范围(工厂)
it_valuationdatax-val_area = itab_ext-werks.
*6采购视图录入
IF itab_ext-ekgrp <> '' OR itab_ext-kordb <> ''
OR itab_ext-usequ <> ''.
it_head-purchase_view = 'X'. "采购视图
it_plantdata-pur_group = itab_ext-ekgrp. "采购组
it_plantdata-sourcelist = itab_ext-kordb. "货源清单
it_plantdata-quotausage = itab_ext-usequ. "配额
it_plantdatax-pur_group = 'X'.
it_plantdatax-sourcelist = 'X'.
it_plantdatax-quotausage = 'X'.
ENDIF.
*MRP录入
IF itab_ext-dismm <> ''.
it_head-mrp_view = 'X'. "物料需求计划(MRP)视图
it_plantdata-mrp_type = itab_ext-dismm. "MRP类型*_A
it_plantdata-mrp_ctrler = itab_ext-dispo. "MRP控制者*
it_plantdata-lotsizekey = itab_ext-disls. "批量*
it_plantdata-minlotsize = itab_ext-bstmi. "最小批量
it_plantdata-abc_id = itab_ext-maabc. "ABC标识
it_plantdata-pur_status = itab_ext-mmsta. "特定工厂的物料状态
it_plantdatax-mrp_type = 'X'.
it_plantdatax-mrp_ctrler = 'X'.
it_plantdatax-lotsizekey = 'X'.
it_plantdatax-minlotsize = 'X'.
it_plantdatax-abc_id = 'X'.
it_plantdatax-pur_status = 'X'.
IF itab_ext-beskz <> ''.
it_plantdata-proc_type = itab_ext-beskz. "获取(采购)类型*_B
it_plantdata-spproctype = itab_ext-sobsl. "特殊采购类型
it_plantdata-backflush = itab_ext-rgekz. "反冲
it_plantdata-iss_st_loc = itab_ext-lgpro. "生产仓储地点
it_plantdata-sloc_exprc = itab_ext-lgfsb. "外部采购仓储地点
it_plantdata-inhseprodt = itab_ext-dzeit. "内部生产(自制)时间?
it_plantdata-plnd_delry = itab_ext-plifz. "计划交货时间
it_plantdata-sm_key = itab_ext-fhori. "计划边际码
it_plantdata-safety_stk = itab_ext-eisbe. "安全库存
it_plantdatax-proc_type = 'X'.
it_plantdatax-spproctype = 'X'.
it_plantdatax-backflush = 'X'.
it_plantdatax-iss_st_loc = 'X'.
it_plantdatax-sloc_exprc = 'X'.
it_plantdatax-inhseprodt = 'X'.
it_plantdatax-plnd_delry = 'X'.
it_plantdatax-sm_key = 'X'.
it_plantdatax-safety_stk = 'X'.
ENDIF.
IF itab_ext-vrmod <> ''.
it_plantdata-period_ind = 'M'. "期间标识
it_plantdata-availcheck = itab_ext-mtvfp. "可用性检查*
it_plantdata-consummode = itab_ext-vrmod. "消耗模式
it_plantdata-bwd_cons = itab_ext-vint1. "逆向消耗模式
it_plantdata-fwd_cons = itab_ext-vint2. "向前消耗模式
it_plantdatax-period_ind = 'X'.
it_plantdatax-availcheck = 'X'.
it_plantdatax-consummode = 'X'.
it_plantdatax-bwd_cons = 'X'.
it_plantdatax-fwd_cons = 'X'.
ENDIF.
it_plantdata-dep_req_id = itab_ext-sbdkz. "独立/集中
it_plantdatax-dep_req_id = 'X'.
ENDIF.
*8工作计划录入
IF itab_ext-beskz = 'E' OR itab_ext-beskz = 'X'.
it_head-work_sched_view = 'X'. "工作计划视图
it_plantdata-serno_prof = itab_ext-sernp. "序列号参数文件
it_plantdata-profit_ctr = itab_ext-prctr. "利润中心
it_plantdatax-serno_prof = 'X'.
it_plantdatax-profit_ctr = 'X'.
ENDIF.
*9工厂数据/存储录入
IF itab_ext-lgort <> ''.
it_head-storage_view = 'X'. "存储视图
it_storagelocationdata-plant = itab_ext-werks. "工厂
it_storagelocationdata-stge_loc = itab_ext-lgort. "库存地点
it_storagelocationdata-stge_bin = itab_ext-lgpbe. "仓位_A
it_storagelocationdatax-plant = itab_ext-werks.
it_storagelocationdatax-stge_loc = itab_ext-lgort.
it_storagelocationdatax-stge_bin = 'X'.
ENDIF.
IF itab_ext-sernp <> ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-serno_prof = itab_ext-sernp. "序列号参数文件
it_plantdatax-serno_prof = 'X'.
ENDIF.
IF itab_ext-prctr <> ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-profit_ctr = itab_ext-prctr. "利润中心
it_plantdatax-profit_ctr = 'X'.
ELSEIF itab_ext-prctr = ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-profit_ctr = '0000209001'.
it_plantdatax-profit_ctr = 'X'.
ENDIF.
**会计录入
IF itab_ext-bklas <> ''.
it_head-account_view = 'X'. "会计视图
it_valuationdata-val_class = itab_ext-bklas. "评估类
it_valuationdata-price_unit = itab_ext-peinh. "价格单位
it_valuationdata-std_price = itab_ext-stprs_1. "标准价
it_valuationdatax-val_class = 'X'.
it_valuationdatax-price_unit = 'X'.
it_valuationdatax-std_price = 'X'.
ENDIF.
*成本录入
it_head-cost_view = 'X'. "成本视图
it_plantdata-variance_key = itab_ext-awsls. "差异码A
it_valuationdata-orig_mat = itab_ext-hkmat. "物料来源
it_plantdatax-variance_key = 'X'.
it_valuationdatax-orig_mat = 'X'.
ENDIF.
*调用函数,保存数据
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = it_head
clientdata = it_clinetdata
clientdatax = it_clinetdatax
salesdata = it_salesdata
salesdatax = it_salesdatax
plantdata = it_plantdata
plantdatax = it_plantdatax
storagelocationdata = it_storagelocationdata
storagelocationdatax = it_storagelocationdatax
valuationdata = it_valuationdata
valuationdatax = it_valuationdatax
IMPORTING
return = it_bapiret2
TABLES
taxclassifications = it_mlan.
IF it_bapiret2-type CA 'EA'.
SUPPRESS DIALOG.
WRITE: /'添加物料信息出错!物料号为:',it_matnr1,it_bapiret2-message.
CONCATENATE '添加物料信息出错!物料号为:' it_matnr1 ';' it_bapiret2-message INTO it_error-message.
ELSE.
COMMIT WORK.
SUPPRESS DIALOG.
IF ( itab_ext-zpslx = '' OR itab_ext-zpslx = '1' OR itab_ext-zpslx = '2' OR itab_ext-zpslx = '3' ).
* UPDATE marc SET zpslx = itab_ext-zpslx
* WHERE matnr = itab_ext-matnr AND
* werks = itab_ext-werks .
ENDIF.
WRITE: /'物料已成功导入!物料号为:',it_matnr1.
* LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0101.
CONCATENATE '物料已成功导入!物料号为:' it_matnr1 INTO it_error-message.
ENDIF.
APPEND it_error.
ENDLOOP.
CLEAR: it_rount,
it_bapiret2,
it_head,
it_clinetdata,
it_clinetdatax,
it_salesdata,
it_salesdatax,
it_plantdata,
it_plantdatax,
it_storagelocationdata,
it_storagelocationdatax,
it_valuationdata,
it_valuationdatax.
it_head-material = it_matnr. "物料号*
*基本数据录入
IF itab_ext-magrv <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-mat_grp_sm = itab_ext-magrv. "进口/国产
it_clinetdatax-mat_grp_sm = 'X'.
ENDIF.
IF itab_ext-matkl <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-matl_group = itab_ext-matkl. "物料组*
it_clinetdatax-matl_group = 'X'.
ENDIF.
IF itab_ext-spart <> ''.
it_head-basic_view = 'X'. "基本数据视图
it_clinetdata-division = itab_ext-spart. "产品组
it_clinetdatax-division = 'X'.
ENDIF.
*销售视图录入
IF itab_ext-vkorg <> '' AND itab_ext-vtweg <> ''.
it_head-sales_view = 'X'. "销售视图
it_salesdata-sales_org = itab_ext-vkorg. "销售组织*
it_salesdata-distr_chan = itab_ext-vtweg. "分销渠道*
it_salesdata-delyg_plnt = itab_ext-dwerk. "交货工厂
it_salesdata-acct_assgt = itab_ext-ktgrm. "科目设置组
it_salesdata-mat_pr_grp = itab_ext-kondm. "物料定价组
it_salesdata-matl_stats = itab_ext-versg. "物料统计组
it_clinetdata-trans_grp = itab_ext-tragr. "运输组*
it_plantdata-loadinggrp = itab_ext-ladgr. "装载组*
it_plantdata-availcheck = itab_ext-mtvfp. "可用性检查*
it_salesdatax-sales_org = itab_ext-vkorg.
it_salesdatax-distr_chan = itab_ext-vtweg.
it_salesdatax-delyg_plnt = 'X'.
it_salesdatax-acct_assgt = 'X'.
it_salesdatax-mat_pr_grp = 'X'.
it_salesdatax-matl_stats = 'X'.
it_clinetdatax-trans_grp = 'X'.
it_plantdatax-loadinggrp = 'X'.
it_plantdatax-availcheck = 'X'.
ENDIF.
*税分类
IF itab_ext-taxkm <> ''.
it_mlan-depcountry = 'CN'. "发货国(由该国家发货)
it_mlan-tax_type_1 = 'MWSI'."税类别(销项税)
it_mlan-taxclass_1 = itab_ext-taxkm.
APPEND it_mlan.
ENDIF.
**&&&工厂数据维护
IF itab_ext-werks <> ''.
it_plantdata-plant = itab_ext-werks."工厂
it_plantdatax-plant = itab_ext-werks.
it_valuationdata-val_area = itab_ext-werks. "估价范围(工厂)
it_valuationdatax-val_area = itab_ext-werks.
*6采购视图录入
IF itab_ext-ekgrp <> '' OR itab_ext-kordb <> ''
OR itab_ext-usequ <> ''.
it_head-purchase_view = 'X'. "采购视图
it_plantdata-pur_group = itab_ext-ekgrp. "采购组
it_plantdata-sourcelist = itab_ext-kordb. "货源清单
it_plantdata-quotausage = itab_ext-usequ. "配额
it_plantdatax-pur_group = 'X'.
it_plantdatax-sourcelist = 'X'.
it_plantdatax-quotausage = 'X'.
ENDIF.
*MRP录入
IF itab_ext-dismm <> ''.
it_head-mrp_view = 'X'. "物料需求计划(MRP)视图
it_plantdata-mrp_type = itab_ext-dismm. "MRP类型*_A
it_plantdata-mrp_ctrler = itab_ext-dispo. "MRP控制者*
it_plantdata-lotsizekey = itab_ext-disls. "批量*
it_plantdata-minlotsize = itab_ext-bstmi. "最小批量
it_plantdata-abc_id = itab_ext-maabc. "ABC标识
it_plantdata-pur_status = itab_ext-mmsta. "特定工厂的物料状态
it_plantdatax-mrp_type = 'X'.
it_plantdatax-mrp_ctrler = 'X'.
it_plantdatax-lotsizekey = 'X'.
it_plantdatax-minlotsize = 'X'.
it_plantdatax-abc_id = 'X'.
it_plantdatax-pur_status = 'X'.
IF itab_ext-beskz <> ''.
it_plantdata-proc_type = itab_ext-beskz. "获取(采购)类型*_B
it_plantdata-spproctype = itab_ext-sobsl. "特殊采购类型
it_plantdata-backflush = itab_ext-rgekz. "反冲
it_plantdata-iss_st_loc = itab_ext-lgpro. "生产仓储地点
it_plantdata-sloc_exprc = itab_ext-lgfsb. "外部采购仓储地点
it_plantdata-inhseprodt = itab_ext-dzeit. "内部生产(自制)时间?
it_plantdata-plnd_delry = itab_ext-plifz. "计划交货时间
it_plantdata-sm_key = itab_ext-fhori. "计划边际码
it_plantdata-safety_stk = itab_ext-eisbe. "安全库存
it_plantdatax-proc_type = 'X'.
it_plantdatax-spproctype = 'X'.
it_plantdatax-backflush = 'X'.
it_plantdatax-iss_st_loc = 'X'.
it_plantdatax-sloc_exprc = 'X'.
it_plantdatax-inhseprodt = 'X'.
it_plantdatax-plnd_delry = 'X'.
it_plantdatax-sm_key = 'X'.
it_plantdatax-safety_stk = 'X'.
ENDIF.
IF itab_ext-vrmod <> ''.
it_plantdata-period_ind = 'M'. "期间标识
it_plantdata-availcheck = itab_ext-mtvfp. "可用性检查*
it_plantdata-consummode = itab_ext-vrmod. "消耗模式
it_plantdata-bwd_cons = itab_ext-vint1. "逆向消耗模式
it_plantdata-fwd_cons = itab_ext-vint2. "向前消耗模式
it_plantdatax-period_ind = 'X'.
it_plantdatax-availcheck = 'X'.
it_plantdatax-consummode = 'X'.
it_plantdatax-bwd_cons = 'X'.
it_plantdatax-fwd_cons = 'X'.
ENDIF.
it_plantdata-dep_req_id = itab_ext-sbdkz. "独立/集中
it_plantdatax-dep_req_id = 'X'.
ENDIF.
*8工作计划录入
IF itab_ext-beskz = 'E' OR itab_ext-beskz = 'X'.
it_head-work_sched_view = 'X'. "工作计划视图
it_plantdata-serno_prof = itab_ext-sernp. "序列号参数文件
it_plantdata-profit_ctr = itab_ext-prctr. "利润中心
it_plantdatax-serno_prof = 'X'.
it_plantdatax-profit_ctr = 'X'.
ENDIF.
*9工厂数据/存储录入
IF itab_ext-lgort <> ''.
it_head-storage_view = 'X'. "存储视图
it_storagelocationdata-plant = itab_ext-werks. "工厂
it_storagelocationdata-stge_loc = itab_ext-lgort. "库存地点
it_storagelocationdata-stge_bin = itab_ext-lgpbe. "仓位_A
it_storagelocationdatax-plant = itab_ext-werks.
it_storagelocationdatax-stge_loc = itab_ext-lgort.
it_storagelocationdatax-stge_bin = 'X'.
ENDIF.
IF itab_ext-sernp <> ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-serno_prof = itab_ext-sernp. "序列号参数文件
it_plantdatax-serno_prof = 'X'.
ENDIF.
IF itab_ext-prctr <> ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-profit_ctr = itab_ext-prctr. "利润中心
it_plantdatax-profit_ctr = 'X'.
ELSEIF itab_ext-prctr = ''.
it_head-storage_view = 'X'. "存储视图
it_plantdata-profit_ctr = '0000209001'.
it_plantdatax-profit_ctr = 'X'.
ENDIF.
**会计录入
IF itab_ext-bklas <> ''.
it_head-account_view = 'X'. "会计视图
it_valuationdata-val_class = itab_ext-bklas. "评估类
it_valuationdata-price_unit = itab_ext-peinh. "价格单位
it_valuationdata-std_price = itab_ext-stprs_1. "标准价
it_valuationdatax-val_class = 'X'.
it_valuationdatax-price_unit = 'X'.
it_valuationdatax-std_price = 'X'.
ENDIF.
*成本录入
it_head-cost_view = 'X'. "成本视图
it_plantdata-variance_key = itab_ext-awsls. "差异码A
it_valuationdata-orig_mat = itab_ext-hkmat. "物料来源
it_plantdatax-variance_key = 'X'.
it_valuationdatax-orig_mat = 'X'.
ENDIF.
*调用函数,保存数据
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = it_head
clientdata = it_clinetdata
clientdatax = it_clinetdatax
salesdata = it_salesdata
salesdatax = it_salesdatax
plantdata = it_plantdata
plantdatax = it_plantdatax
storagelocationdata = it_storagelocationdata
storagelocationdatax = it_storagelocationdatax
valuationdata = it_valuationdata
valuationdatax = it_valuationdatax
IMPORTING
return = it_bapiret2
TABLES
taxclassifications = it_mlan.
IF it_bapiret2-type CA 'EA'.
SUPPRESS DIALOG.
WRITE: /'添加物料信息出错!物料号为:',it_matnr1,it_bapiret2-message.
CONCATENATE '添加物料信息出错!物料号为:' it_matnr1 ';' it_bapiret2-message INTO it_error-message.
ELSE.
COMMIT WORK.
SUPPRESS DIALOG.
IF ( itab_ext-zpslx = '' OR itab_ext-zpslx = '1' OR itab_ext-zpslx = '2' OR itab_ext-zpslx = '3' ).
* UPDATE marc SET zpslx = itab_ext-zpslx
* WHERE matnr = itab_ext-matnr AND
* werks = itab_ext-werks .
ENDIF.
WRITE: /'物料已成功导入!物料号为:',it_matnr1.
* LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0101.
CONCATENATE '物料已成功导入!物料号为:' it_matnr1 INTO it_error-message.
ENDIF.
APPEND it_error.
ENDLOOP.