SAP ABAP BAPI函数50之12:BAPI_MATERIAL_SAVEDATA

今天上海的新冠疫情还是没有解封。共同祈祷明天会更好。

不知不觉中,SAP ABAP BAPI函数50系列已经写完了11个了。

今天我们来学习巩固一下SAP BAPI函数BAPI_MATERIAL_SAVEDATA,

对应的前台事务代码是MM01/MM02,进行物料主数据维护的。

需要了解之前的函数使用方法的,可以参加如下链接:

bapi_acc_document_post/
bapi_acc_document_rev_post/
vf11-bapi_billingdoc_cancel1/
bapi_goodsmvt_create/
bapi_billingdoc_createmultiple/
bapi_bus2001_create/
bapi-create-wbs/
bapi_currency_conv_to_external/
bapi_currency_conv_to_internal/
bapi_goodsmvt_cancel/

物料主数据批量创建修改隶属于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 】 或者在这个链接联系我

微信原文《全文完》

今日热点在看SAP HOT583