今天上海的新冠疫情还是没有解封。共同祈祷明天会更好。
不知不觉中,SAP ABAP BAPI函数50系列已经写完了11个了。
今天我们来学习巩固一下SAP BAPI函数BAPI_MATERIAL_SAVEDATA,
对应的前台事务代码是MM01/MM02,进行物料主数据维护的。
需要了解之前的函数使用方法的,可以参加如下链接:
物料主数据批量创建修改隶属于MM模块。
HEADDATA常用字段
字段名 | 类型 | 简短描述 |
MATERIAL | MATNR18 | 物料编号(18个字符) |
IND_SECTOR | MBRSH | 行业领域 |
MATL_TYPE | MTART | 物料类型 |
BASIC_VIEW | SICHT_K | 基本数据视图 |
SALES_VIEW | SICHT_V | 销售视图 |
MATERIAL_LONG | MATNR40 | 物料编号 |
CLIENTDATA常用字段:CLIENTDATAX与之对应,但类型可能不同,下列字段没有列出的,具体根据需求,去bapi参数对应的关联类型结构中查找
字段名 | 类型 | 简短描述 |
DEL_FLAG | LVOMA | 在客户级标记要删除的物料 |
MATL_GROUP | MATKL | 物料组 |
BASE_UOM | MEINS | 基本计量单位 |
BASE_UOM_ISO | MEINS_ISO | ISO 代码的计量基本单位 |
DOCUMENT | DZEINR | 凭证 |
NET_WEIGHT | NTGEW | 净重 |
UNIT_OF_WT | GEWEI | 重量单位 |
DIVISION | SPART | 产品组 |
EXTMATLGRP | EXTWG | 外部物料组 |
VALUATIONDATA常用字段:VALUATIONDATAX与之对应,但类型可能不同,下列字段没有列出的,具体根据需求,去bapi参数对应的关联类型结构中查找
字段名 | 类型 | 简短描述 |
VAL_AREA | BWKEY | 估价范围 |
STD_PRICE | STPRS_BAPI | 标准价格 |
PRICE_UNIT | PEINH | 价格单位 |
PLNDPRICE1 | DZPLP1_BAPI | 未来计划价格1 |
PLNDPRDATE1 | DZPLD1 | 未来计划价格 1 的生效日期 |
PLANNINGDATA常用字段:PLANNINGDATAX与之对应,但类型可能不同,下列字段没有列出的,具体根据需求,去bapi参数对应的关联类型结构中查找
字段名 | 类型 | 简短描述 |
PLANT | WERKS_D | 工厂 |
大概参数如上,我们现在来举个例子。
对于初级SAP ABAP顾问来说,是不容易的。
作者HOT583.com曾经也是SAP ABAP beginners ,到处去找Tutorial for Constant。
需要自学很久,没人给咱免费培训。
写个测试代码DEMO举例子。下面是代码。
*声明bapi相关的全局变量
DATA:gs_headdata TYPE bapimathead, “表头
gs_clientdata TYPE bapi_mara, “物料数据信息
gs_clientdatax TYPE bapi_marax, “物料数据信息
gs_plantdata TYPE bapi_marc, “工厂级别的物料数
gs_plantdatax TYPE bapi_marcx, “工厂级别的物料数据
gs_return TYPE bapiret2, “返回参数信息
gt_materialdescription TYPE TABLE OF bapi_makt, “物料描述内表
gs_materialdescription TYPE bapi_makt. “物料描述工作区
*选择屏幕
PARAMETERS:p_matnr TYPE matnr18,
p_werks TYPE werks_d.
*抓取处理数据
START-OF-SELECTION.
*赋值
*给表头数据赋值
gs_headdata-material = p_matnr. “物料编号
gs_headdata-ind_sector = ‘M’. “行业领域
gs_headdata-matl_type = ‘ROH’. “物料类型
gs_headdata-basic_view = ‘X’. “基本数据视图
gs_headdata-storage_view = ‘X’. “存储视图
*物料数据赋值
gs_clientdata-base_uom = ‘EA’. “基本计量单位
gs_clientdata-matl_group = ‘L004’. “物料组
gs_clientdatax-base_uom = ‘X’.
gs_clientdatax-matl_group = ‘X’.
*工厂数据赋值
gs_plantdata-plant = p_werks.
gs_plantdatax-plant = p_werks.
*物料描述赋值
gs_materialdescription-langu = ‘ZH’.
gs_materialdescription-matl_desc = ‘TEST BAPI_MATERIAL_SAVEDATA’.
APPEND gs_materialdescription TO gt_materialdescription.
*调用bapi
PERFORM FRM_USEBAPI.
*——————————————————————————–*
* Form frm_setdata *
*———————————————————————————*
* 调用bapi
* 表:物料描述
* 导入:表头数据,物料数据,工厂数据
* 正在修改:返回参数信息
*———————————————————————————*
FORM frm_usebapi.
*声明bapi相关的局部变量
DATA:ls_headdata TYPE bapimathead, “表头
ls_clientdata TYPE bapi_mara, “物料数据信息
ls_clientdatax TYPE bapi_marax, “物料数据信息
ls_plantdata TYPE bapi_marc, “工厂级别的物料数
ls_plantdatax TYPE bapi_marcx, “工厂级别的物料数据
ls_return TYPE bapiret2, “返回参数信息
lt_materialdescription TYPE TABLE OF bapi_makt. “物料描述内表
*将全局变量的值赋给局部变量
clear ls_headdata.
clear ls_clientdata.
clear ls_clientdatax.
clear ls_plantdata.
clear ls_plantdatax.
clear lt_materialdescription.
ls_headdata = gs_headdata.
ls_clientdata = gs_clientdata.
ls_clientdatax = gs_clientdatax.
ls_plantdata = gs_plantdata.
ls_plantdatax = gs_plantdatax.
lt_materialdescription = gt_materialdescription.
*调用bapi
CALL FUNCTION ‘BAPI_MATERIAL_SAVEDATA’
EXPORTING
headdata = ls_headdata
clientdata = ls_clientdata
clientdatax = ls_clientdatax
plantdata = ls_plantdata
plantdatax = ls_plantdatax
IMPORTING
return = ls_return
TABLES
materialdescription = lt_materialdescription.
IF ls_return IS NOT INITIAL.
IF ls_return-type <> ‘S’ .
MESSAGE ls_return-message TYPE ‘S’ DISPLAY LIKE ‘E’.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
ELSE.
MESSAGE ls_return-message TYPE ‘S’.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
ENDIF.
ENDIF.
ENDFORM.
举一反三的你,学会了么?
BAPI函数其实在于经验积累。SAP各个BAPI都不是同一个团队或者同一个时期的人编写的代码。
所以理解起来不能一通全通,但是只要你做个这个BAPI并且做好了笔记,下次遇到他,那就是so easy的事情了~
本文链接 : http://www.hot583.com/2022/04/02/bapi_mat_bom_existence_check/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
我的微信公众号【 hot583 】 或者在这个链接联系我
微信原文《全文完》