report  ytest_savemat.
data: headdata                type bapimathead,     "表头数据
      clientdata              type bapi_mara,       "基本数据
      clientdatax             type bapi_marax.
data: materialdescription type table of bapi_makt with header line."描述
data: unitsofmeasure type table of bapi_marm with header line."
data: unitsofmeasurex type table of bapi_marmx with header line."
  data pr_unit type meins."基本单位
  data pr_unit2 type meins."重量单位
  data return type bapiret2.
data: begin of msg occurs 0,
material type matnr,
description type maktx,
message(97) type c,
end of msg.
data:begin of itab occurs 0,
  head_material type matnr,"物料号
  head_ind_sector type mbrsh,"行业领域
  head_matl_type type mtart,"物料类型
  t_makt_matl_desc type maktx,"物料描述
  mara_base_uom type meins,"基本计量单位
  mara_matl_group type matkl,"物料组
  t_old_mat_no type bismt,"型号
  mara_division type spart,"产品组
  t_dsn_office type labor,"实验室/办公室
  mara_item_cat type mtpos_mara,"普通项目组类别
  t_marm_gross_wt type brgew,"毛重
  mara_unit_of_wt type gewei,"重量单位
  mara_net_weight type ntgew,"净重
  mara_size_dim type groes,"大小/量纲
end of itab.
data itab1 type itab occurs 0 with header line.
perform putdata.
perform run.
form run.
loop at itab.
  clear headdata.
  headdata-material       = itab-head_material.
  headdata-matl_type      = itab-head_matl_type.
  headdata-ind_sector     = itab-head_ind_sector.
  headdata-basic_view     = 'X'.  "基本数据视图
  clear pr_unit.
  clear pr_unit2.
  perform frm_unit using itab-mara_base_uom changing pr_unit."基本单位
  perform frm_unit using itab-mara_unit_of_wt changing pr_unit2."重量单位
  clear clientdata.
  clientdata-base_uom = pr_unit."基本计量单位
  clientdata-matl_group = itab-mara_matl_group."物料组
  clientdata-old_mat_no = itab-t_old_mat_no."型号
  clientdata-division = itab-mara_division."产品组
  clientdata-dsn_office = itab-t_dsn_office."实验室/办公室
  clientdata-item_cat = itab-mara_item_cat."普通项目组类别
  clientdata-unit_of_wt = pr_unit2."重量单位
  clientdata-net_weight = itab-mara_net_weight."净重
  clientdata-size_dim = itab-mara_size_dim."大小/量纲
  "bapi_mara 的复选框结构
  clear clientdatax.
  clientdatax-base_uom = 'X'."基本计量单位
  clientdatax-matl_group = 'X'."物料组
  clientdatax-old_mat_no = 'X'."型号
  clientdatax-division = 'X'."产品组
  clientdatax-dsn_office = 'X'."实验室/办公室
  clientdatax-item_cat = 'X'."普通项目组类别
  clientdatax-unit_of_wt = 'X'."重量单位
  clientdatax-net_weight = 'X'."净重
  clientdatax-size_dim = 'X'."大小/量纲
  "计量单位
  unitsofmeasure-alt_unit = pr_unit.    "替换单位(必须为基本计量单位,否则会报错,说没有转换因子什么的)
  unitsofmeasure-numerator = 1.    "分子
  unitsofmeasure-denominatr = 1.    "分母
  unitsofmeasure-gross_wt = itab-t_marm_gross_wt."毛重
  unitsofmeasure-unit_of_wt = pr_unit2."需要填充毛重的话,注意此处需要添加重量单位,否则会一直提示你没有指定单位
  append unitsofmeasure.
  clear unitsofmeasure.
  unitsofmeasurex-alt_unit = pr_unit."注意此处不是填充'X'
  unitsofmeasurex-numerator = 'X'.
  unitsofmeasurex-denominatr = 'X'.
  unitsofmeasurex-gross_wt = 'X'.
  unitsofmeasurex-unit_of_wt = 'X'."此处填充'X'
  if unitsofmeasurex-alt_unit is not initial and unitsofmeasurex-numerator is not initial and unitsofmeasurex-denominatr is not initial.
    append unitsofmeasurex.
  endif.
  clear unitsofmeasurex.
  "物料描述
  clear materialdescription[].
  materialdescription-langu_iso = 'ZH'.
  materialdescription-matl_desc = itab-t_makt_matl_desc.
  append materialdescription.
  clear return.
    call function 'BAPI_MATERIAL_SAVEDATA'
      exporting
        headdata            = headdata
        clientdata          = clientdata
        clientdatax         = clientdatax
      importing
        return              = return
      tables
        materialdescription = materialdescription[]
        unitsofmeasure = unitsofmeasure[]
        unitsofmeasurex = unitsofmeasurex[].
    if return-type ne 'E'.
      call function 'BAPI_TRANSACTION_COMMIT'
      exporting
        wait          = 'X' .
    else.
      call function 'bapi_transaction_rollback'.
    endif.
endloop.
write : return-type,return-message.
endform.
form putdata.
  itab-head_material = '10101010105'.
  itab-head_ind_sector = 'M'.
  itab-head_matl_type = 'zroh'.
  itab-mara_base_uom = '个'."基本计量单位
  itab-mara_matl_group = '10235'."物料组
  itab-t_old_mat_no = 'testbapi05'."型号
  itab-mara_division = '00'."产品组
  itab-t_dsn_office = '001'."实验室/办公室
  itab-mara_item_cat = 'NORM'."普通项目组类别
  itab-mara_net_weight = 2."净重
*  itab-mara_normt = ''."行业标准描述
  itab-mara_size_dim = '2*3'."大小/量纲
  itab-t_marm_gross_wt = 22 / 10."毛重
  itab-mara_unit_of_wt = 'KG'."重量单位
  itab-t_makt_matl_desc = 'test mat 0005'.
    call function 'CONVERSION_EXIT_ALPHA_INPUT'"
      exporting
        input  = itab-head_material
      importing
        output = itab-head_material.
  append itab.
endform.
*获取基本计量单位内码
form frm_unit using unit1 changing unit2.
  call function 'CONVERSION_EXIT_CUNIT_INPUT'
    exporting      input          = unit1
                   language       = sy-langu
    importing      output         = unit2
    exceptions      unit_not_found = 1
    others         = 2.
  if sy-subrc <> 0.
*   message id sy-msgid type sy-msgty number sy-msgno
*           with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
endform.                    "frm_unit

调用BAPI_MATERIAL_SAVEDATA批量创建/修改物料相关推荐

  1. bapi sap 创建物料_创建/修改物料主数据的BAPI

    DATA: pr_unit TYPE meins,"基本计量单位 bapi_exe_result(1) TYPE c."bapi执行结果标识 *原材料 DATA: BEGIN OF ...

  2. ElasticSearch.net NEST批量创建修改删除索引完整示例

    本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...

  3. django bulk_update_or_create 批量创建更新

    文章目录 前言 一.代码实现 二.使用 前言 当前django并没有提供能够批量创建或更新的方法,只有bulk_update 和bulk_create以及create_or_update,在实际业务中 ...

  4. Shell脚本实战之文件批量创建和修改

    Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...

  5. python 批量创建变量_Python批量生成和调用变量

    这几天写代码中遇到的一个常见问题,在Python 中如何批量的生成一些变量,如生成变量X1, X2, X3 ,并在后续的方法中调用,完成赋值.取值等操作.这个问题也算是常见的吧,之前遇到过,也不了了之 ...

  6. Linux中批量创建空白文件,在Linux中批量创建和修改文件或目录

    1. 用一条命令直接创建 [fred@Royalmile Auto_Ops]$ touch `seq 10` [fred@Royalmile Auto_Ops]$ ls 1  10  2  3  4  ...

  7. 域服务器批量修改用户密码,Windows域控制器批量创建用户

    Windows域控制器批量创建用户 猫先生 • 2019 年 06 月 05 日 之前做过VDI的项目,一百多个桌面,需要一百多个用户,我刚开始手动创建了5个,觉得这不是IT人干的事,要高效.网上找了 ...

  8. 使用CSVDE批量创建和修改域用户

    使用CSVDE批量创建和修改域用户 如果需要创建大量的域用户帐户,使用CSVDE批量导入是不错的选择,由于用户信息文件中不能包括用户的密码,而域的安全策略要求用户密码必须满足长度要求和复杂性要求,因此 ...

  9. SAP批量修改物料标准成本

    SAP批量修改物料标准成本 2018年11月16日 15:18:17 有点想鲁下 阅读数 186 分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jian ...

最新文章

  1. 项目部署mysql安装_Tomcat7+jdk+mysql安装及项目部署
  2. 微信jssdk ajax 获取签名,【Golang版】微信access_token、jsapi_ticket、signature签名算法生成示例,开箱即用...
  3. MOV及MP4文件格式中几个重要的Table
  4. Angular 应用 bootstrapModule 映射的 app Component 的初始化逻辑
  5. Scala与Java差异(三)之函数
  6. 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
  7. 什么是 WebAssembly?
  8. HTML中可以有多个meta吗,HTML5中meta标签有三个主要属性是什么
  9. c语言编辑工具下载,Turbo C-Turbo C2.0-Turbo C下载 v2.0.0.0官方正式版-完美下载
  10. 如何解决MySQL闪退
  11. ThinkPad L13笔记本怎么U盘重装系统教学
  12. linux网络本地发送lo性能,LINUX网络性能之管理工具三剑客
  13. 90后首次购房心路历程
  14. oracle数据库报错1033,ORACLE出现错误1033和错误ORA-00600的解决方法
  15. python手机自动回复_用python itchat写一个微信机器人自动回复
  16. onehot编码的意义
  17. CAN通讯车用触摸显示器
  18. 9.8(Fan类)设计一个名为Fan的类来表示风扇。这个类包含:
  19. 数字孪生十问:分析与思考
  20. UCLA计算机录取案例,UCLA的Computer Science「加州大学洛杉矶分校计算机科学系」

热门文章

  1. golang 开源代理
  2. 阿里云移动端播放器高级功能---截图和音频波形
  3. Android 五大存储方式具体解释
  4. linux下fdisk分区工具的使用
  5. python爬虫实例(urllibBeautifulSoup)
  6. 黑马程序员_网络编程总结
  7. 黄聪:PHP网站流量统计开源程序大全
  8. WMS中添加默认发布点
  9. 图像识别DM8127开发攻略——开发环境搭建
  10. XcodeGhost风波过后,苹果如何防范风险?