BAPI 创建和修改物料主数据
刚刚做了个通过BAPI去修改物料主数据,稍微记录一下。
新增的话比较简单,按照下面的抄一下就可以了,但是在修改部分view的时候稍微有点不一样,主要是在headdata中登记需要更改的view,例如(ls_headdata-basic_view,ls_headdata-sales_view),具体可以参考第二块代码:
*&---------------------------------------------------------------------*
*& Report Y_LAZHAO_TEST002
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT y_lazhao_test002.
DATA:ls_headdata TYPE bapimathead, "基本视图ls_clientdata TYPE bapi_mara,ls_clientdatax TYPE bapi_marax,ls_plantdata TYPE TABLE OF bapi_marc WITH HEADER LINE,ls_plantdatax TYPE TABLE OF bapi_marcx WITH HEADER LINE,ls_valuationdata TYPE TABLE OF bapi_mbew WITH HEADER LINE,ls_valuationdatax TYPE TABLE OF bapi_mbewx WITH HEADER LINE,ls_salesdata TYPE TABLE OF bapi_mvke WITH HEADER LINE,ls_salesdatax TYPE TABLE OF bapi_mvkex WITH HEADER LINE.
DATA:lt_taxclassifications TYPE TABLE OF bapi_mlan WITH HEADER LINE.
DATA: lt_unitsofmeasure TYPE TABLE OF bapi_marm WITH HEADER LINE,lt_unitsofmeasurex TYPE TABLE OF bapi_marmx WITH HEADER LINE.
DATA: lt_materialdescription TYPE TABLE OF bapi_makt WITH HEADER LINE .
DATA: lt_mltx TYPE TABLE OF bapi_mltx WITH HEADER LINE .
DATA: lt_internationalartnos TYPE TABLE OF bapi_mean WITH HEADER LINE .
* DATA: lt_taxclassifications TYPE TABLE OF bapi_mlan WITH HEADER LINE .
DATA:lt_zmmt_material TYPE TABLE OF zmmt_material WITH HEADER LINE.
DATA:BEGIN OF lt_text OCCURS 0 ,text TYPE c LENGTH 255,END OF lt_text .
DATA:lt_return TYPE TABLE OF bapi_matreturn2 WITH HEADER LINE.DATA:lt_tab LIKE TABLE OF zmm_material WITH HEADER LINE.
DATA: lt_tline TYPE TABLE OF tline WITH HEADER LINE .lt_tab-mbrsh = 'M'. "Industry Sector
lt_tab-tragr = '0001'. "Transportation Group
lt_tab-ladgr = '0001'. "Loading Group
lt_tab-spart = '00'. "division
lt_tab-disgr = 'Z001'. "MRP Group
lt_tab-dismm = 'PD'. "MRP Type
lt_tab-dispo = 'Z01'. "MRP Controller
lt_tab-disls = 'EX'. "Lot Sizing Procedure within Materials Planning
lt_tab-beskz = 'F'. "Procureme
lt_tab-strgr = '70'. "Planning Strategy Group
lt_tab-mtvfp = '02'. "Checking Group for Availability Check
lt_tab-sbdkz = '2'. "Dependent requirements ind. for individual and coll. reqmts
lt_tab-awsls = '000001'. "Variance Key
lt_tab-hkmat = 'X'. "Material-related origin
lt_tab-ekalr = 'X'. "Material Is Costed with Quantity StructureCLEAR:ls_headdata,ls_clientdata,ls_clientdatax.
ls_headdata-ind_sector = lt_tab-mbrsh.
ls_headdata-material = lt_tab-matnr.
ls_headdata-matl_type = lt_tab-mtart.
ls_headdata-ind_sector = 'M'.
ls_headdata-basic_view = 'X'.
ls_headdata-sales_view = 'X'.
ls_headdata-work_sched_view = 'X'.
ls_headdata-storage_view = 'X'.ls_headdata-purchase_view = 'X'.
* IF lt_tab-mtart = 'ZFY1'.
* ls_headdata-mrp_view = 'X'.
* ENDIF.
ls_headdata-account_view = 'X'.
ls_headdata-cost_view = 'X'."基本视图
ls_clientdata-matl_group = lt_tab-matkl. "物料组
ls_clientdata-extmatlgrp = lt_tab-extwg. "小类(外部物料组)
ls_clientdata-size_dim = lt_tab-groes. "大小/量纲
SELECT SINGLE msehi INTO @DATA(unit2) FROM t006a WHERE spras = 1 AND mseh3 = @lt_tab-meins.
IF sy-subrc = 0.lt_tab-meins = unit2.
ENDIF.ls_clientdata-base_uom = lt_tab-meins. "单位
ls_clientdata-old_mat_no = lt_tab-bismt. "旧物料号
ls_clientdata-dsn_office = lt_tab-labor. "实验室
ls_clientdata-document = lt_tab-dzeinr. "文档编号
ls_clientdata-trans_grp = lt_tab-tragr. "运输组
ls_clientdata-division = lt_tab-spart. "产品组ls_clientdatax-matl_group = 'X'. "物料组
ls_clientdatax-extmatlgrp = 'X'. "小类(外部物料组)
ls_clientdatax-size_dim = 'X'. "大小/量纲
ls_clientdatax-base_uom = 'X'. "单位
ls_clientdatax-old_mat_no = 'X'. "旧物料号
ls_clientdatax-dsn_office = 'X'. "实验室
ls_clientdatax-document = 'X'. "文档编号
ls_clientdatax-trans_grp = 'X'. "运输组
ls_clientdatax-division = 'X'. "产品组REFRESH: lt_unitsofmeasurex,lt_unitsofmeasure,lt_materialdescription.
"单位数据
CLEAR:lt_unitsofmeasure[], lt_unitsofmeasure .
lt_unitsofmeasure-alt_unit = lt_tab-meins.
APPEND lt_unitsofmeasure.CLEAR lt_unitsofmeasurex .
lt_unitsofmeasurex-volume = 'X'.
lt_unitsofmeasurex-volumeunit = 'X' .
lt_unitsofmeasurex-alt_unit = 'X' .
lt_unitsofmeasurex-denominatr = 'X' .
lt_unitsofmeasurex-numerator = 'X' .
APPEND lt_unitsofmeasurex ."物料描述
CLEAR:lt_materialdescription[], lt_materialdescription .
lt_materialdescription-langu_iso = 'ZH'.
lt_materialdescription-matl_desc = lt_tab-maktx .
APPEND lt_materialdescription ."物料长描述
CLEAR:lt_mltx[], lt_mltx .
lt_mltx-applobject = 'MATERIAL'.
lt_mltx-text_name = lt_tab-matnr.
lt_mltx-text_id = 'GRUN'.
lt_mltx-langu = '1'.REFRESH:lt_text,lt_tline.
DATA:lv1 TYPE string.
lt_tab-desc_zh = 'test'.
lv1 = lt_tab-desc_zh.
CALL FUNCTION 'CONVERT_STRING_TO_TAB'EXPORTINGi_string = lv1i_tabline_length = '255'TABLESet_table = lt_text.CALL FUNCTION 'CONVERT_STREAM_TO_ITF_TEXT'TABLEStext_stream = lt_textitf_text = lt_tline.IF lt_tline[] IS NOT INITIAL .LOOP AT lt_tline.IF sy-tabix = 1.lt_mltx-format_col = lt_tline-tdformat.ELSE.CLEAR lt_mltx-format_col.ENDIF.lt_mltx-text_line = lt_tline-tdline.CALL FUNCTION 'SJIS_DBC_TO_SBC'EXPORTINGall = 'X'CHANGINGtext = lt_mltx-text_lineEXCEPTIONSoverflow = 1OTHERS = 2.APPEND lt_mltx.ENDLOOP .
ENDIF.* lt_t001w-werks = lt_tab-dwerk.
CLEAR:ls_plantdata,ls_plantdatax,ls_valuationdata,ls_valuationdatax,ls_salesdata,ls_salesdatax.
REFRESH lt_taxclassifications[].CASE lt_tab-mtart. "material typeWHEN 'ZFY1'."当中类=30时,扩展交货工厂里填写的工厂的基本视图、采购视图、MRP视图、财务视图、成本视图、销售视图、工厂库存视图,"字段按照传入的字段值,其他工厂扩展时需将特殊采购类置为空、价格确定=2、价格控制=V、评估类=Z040,其他字段按照传入的值进行扩展ls_headdata-mrp_view = 'X'.ls_plantdata-plant = lt_tab-dwerk. "rfc中只扩展交货工厂WHEN 'ZFY2'.ls_headdata-mrp_view = ' '.
* 3)当OA传入的字段备案的软件=1时,只在交货工厂里填写的工厂里将科目设置组=01,其他所有公司为02,(如备案软件=1,交货工厂=1001,则扩1001工厂的科目设置组为01,
* 其他工厂都为02)当OA传入的备案的软件为空时,所有公司科目设置组=02ls_plantdata-plant = lt_tab-dwerk. "rfc中只扩展交货工厂IF lt_tab-dzeinr = '1'.lt_tab-ktgrm = '01'.ELSE.lt_tab-ktgrm = '02'.ENDIF.WHEN 'ZFY3'.ls_headdata-mrp_view = ' '.ls_plantdata-plant = lt_tab-dwerk. "rfc中只扩展交货工厂WHEN OTHERS.
ENDCASE.* ls_plantdata-plant = lt_t001w-werks.
ls_plantdata-mrp_group = lt_tab-disgr. "MRP组
ls_plantdata-mrp_type = lt_tab-dismm. "MRP类型
ls_plantdata-mrp_ctrler = lt_tab-dispo. "MRP控制者
ls_plantdata-lotsizekey = lt_tab-disls. "计划内批量程序
ls_plantdata-round_val = lt_tab-bstrf. "采购订单数量的舍入值
ls_plantdata-proc_type = lt_tab-beskz. "采购类型
ls_plantdata-spproctype = lt_tab-sobsl. "特殊采购类型
ls_plantdata-plnd_delry = lt_tab-plifz. "计划交货时间(天)
* ls_plantdata-safety_stk = lt_tab-eisbe. "安全库存
ls_plantdata-plan_strgp = lt_tab-strgr. "计划策略组
ls_plantdata-availcheck = lt_tab-mtvfp. "可用性检查的检查组
ls_plantdata-dep_req_id = lt_tab-sbdkz. "对于独立和集中需求的相关需求标识
ls_plantdata-variance_key = lt_tab-awsls. "差异码
ls_plantdata-lot_size = lt_tab-losgr. "批量产品成本核算
ls_plantdata-profit_ctr = lt_tab-prctr. "利润中心
ls_plantdata-loadinggrp = lt_tab-ladgr. "装载组
ls_plantdata-pur_group = lt_tab-ekgrp.ls_plantdatax-plant = ls_plantdata-plant.
ls_plantdatax-mrp_group = 'X'. "MRP组
ls_plantdatax-mrp_type = 'X'. "MRP类型
ls_plantdatax-mrp_ctrler = 'X'. "MRP控制者
ls_plantdatax-lotsizekey = 'X'. "计划内批量程序
ls_plantdatax-round_val = 'X'. "采购订单数量的舍入值
ls_plantdatax-proc_type = 'X'. "采购类型
ls_plantdatax-spproctype = 'X'. "特殊采购类型
ls_plantdatax-plnd_delry = 'X'. "计划交货时间(天)
* ls_plantdatax-safety_stk = 'X'. "安全库存
ls_plantdatax-plan_strgp = 'X'. "计划策略组
ls_plantdatax-availcheck = 'X'. "可用性检查的检查组
ls_plantdatax-dep_req_id = 'X'. "对于独立和集中需求的相关需求标识
ls_plantdatax-variance_key = 'X'. "差异码
ls_plantdatax-lot_size = 'X'. "批量产品成本核算
ls_plantdatax-profit_ctr = 'X'. "利润中心
ls_plantdatax-loadinggrp = 'X'. "装载组
ls_plantdatax-pur_group = 'X'."会计视图
ls_valuationdata-val_area = ls_plantdata-plant .
ls_valuationdata-ml_settle = lt_tab-mlast. "价格确定
ls_valuationdata-val_class = lt_tab-bklas. "评估类
* ls_valuationdata-std_price = lt_tab-stprs. "标准价格
ls_valuationdata-price_ctrl = lt_tab-vprsv. "移动价格
ls_valuationdata-price_unit = lt_tab-peinh. "价格单位
ls_valuationdata-qty_struct = lt_tab-ekalr. "用QS的成本估算
ls_valuationdata-orig_mat = lt_tab-hkmat. "物料相关的源ls_valuationdatax-val_area = ls_plantdata-plant .
ls_valuationdatax-ml_settle = 'X' . "价格确定
ls_valuationdatax-val_class = 'X' . "评估类
* ls_valuationdatax-std_price = 'X' . "标准价格
ls_valuationdatax-price_ctrl = 'X' . "移动价格
ls_valuationdatax-price_unit = 'X' . "价格单位
ls_valuationdatax-qty_struct = 'X' . "用QS的成本估算
ls_valuationdatax-orig_mat = 'X' . "物料相关的源"销售视图
ls_salesdata-sales_org = ls_plantdata-plant.
ls_salesdata-distr_chan = '00'.
ls_salesdata-item_cat = lt_tab-mtpos. "项目类别组ls_salesdata-acct_assgt = lt_tab-ktgrm. "科目设置组
ls_salesdata-delyg_plnt = ls_plantdata-plant. "交货工厂ls_salesdatax-sales_org = ls_plantdata-plant.
ls_salesdatax-distr_chan = '00'.
ls_salesdatax-item_cat = 'X'. "项目类别组
ls_salesdatax-acct_assgt = 'X'. "科目设置组
ls_salesdatax-delyg_plnt = 'X'. "交货工厂"税分类
lt_taxclassifications-depcountry = 'CN'.
lt_taxclassifications-tax_type_1 = 'MWST'.
lt_taxclassifications-taxclass_1 = lt_tab-taxm1.
APPEND lt_taxclassifications.
CLEAR lt_taxclassifications.CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'EXPORTINGheaddata = ls_headdataclientdata = ls_clientdataclientdatax = ls_clientdataxplantdata = ls_plantdataplantdatax = ls_plantdataxvaluationdata = ls_valuationdatavaluationdatax = ls_valuationdataxsalesdata = ls_salesdatasalesdatax = ls_salesdataxTABLEStaxclassifications = lt_taxclassificationsmaterialdescription = lt_materialdescription[]unitsofmeasure = lt_unitsofmeasure[]unitsofmeasurex = lt_unitsofmeasurex[]materiallongtext = lt_mltx[]returnmessages = lt_return[].READ TABLE lt_return WITH KEY type = 'E'.
IF sy-subrc = 0.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.READ TABLE lt_return WITH KEY type = 'A'.IF sy-subrc = 0.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.
ENDIF.
ls_headdata-material = lt_tab-matnr.ls_headdata-basic_view = 'X'.ls_headdata-sales_view = 'X'.ls_headdata-purchase_view = 'X'."基本视图ls_clientdata-size_dim = lt_tab-groes. "大小/量纲ls_clientdata-dsn_office = lt_tab-labor. "实验室ls_clientdata-document = lt_tab-dzeinr. "文档编号ls_clientdata-division = '00'. "产品组"物料描述CLEAR:lt_materialdescription[], lt_materialdescription .lt_materialdescription-langu_iso = 'ZH'.lt_materialdescription-matl_desc = lt_tab-maktx .APPEND lt_materialdescription .ls_clientdatax-size_dim = 'X'. "大小/量纲ls_clientdatax-document = 'X'. "文档编号ls_clientdatax-dsn_office = 'X'. "实验室ls_clientdatax-division = 'X'. "产品组"税分类lt_taxclassifications-depcountry = 'CN'.lt_taxclassifications-tax_type_1 = 'MWST'.lt_taxclassifications-taxclass_1 = lt_tab-taxm1.APPEND lt_taxclassifications.CLEAR lt_taxclassifications."销售视图ls_salesdata-item_cat = lt_tab-mtpos. "项目类别组IF ls_mara-mtart = 'ZFY2'.IF lt_tab-dzeinr = '1'.lt_tab-ktgrm = '01'.ELSE.lt_tab-ktgrm = '02'.ENDIF.ENDIF.ls_salesdata-acct_assgt = lt_tab-ktgrm. "科目设置组ls_salesdata-distr_chan = '00'.ls_salesdatax-item_cat = 'X'. "项目类别组ls_salesdatax-acct_assgt = 'X'. "科目设置组ls_salesdatax-distr_chan = '00'."Plant viewls_plantdata-plnd_delry = lt_tab-plifz. "计划交货时间(天)ls_plantdata-round_val = lt_tab-bstrf. "采购订单数量的舍入值ls_plantdata-pur_group = lt_tab-ekgrp.ls_plantdata-spproctype = lt_tab-sobsl. "特殊采购类型ls_plantdata-profit_ctr = lt_tab-prctr. "利润中心ls_plantdatax-plnd_delry = 'X'. "计划交货时间(天)ls_plantdatax-round_val = 'X'. "采购订单数量的舍入值ls_plantdatax-spproctype = 'X'. "特殊采购类型ls_plantdatax-profit_ctr = 'X'. "利润中心ls_plantdatax-pur_group = 'X'.ls_plantdata-plant = lt_t001w-werks.ls_salesdata-sales_org = lt_t001w-werks.ls_salesdatax-sales_org = lt_t001w-werks.ls_plantdatax-plant = lt_t001w-werks.CLEAR:lt_return[],lt_return,return.CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'EXPORTINGheaddata = ls_headdataclientdata = ls_clientdataclientdatax = ls_clientdataxplantdata = ls_plantdataplantdatax = ls_plantdataxsalesdata = ls_salesdatasalesdatax = ls_salesdataxTABLEStaxclassifications = lt_taxclassificationsmaterialdescription = lt_materialdescription[]returnmessages = lt_return[].
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
