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[].

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部