BAPI_MATERIAL_MAINTAINDATA_RT
Bapi的各参数的具体使用
SORT it_updo BY box.
LOOP AT it_updo ASSIGNING <fs_upd>.
"-- 进度条 --
rowsnum = rowsnum - 1.
CLEAR barmess.
DATA num1 TYPE char10.
DATA num TYPE char10.
num1 = rowsnum1.
num = rowsnum.
CONCATENATE '总共有' num1 '条数据,' '还剩' num '条数据未上传' INTO barmess.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = barmess.
"-- 清空要用到的 内表 工作区 --
CLEAR:it_clientdata[], it_clientdatax[],
it_salesdata[], it_salesdatax[],
it_plantdata[], it_plantdatax[],
it_materialdescription[], it_addnlclientdata[],
it_addnlclientdatax[], it_characteristicvalue[],
it_characteristicvaluex[],it_valuationdata[],
it_valuationdatax[],it_variantskeys.
CLEAR:wa_return, wa_headdata.
READ TABLE it_updo INTO wa_updo WITH KEY box = 'X' BINARY SEARCH.
IF sy-subrc = 0.
IF <fs_upd>-box = ''.
CONTINUE.
ENDIF.
ENDIF.
wa_headdata-material = <fs_upd>-matnr. " 物料编号
wa_headdata-matl_type = <fs_upd>-mtart. " 物料类型
wa_headdata-matl_group = <fs_upd>-matkl. " 物料组
wa_headdata-matl_cat = <fs_upd>-attyp. " 物料类别
wa_headdata-function = '005'. " 物料类别
READ TABLE it_t023 INTO wa_t023 WITH KEY matkl = <fs_upd>-matkl BINARY SEARCH.
IF sy-subrc = 0.
wa_headdata-ref_matl = wa_t023-wwgda. " 参考物料
ENDIF.
*&-------------------------&&--------------------------
wa_headdata-char_prof = <fs_upd>-speparfil. "特征参数文件
*&-----------------------------------------------------
wa_headdata-basic_view = 'X'.
wa_headdata-sales_view = 'X'.
wa_headdata-list_view = 'X'.
wa_headdata-logdc_view = 'X'.
wa_headdata-logst_view = 'X'.
wa_headdata-no_appl_log = 'X'.
*----------------------------------------------------------
"-- 一般物料 创建 --
* ---------------------------------------------------------
"-- 零售数据传输:集团级别的物料数据 --
CLEAR:wa_clientdata,wa_clientdatax.
wa_clientdata-material = <fs_upd>-matnr. "物料编号
wa_clientdatax-material = <fs_upd>-matnr. "物料编号
wa_clientdata-old_mat_no = <fs_upd>-bismt. "旧物料号
wa_clientdatax-old_mat_no = 'X'.
wa_clientdata-item_cat = 'SAMM'. " 普通项目类别
wa_clientdatax-item_cat = 'X'.
wa_clientdata-lab_design = <fs_upd>-labor. " 实验室/设计室
wa_clientdatax-lab_design = 'X'.
"-- 修改时的 日期 用户字段 处理 --
IF <fs_upd>-zce = 'E'.
wa_clientdata-created_on = wa_mara_tem2-ersda. "创建日期
wa_clientdatax-created_on = 'X'.
wa_clientdata-created_by = wa_mara_tem2-ernam. "创建者
wa_clientdatax-created_by = 'X'.
wa_clientdata-last_chnge = sy-datum. " 修改日期
wa_clientdatax-last_chnge = 'X'.
wa_clientdata-changed_by = sy-uname. " 修改者
wa_clientdatax-changed_by = 'X'.
ENDIF.
"-- 创建时 日期 用户字段 处理 --
IF <fs_upd>-zce = 'C'.
wa_clientdata-created_on = sy-datum. "创建日期
wa_clientdatax-created_on = 'X'.
wa_clientdata-created_by = sy-uname. "创建者
wa_clientdatax-created_by = 'X'.
wa_clientdata-last_chnge = ''. " 修改日期
wa_clientdatax-last_chnge = 'X'.
wa_clientdata-changed_by = ''. " 修改者
wa_clientdatax-changed_by = 'X'.
ENDIF.
wa_clientdata-division = <fs_upd>-spart. " 部门 / 产品组
wa_clientdatax-division = 'X'.
wa_clientdata-extmatlgrp = <fs_upd>-extwg. " 外部物料组
wa_clientdatax-extmatlgrp = 'X'.
wa_clientdata-tax_class = <fs_upd>-taklv." 销项税分类 / 物料从税收分类
wa_clientdatax-tax_class = 'X'.
wa_clientdata-pr_ref_mat = ''. " 定价参考物料
wa_clientdatax-pr_ref_mat = 'X'.
"转换单位 基本计量单位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = <fs_upd>-meins
language = sy-langu
IMPORTING
output = <fs_upd>-meins
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
wa_clientdata-base_uom = <fs_upd>-meins.
wa_clientdatax-base_uom = 'X'.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = <fs_upd>-cha_meins
language = sy-langu
IMPORTING
output = <fs_upd>-cha_meins
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
wa_clientdata-var_ord_un = <fs_upd>-cha_meins. "可变单位 / 可变采购订单单位活动
wa_clientdatax-var_ord_un = 'X'.
APPEND wa_clientdata TO it_clientdata.
APPEND wa_clientdatax TO it_clientdatax.
"---零售数据传输:基本数据的扩展 --
CLEAR:wa_addnlclientdata,wa_addnlclientdatax.
wa_addnlclientdata-material = <fs_upd>-matnr. " 物料编号
wa_addnlclientdatax-material = <fs_upd>-matnr. " 物料编号
wa_addnlclientdata-function = '005'.
wa_addnlclientdata-pur_group = <fs_upd>-wekgr. " 采购组
wa_addnlclientdatax-pur_group = 'X'.
wa_addnlclientdata-val_class = <fs_upd>-wbkla. " 评估类
wa_addnlclientdatax-val_class = 'X'.
wa_addnlclientdata-li_proc_st = '02'.
wa_addnlclientdatax-li_proc_st = 'X'.
wa_addnlclientdata-li_proc_dc = '02'.
wa_addnlclientdatax-li_proc_dc = 'X'.
wa_addnlclientdata-assortlist = 'X'.
wa_addnlclientdatax-assortlist = 'X'.
wa_addnlclientdata-list_st_fr = sy-datum.
wa_addnlclientdatax-list_st_fr = 'X'.
wa_addnlclientdata-list_st_to = '99990101'.
wa_addnlclientdatax-list_st_to = 'X'.
wa_addnlclientdata-list_dc_fr = sy-datum.
wa_addnlclientdatax-list_dc_fr = 'X'.
wa_addnlclientdata-list_dc_to = '99990101'.
wa_addnlclientdatax-list_dc_to = 'X'.
wa_addnlclientdata-sell_st_fr = sy-datum.
wa_addnlclientdatax-sell_st_fr = 'X'.
wa_addnlclientdata-sell_st_to = '99990101'.
wa_addnlclientdatax-sell_st_to = 'X'.
wa_addnlclientdata-sell_dc_fr = sy-datum.
wa_addnlclientdatax-sell_dc_fr = 'X'.
wa_addnlclientdata-sell_dc_to = '99990101'.
wa_addnlclientdatax-sell_dc_to = 'X'.
wa_addnlclientdata-assortlist = 'X'.
wa_addnlclientdatax-assortlist = 'X'.
APPEND wa_addnlclientdata TO it_addnlclientdata.
APPEND wa_addnlclientdatax TO it_addnlclientdatax.
" 销售数据扩展
PERFORM frm_vkorg_extend USING: <fs_upd>-matnr '1000' 'X',
<fs_upd>-matnr '2000' 'X',
<fs_upd>-matnr '3000' 'X',
<fs_upd>-matnr '4000' 'X'.
"--- 零售数据传输:工厂层的物料数据 --
CLEAR:wa_plantdata,wa_plantdatax.
IF <fs_upd>-zce = 'E'.
wa_plantdata-function = '004'.
ELSE.
wa_plantdata-function = '005'.
ENDIF.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = <fs_upd>-wwgda werks = 'REFD'.
IF sy-subrc = 0.
wa_plantdata-material = <fs_upd>-matnr. "物料编号
wa_plantdatax-material = <fs_upd>-matnr.
wa_plantdata-mrp_ctrler = wa_marc-dispo. " MRP 控制者
wa_plantdatax-mrp_ctrler = 'X'.
wa_plantdata-mrp_type = wa_marc-dismm. " 物料需求计划类型
wa_plantdatax-mrp_type = 'X'.
wa_plantdata-lotsizekey = wa_marc-disls. " 批量大小
wa_plantdatax-lotsizekey = 'X'.
wa_plantdata-availcheck = wa_marc-mtvfp. " 可用性检查
wa_plantdatax-availcheck = 'X'.
wa_plantdata-proc_type = wa_marc-beskz. " 采购类型
wa_plantdatax-proc_type = 'X'.
wa_plantdata-spproctype = wa_marc-sobsl. " 特殊采购类型
wa_plantdatax-spproctype = 'X'.
wa_plantdata-no_costing = <fs_upd>-ekalr. " 用QS的成品估算 / 无成本核算
wa_plantdatax-no_costing = 'X'.
wa_plantdata-profit_ctr = wa_marc-prctr. " 利润中心
wa_plantdatax-profit_ctr = 'X'.
wa_plantdata-variance_key = wa_marc-awsls. " 差异码
wa_plantdatax-variance_key = 'X'.
wa_plantdata-sm_key = wa_marc-fhori. " 浮动的计划边际码
wa_plantdatax-sm_key = 'X'.
wa_plantdata-gr_pr_time = wa_marc-webaz. " 收货处理时间
wa_plantdatax-gr_pr_time = 'X'.
wa_plantdata-inhseprodt = wa_marc-dzeit. " 自制生产时间
wa_plantdatax-inhseprodt = 'X'.
wa_plantdata-pur_group = <fs_upd>-wekgr. " 采购组
wa_plantdatax-pur_group = 'X'.
wa_plantdata-under_tol = wa_marc-uneto. " 不足交货容差
wa_plantdatax-under_tol = 'X'.
wa_plantdata-over_tol = wa_marc-ueeto. " 过度交货容差
wa_plantdatax-over_tol = 'X'.
wa_plantdata-plnd_delry = wa_marc-plifz. " 计划交货时间
wa_plantdatax-plnd_delry = 'X'.
wa_plantdata-distr_prof = ''. " 分销参数文件
wa_plantdatax-distr_prof = 'X'.
wa_plantdata-plant = 'REFD'. "工厂
wa_plantdatax-plant = 'REFD'.
wa_plantdata-refpltcons = 'REFD'.
wa_plantdatax-refpltcons = 'REFD'.
APPEND wa_plantdata TO it_plantdata.
APPEND wa_plantdatax TO it_plantdatax.
ENDIF.
"-- 零售数据传输:物料描述 --
CLEAR wa_materialdescription.
wa_materialdescription-function = '005'. " 物料编号
wa_materialdescription-material = <fs_upd>-matnr. " 物料编号
wa_materialdescription-langu = sy-langu. " 语言代码
wa_materialdescription-matl_desc = <fs_upd>-maktx. " 物料描述
APPEND wa_materialdescription TO it_materialdescription.
"-- 零售数据传输:评估数据 --
CLEAR:wa_valuationdata,wa_valuationdatax.
wa_valuationdata-function = '005'. " 物料编号
wa_valuationdata-material = <fs_upd>-matnr. " 物料编号
wa_valuationdatax-material = <fs_upd>-matnr. " 物料编号
wa_valuationdata-val_area = 'REFD'. "评估范围
wa_valuationdatax-val_area = 'REFD'.
wa_valuationdata-val_class = <fs_upd>-wbkla. " 评估类
wa_valuationdatax-val_class = 'X'.
READ TABLE it_t023 INTO wa_t023 WITH KEY matkl = <fs_upd>-matkl BINARY SEARCH.
IF sy-subrc = 0.
wa_valuationdata-orig_mat = wa_t023-hkmat. "物料来源
wa_valuationdata-with_qty_struct = wa_t023-ekalr."用qs的成本估算
ENDIF.
wa_valuationdatax-orig_mat = 'X'.
wa_valuationdatax-with_qty_struct = 'X'.
APPEND wa_valuationdata TO it_valuationdata.
APPEND wa_valuationdatax TO it_valuationdatax.
"-- 零售数据传输:评估数据 --
CLEAR:wa_valuationdata,wa_valuationdatax.
wa_valuationdata-function = '005'. " 物料编号
wa_valuationdata-material = <fs_upd>-matnr. " 物料编号
wa_valuationdatax-material = <fs_upd>-matnr. " 物料编号
wa_valuationdata-val_area = 'REFS'. "评估范围
wa_valuationdatax-val_area = 'REFS'.
wa_valuationdata-orig_mat = wa_t023-hkmat. "物料来源
wa_valuationdatax-orig_mat = 'X'.
wa_valuationdata-with_qty_struct = wa_t023-ekalr."用qs的成本估算
wa_valuationdatax-with_qty_struct = 'X'.
wa_valuationdata-val_class = <fs_upd>-wbkla. " 评估类
wa_valuationdatax-val_class = 'X'.
APPEND wa_valuationdata TO it_valuationdata.
APPEND wa_valuationdatax TO it_valuationdatax.
"--- 零售数据传输:度量单位 ---
CLEAR: wa_unitsofmeasure,wa_unitsofmeasurex.
wa_unitsofmeasure-material = <fs_upd>-matnr.
wa_unitsofmeasurex-material = <fs_upd>-matnr.
wa_unitsofmeasure-function = '005'.
wa_unitsofmeasure-alt_unit = <fs_upd>-meins. " 计量单位
wa_unitsofmeasurex-alt_unit = 'X'.
APPEND wa_unitsofmeasure TO it_unitsofmeasure.
APPEND wa_unitsofmeasurex TO it_unitsofmeasurex.
PERFORM frm_call_bapi.
IF <fs_upd>-type = 'S'.
<fs_upd>-status = icon_led_green.
ELSE.
<fs_upd>-status = icon_led_red.
ENDIF.
ENDLOOP.
bapi的参数启用
CLEAR wa_return.
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
headdata = wa_headdata
IMPORTING
return = wa_return
TABLES
variantskeys = it_variantskeys
characteristicvalue = it_characteristicvalue
characteristicvaluex = it_characteristicvaluex
clientdata = it_clientdata
clientdatax = it_clientdatax
addnlclientdata = it_addnlclientdata
addnlclientdatax = it_addnlclientdatax
materialdescription = it_materialdescription
plantdata = it_plantdata
plantdatax = it_plantdatax
unitsofmeasure = it_unitsofmeasure
unitsofmeasurex = it_unitsofmeasurex
valuationdata = it_valuationdata
valuationdatax = it_valuationdatax
salesdata = it_salesdata
salesdatax = it_salesdatax.
创建成品变式的参数的赋值代码
DATA l_vari_matnr TYPE mara-matnr.
"-- 取出最it_mara_1大的 变式物料流水号 --
SORT it_updo BY matnr.
CLEAR: it_mara_1,it_updo_werk .
MOVE-CORRESPONDING it_mara TO it_mara_1.
MOVE-CORRESPONDING it_updo TO it_updo_werk.
SORT it_updo_werk BY matnr size2 color size1 werks.
DELETE ADJACENT DUPLICATES FROM it_updo_werk COMPARING matnr size2 color size1 werks.
SORT it_updo_werk BY matnr size2 color size1.
"-- 处理初始流水号 --
LOOP AT it_mara_1 ASSIGNING <fs_mara>.
PERFORM conv_output_matnr(zpub_f01) USING :<fs_mara>-matnr CHANGING <fs_mara>-matnr,
<fs_mara>-satnr CHANGING <fs_mara>-satnr.
CLEAR lv_tabix .
lv_tabix = sy-tabix.
IF <fs_mara>-satnr = ''.
<fs_mara>-satnr = <fs_mara>-matnr.
<fs_mara>-znum = 0.
ELSE.
CLEAR int_temp.
int_temp = strlen( <fs_mara>-satnr ).
<fs_mara>-znum = <fs_mara>-matnr+int_temp(3).
ENDIF.
PERFORM conv_input_matnr(zpub_f01) USING :<fs_mara>-matnr CHANGING <fs_mara>-matnr,
<fs_mara>-satnr CHANGING <fs_mara>-satnr.
IF it_updo IS NOT INITIAL.
READ TABLE it_updo INTO wa_updo WITH KEY matnr = <fs_mara>-satnr BINARY SEARCH.
IF sy-subrc <> 0.
DELETE it_mara_1 INDEX lv_tabix.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
SORT it_mara_1 BY satnr matnr DESCENDING.
DELETE ADJACENT DUPLICATES FROM it_mara_1 COMPARING satnr.
SORT it_mara_1 BY satnr.
CLEAR it_updo_tem.
MOVE-CORRESPONDING it_updo TO it_updo_tem.
SORT it_updo_tem BY matnr size2 color size1.
DELETE ADJACENT DUPLICATES FROM it_updo_tem COMPARING matnr size2 color size1.
SORT it_updo_tem BY box.
CLEAR it_updo_mat.
MOVE-CORRESPONDING it_updo_tem TO it_updo_mat.
SORT it_updo_mat BY matnr.
DELETE ADJACENT DUPLICATES FROM it_updo_mat COMPARING matnr.
"-- 成品变式 根据物料组 确定 杯 色 码 --
SORT lt_cabn BY class chartyp.
CLEAR it_updo_fina.
LOOP AT it_updo_mat INTO wa_updo_mat.
"-- 清空要用到的 内表 工作区 --
CLEAR:it_clientdata[], it_clientdatax[],
it_salesdata[], it_salesdatax[],
it_plantdata[], it_plantdatax[],
it_materialdescription[], it_addnlclientdata[],
it_addnlclientdatax[], it_characteristicvalue[],
it_characteristicvaluex[],it_valuationdata[],
it_valuationdatax[],it_variantskeys,
it_plantkeys,it_distrchainkeys,
wa_internationalartnos,it_internationalartnos.
LOOP AT it_updo_tem ASSIGNING <fs_upd> WHERE matnr = wa_updo_mat-matnr.
SORT <fs_upd>-cban_tab BY class chartyp.
"-- 进度条 --
rowsnum = rowsnum - 1.
CLEAR barmess.
DATA num1 TYPE char10.
DATA num TYPE char10.
num1 = rowsnum1.
num = rowsnum.
CONCATENATE '总共有' num1 '条数据,' '还剩' num '条数据未上传' INTO barmess.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = barmess.
CLEAR:wa_return, wa_headdata.
READ TABLE it_updo_tem INTO wa_updo_tem WITH KEY box = 'X' BINARY SEARCH.
IF sy-subrc = 0.
IF <fs_upd>-box = ''.
CONTINUE.
ENDIF.
ENDIF.
CLEAR l_vari_matnr.
"-- 物料号的流水号 赋值 --
IF <fs_upd>-zce = 'C'.
READ TABLE it_mara_1 INTO wa_mara_1 WITH KEY satnr = <fs_upd>-matnr BINARY SEARCH.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = <fs_upd>-matnr
IMPORTING
output = l_vari_matnr.
CLEAR: zv_num,znum.
zv_num = wa_mara_1-znum + 1.
znum = wa_mara_1-znum + 1.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = zv_num
IMPORTING
output = zv_num.
l_vari_matnr = l_vari_matnr && zv_num.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = l_vari_matnr
IMPORTING
output = l_vari_matnr.
ENDIF.
ELSE.
l_vari_matnr = <fs_upd>-vari_matnr.
ENDIF.
wa_headdata-function = '005'.
wa_headdata-material = <fs_upd>-matnr. " 物料编号
wa_headdata-matl_type = <fs_upd>-mtart. " 物料类型
wa_headdata-matl_group = <fs_upd>-matkl. " 物料组
wa_headdata-matl_cat = <fs_upd>-attyp. " 物料类别
* wa_headdata-ref_matl = <fs_upd>-wwgda. " 参考物料
wa_headdata-char_prof = <fs_upd>-speparfil. "特征参数文件
wa_headdata-basic_view = 'X'.
wa_headdata-sales_view = 'X'.
wa_headdata-list_view = 'X'.
wa_headdata-logdc_view = 'X'.
wa_headdata-logst_view = 'X'.
wa_headdata-no_appl_log = 'X'.
"-- 零售数据传输:一般物料变式的列表 --
CLEAR wa_variantskeys.
wa_variantskeys-function = '005'.
wa_variantskeys-material = <fs_upd>-matnr. " 物料编号
IF <fs_upd>-vari_matnr = ''.
wa_variantskeys-variant = l_vari_matnr."<fs_upd>-matnr && zv_num. " 变式编号
ELSE.
wa_variantskeys-variant = <fs_upd>-vari_matnr . " 变式编号
ENDIF.
APPEND wa_variantskeys TO it_variantskeys.
"-- 零售数据传输:集团级别的物料数据 --
CLEAR:wa_clientdata,wa_clientdatax.
IF <fs_upd>-vari_matnr = ''.
wa_clientdata-material = l_vari_matnr."<fs_upd>-matnr && zv_num. "物料编号
wa_clientdatax-material = l_vari_matnr."<fs_upd>-matnr && zv_num. "物料编号
ELSE.
wa_clientdata-material = <fs_upd>-vari_matnr. "物料编号
wa_clientdatax-material = <fs_upd>-vari_matnr. "物料编号
ENDIF.
wa_clientdata-function = '005'.
wa_clientdata-old_mat_no = <fs_upd>-bismt. "旧物料号
wa_clientdatax-old_mat_no = 'X'.
wa_clientdata-item_cat = 'NORM'. " 普通项目类别
wa_clientdatax-item_cat = 'X'.
wa_clientdata-division = <fs_upd>-spart. " 部门 / 产品组
wa_clientdatax-division = 'X'.
wa_clientdata-lab_design = <fs_upd>-labor. " 实验室/设计室
wa_clientdatax-lab_design = 'X'.
"-- 修改时 日期 用户 字段 处理 --
IF <fs_upd>-zce = 'E'.
wa_clientdata-created_on = wa_mara_tem2-ersda. "创建日期
wa_clientdatax-created_on = 'X'.
wa_clientdata-created_by = wa_mara_tem2-ernam. "创建者
wa_clientdatax-created_by = 'X'.
wa_clientdata-last_chnge = sy-datum. " 修改日期
wa_clientdatax-last_chnge = 'X'.
wa_clientdata-changed_by = sy-uname. " 修改者
wa_clientdatax-changed_by = 'X'.
ENDIF.
"-- 创建时 日期 用户 字段 处理 --
IF <fs_upd>-zce = 'C'.
wa_clientdata-created_on = sy-datum. "创建日期
wa_clientdatax-created_on = 'X'.
wa_clientdata-created_by = sy-uname. "创建者
wa_clientdatax-created_by = 'X'.
wa_clientdata-last_chnge = ''. " 修改日期
wa_clientdatax-last_chnge = 'X'.
wa_clientdata-changed_by = ''. " 修改者
wa_clientdatax-changed_by = 'X'.
ENDIF.
wa_clientdata-extmatlgrp = <fs_upd>-extwg. " 外部物料组
wa_clientdatax-extmatlgrp = 'X'.
wa_clientdata-tax_class = <fs_upd>-taklv. " 销项税分类 / 物料从税收分类
wa_clientdatax-tax_class = 'X'.
wa_clientdata-pr_ref_mat = ''. " 定价参考物料
wa_clientdatax-pr_ref_mat = 'X'.
<fs_upd>-meins = 'PC'.
"转换单位 基本计量单位
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = <fs_upd>-meins
language = sy-langu
IMPORTING
output = <fs_upd>-meins
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
wa_clientdata-base_uom = <fs_upd>-meins. " 基本单位
wa_clientdatax-base_uom = 'X'.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = <fs_upd>-cha_meins
language = sy-langu
IMPORTING
output = <fs_upd>-cha_meins
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
wa_clientdata-var_ord_un = <fs_upd>-cha_meins. "可变单位 / 可变采购订单单位活动
wa_clientdatax-var_ord_un = 'X'.
APPEND wa_clientdata TO it_clientdata.
APPEND wa_clientdatax TO it_clientdatax.
LOOP AT it_updo_werk INTO wa_updo_werk USING KEY key1 WHERE matnr = <fs_upd>-matnr
AND size2 = <fs_upd>-size2
AND color = <fs_upd>-color
AND size1 = <fs_upd>-size1.
"--- 零售数据传输:工厂层的物料数据 --
CLEAR:wa_plantdata,wa_plantdatax.
IF wa_updo_werk-vari_matnr = ''.
wa_plantdata-material = l_vari_matnr."wa_updo_werk-matnr && zv_num. "物料编号
wa_plantdatax-material = l_vari_matnr."wa_updo_werk-matnr && zv_num.
ELSE.
wa_plantdata-material = wa_updo_werk-vari_matnr. "物料编号
wa_plantdatax-material = wa_updo_werk-vari_matnr.
ENDIF.
wa_plantdata-function = '005'.
wa_plantdata-mrp_ctrler = wa_updo_werk-dispo. "MRP 控制者
wa_plantdatax-mrp_ctrler = 'X'.
wa_plantdata-mrp_type = wa_updo_werk-dismm. "物料需求计划类型
wa_plantdatax-mrp_type = 'X'.
wa_plantdata-lotsizekey = wa_updo_werk-disls. "批量大小
wa_plantdatax-lotsizekey = 'X'.
wa_plantdata-availcheck = wa_updo_werk-mtvfp. "可用性检查
wa_plantdatax-availcheck = 'X'.
wa_plantdata-proc_type = wa_updo_werk-beskz. "采购类型
wa_plantdatax-proc_type = 'X'.
wa_plantdata-spproctype = wa_updo_werk-sobsl. "特殊采购类型
wa_plantdatax-spproctype = 'X'.
wa_plantdata-profit_ctr = wa_updo_werk-prctr. "利润中心
wa_plantdatax-profit_ctr = 'X'.
wa_plantdata-variance_key = wa_updo_werk-awsls. "差异码
wa_plantdatax-variance_key = 'X'.
wa_plantdata-sm_key = wa_updo_werk-fhori. "浮动的计划边际码
wa_plantdatax-sm_key = 'X'.
wa_plantdata-gr_pr_time = wa_updo_werk-webaz. " 收货处理时间
wa_plantdatax-gr_pr_time = 'X'.
wa_plantdata-inhseprodt = wa_updo_werk-dzeit. " 自制生产时间
wa_plantdatax-inhseprodt = 'X'.
wa_plantdata-dep_req_id = wa_updo_werk-sbdkz. " 独立 / 集中
wa_plantdatax-dep_req_id = 'X'.
wa_plantdata-under_tol = wa_updo_werk-uneto. " 不足交货容差
wa_plantdatax-under_tol = 'X'.
wa_plantdata-over_tol = wa_updo_werk-ueeto. " 过度交货容差
wa_plantdatax-over_tol = 'X'.
wa_plantdata-plnd_delry = wa_updo_werk-plifz. " 计划交货时间
wa_plantdatax-plnd_delry = 'X'.
wa_plantdata-pur_group = wa_updo_werk-wekgr. " 工厂采购组
wa_plantdatax-pur_group = 'X'.
wa_plantdata-distr_prof = ''. "工厂分销参数
wa_plantdatax-distr_prof = 'X'.
wa_plantdata-plant = wa_updo_werk-werks. "工厂
wa_plantdatax-plant = wa_updo_werk-werks.
APPEND wa_plantdata TO it_plantdata.
APPEND wa_plantdatax TO it_plantdatax.
"-- 零售数据传输:评估数据 --
CLEAR:wa_valuationdata,wa_valuationdatax.
wa_valuationdata-material = wa_plantdata-material. "物料编号
wa_valuationdatax-material = wa_plantdata-material.
wa_valuationdata-val_area = '005'.
wa_valuationdata-val_area = wa_plantdata-plant. " 评估范围
wa_valuationdatax-val_area = wa_plantdata-plant.
wa_valuationdata-val_class = wa_updo_werk-wbkla. " 评估类
wa_valuationdatax-val_class = 'X'.
wa_valuationdata-orig_mat = wa_updo_werk-hkmat. " 物料来源
wa_valuationdatax-orig_mat = 'X'.
wa_valuationdata-with_qty_struct = wa_updo_werk-ekalr. " 用qs的成本估算
wa_valuationdatax-with_qty_struct = 'X'.
APPEND wa_valuationdata TO it_valuationdata.
APPEND wa_valuationdatax TO it_valuationdatax.
ENDLOOP.
"-- 零售数据传输:物料描述 --
CLEAR wa_materialdescription.
IF <fs_upd>-zce = 'C'.
wa_materialdescription-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
ELSE.
wa_materialdescription-material = <fs_upd>-vari_matnr. " 物料编号
ENDIF.
wa_materialdescription-function = '005'.
wa_materialdescription-langu = sy-langu. " 语言代码
wa_materialdescription-matl_desc = <fs_upd>-maktx. " 物料描述
APPEND wa_materialdescription TO it_materialdescription.
"---零售数据传输:基本数据的扩展 --
CLEAR:wa_addnlclientdata,wa_addnlclientdatax.
IF <fs_upd>-zce = 'C'.
wa_addnlclientdata-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
wa_addnlclientdatax-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
ELSE.
wa_addnlclientdata-material = <fs_upd>-vari_matnr. " 物料编号
wa_addnlclientdatax-material = <fs_upd>-vari_matnr. " 物料编号
ENDIF.
wa_addnlclientdata-function = '005'.
wa_addnlclientdata-pur_group = <fs_upd>-wekgr. " 采购组
wa_addnlclientdatax-pur_group = 'X'.
wa_addnlclientdata-val_class = <fs_upd>-wbkla. " 评估类
wa_addnlclientdatax-val_class = 'X'.
wa_addnlclientdata-li_proc_st = '02'.
wa_addnlclientdatax-li_proc_st = 'X'.
wa_addnlclientdata-li_proc_dc = '02'.
wa_addnlclientdatax-li_proc_dc = 'X'.
wa_addnlclientdata-assortlist = 'X'.
wa_addnlclientdatax-assortlist = 'X'.
wa_addnlclientdata-list_st_fr = sy-datum.
wa_addnlclientdatax-list_st_fr = 'X'.
wa_addnlclientdata-list_st_to = '99990101'.
wa_addnlclientdatax-list_st_to = 'X'.
wa_addnlclientdata-list_dc_fr = sy-datum.
wa_addnlclientdatax-list_dc_fr = 'X'.
wa_addnlclientdata-list_dc_to = '99990101'.
wa_addnlclientdatax-list_dc_to = 'X'.
wa_addnlclientdata-sell_st_fr = sy-datum.
wa_addnlclientdatax-sell_st_fr = 'X'.
wa_addnlclientdata-sell_st_to = '99990101'.
wa_addnlclientdatax-sell_st_to = 'X'.
wa_addnlclientdata-sell_dc_fr = sy-datum.
wa_addnlclientdatax-sell_dc_fr = 'X'.
wa_addnlclientdata-sell_dc_to = '99990101'.
wa_addnlclientdatax-sell_dc_to = 'X'.
APPEND wa_addnlclientdata TO it_addnlclientdata.
APPEND wa_addnlclientdatax TO it_addnlclientdatax.
"--- 零售数据传输:度量单位 ---
CLEAR: wa_unitsofmeasure,wa_unitsofmeasurex.
IF <fs_upd>-zce = 'C'.
wa_unitsofmeasure-material = l_vari_matnr."<fs_upd>-matnr && zv_num.
wa_unitsofmeasurex-material = l_vari_matnr."<fs_upd>-matnr && zv_num.
ELSE.
wa_unitsofmeasure-material = <fs_upd>-vari_matnr.
wa_unitsofmeasurex-material = <fs_upd>-vari_matnr.
ENDIF.
wa_unitsofmeasure-function = '005'.
wa_unitsofmeasure-alt_unit = <fs_upd>-meins. " 可选单位
wa_unitsofmeasurex-alt_unit = 'X'.
wa_unitsofmeasure-ean_cat = <fs_upd>-eantp. " 国际商品编码的类别 (EAN)
wa_unitsofmeasurex-ean_cat = 'X'.
APPEND wa_unitsofmeasure TO it_unitsofmeasure.
APPEND wa_unitsofmeasurex TO it_unitsofmeasurex.
"-- 零售数据传输:特性值分配 --
" -- 杯 --
READ TABLE <fs_upd>-cban_tab INTO wa_cabn WITH KEY class = <fs_upd>-matkl
chartyp = '2' BINARY SEARCH.
IF sy-subrc = 0.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
IF <fs_upd>-zce = 'C'.
wa_characteristicvalue-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
wa_characteristicvaluex-material = l_vari_matnr."<fs_upd>-matnr && zv_num.
ELSE.
wa_characteristicvalue-material = <fs_upd>-vari_matnr. " 物料编号
wa_characteristicvaluex-material = <fs_upd>-vari_matnr.
ENDIF.
wa_characteristicvalue-char_name = wa_cabn-atnam_zsize2. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zsize2.
wa_characteristicvalue-char_value = <fs_upd>-size2.
wa_characteristicvaluex-char_value = 'X'.
wa_characteristicvalue-char_val_char = <fs_upd>-size2.
wa_characteristicvaluex-char_val_char = 'X'.
wa_characteristicvalue-char_value_long = <fs_upd>-size2.
wa_characteristicvaluex-char_value_long = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
wa_characteristicvalue-material = <fs_upd>-matnr.
wa_characteristicvaluex-material = <fs_upd>-matnr.
wa_characteristicvalue-char_name = wa_cabn-atnam_zsize2. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zsize2.
wa_characteristicvalue-char_value = <fs_upd>-size2.
wa_characteristicvaluex-char_value = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
ENDIF.
"-- 零售数据传输:特性值分配 --
" - 色 -
READ TABLE <fs_upd>-cban_tab INTO wa_cabn WITH KEY class = <fs_upd>-matkl
chartyp = '0' BINARY SEARCH.
IF sy-subrc = 0.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
IF <fs_upd>-zce = 'C'.
wa_characteristicvalue-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
wa_characteristicvaluex-material = l_vari_matnr."<fs_upd>-matnr && zv_num.
ELSE.
wa_characteristicvalue-material = <fs_upd>-vari_matnr. " 物料编号
wa_characteristicvaluex-material = <fs_upd>-vari_matnr.
ENDIF.
wa_characteristicvalue-char_name = wa_cabn-atnam_zcolor. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zcolor.
wa_characteristicvalue-char_value = <fs_upd>-color.
wa_characteristicvaluex-char_value = 'X'.
wa_characteristicvalue-char_val_char = <fs_upd>-color.
wa_characteristicvaluex-char_val_char = 'X'.
wa_characteristicvalue-char_value_long = <fs_upd>-color.
wa_characteristicvaluex-char_value_long = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
wa_characteristicvalue-material = <fs_upd>-matnr.
wa_characteristicvaluex-material = <fs_upd>-matnr.
wa_characteristicvalue-char_name = wa_cabn-atnam_zcolor. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zcolor.
wa_characteristicvalue-char_value = <fs_upd>-color.
wa_characteristicvaluex-char_value = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
ENDIF.
"-- 零售数据传输:特性值分配 --
"- 码 -
READ TABLE <fs_upd>-cban_tab INTO wa_cabn WITH KEY class = <fs_upd>-matkl
chartyp = '1' BINARY SEARCH.
IF sy-subrc = 0.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
IF <fs_upd>-zce = 'C'.
wa_characteristicvalue-material = l_vari_matnr."<fs_upd>-matnr && zv_num. " 物料编号
wa_characteristicvaluex-material = l_vari_matnr."<fs_upd>-matnr && zv_num.
ELSE.
wa_characteristicvalue-material = <fs_upd>-vari_matnr. " 物料编号
wa_characteristicvaluex-material = <fs_upd>-vari_matnr.
ENDIF.
wa_characteristicvalue-char_name = wa_cabn-atnam_zsize1. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zsize1.
wa_characteristicvalue-char_value = <fs_upd>-size1.
wa_characteristicvaluex-char_value = 'X'.
wa_characteristicvalue-char_val_char = <fs_upd>-size1.
wa_characteristicvaluex-char_val_char = 'X'.
wa_characteristicvalue-char_value_long = <fs_upd>-size1.
wa_characteristicvaluex-char_value_long = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
CLEAR:wa_characteristicvalue,wa_characteristicvaluex.
wa_characteristicvalue-material = <fs_upd>-matnr.
wa_characteristicvaluex-material = <fs_upd>-matnr.
wa_characteristicvalue-char_name = wa_cabn-atnam_zsize1. " 特征名称
wa_characteristicvaluex-char_name = wa_cabn-atnam_zsize1.
wa_characteristicvalue-char_value = <fs_upd>-size1.
wa_characteristicvaluex-char_value = 'X'.
APPEND wa_characteristicvalue TO it_characteristicvalue.
APPEND wa_characteristicvaluex TO it_characteristicvaluex.
ENDIF.
SORT it_characteristicvalue[] BY material char_name char_value.
SORT it_characteristicvaluex[] BY material char_name.
DELETE ADJACENT DUPLICATES FROM it_characteristicvalue[] COMPARING material char_name char_value.
DELETE ADJACENT DUPLICATES FROM it_characteristicvaluex[] COMPARING material char_name.
"-- 流水号 --
IF <fs_upd>-zce = 'C' AND <fs_upd>-isf = ''.
CLEAR wa_mara_1.
wa_mara_1-znum = znum.
MODIFY it_mara_1 FROM wa_mara_1 TRANSPORTING znum WHERE satnr = wa_updo_mat-matnr.
ENDIF.
CLEAR wa_updo_fina.
IF <fs_upd>-vari_matnr = '' AND <fs_upd>-zce = 'C'.
<fs_upd>-vari_matnr = l_vari_matnr."<fs_upd>-matnr && zv_num.
ENDIF.
MOVE-CORRESPONDING <fs_upd> TO wa_updo_fina.
APPEND wa_updo_fina TO it_updo_fina.
ENDLOOP.
"-- 调用bapi --
PERFORM frm_call_bapi.
ENDLOOP.
bapi的具体赋值
CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
EXPORTING
headdata = wa_headdata
IMPORTING
return = wa_return
TABLES
variantskeys = it_variantskeys
characteristicvalue = it_characteristicvalue
characteristicvaluex = it_characteristicvaluex
clientdata = it_clientdata
clientdatax = it_clientdatax
addnlclientdata = it_addnlclientdata
addnlclientdatax = it_addnlclientdatax
materialdescription = it_materialdescription
plantdata = it_plantdata
plantdatax = it_plantdatax
valuationdata = it_valuationdata
valuationdatax = it_valuationdatax
unitsofmeasure = it_unitsofmeasure
unitsofmeasurex = it_unitsofmeasurex
plantkeys = it_plantkeys
distrchainkeys = it_distrchainkeys
salesdata = it_salesdata
salesdatax = it_salesdatax
internationalartnos = it_internationalartnos.