目录
注意点2:SE37测试过程中物料描述不在入参中输入,需要在BAPI表中输入
注意点3:SE37测试过程中BAPI_MATERIAL_SAVEDATA可以直接创建物料主数据,不需要另外commit BAPI确定
入参1:headdata = ls_headdata(各个模块视图)
入参2:clientdata = ls_clientdata(基本数据视图-后台表MARA)
入参3:plantdata = ls_plantdata(工厂级别的物料数据-后台表MARC)
入参4:forecastparameters = ls_forecastparameters(预测视图-后台表MPOP)
入参5:planningdata = ls_planningdata(预测视图-后台表MPGD)
入参6:storagelocationdata = ls_storagelocationdata(工厂库存地点视图-后台表MARD)
入参7:valuationdata = ls_valuationdata(财务视图-后台表MBEW)
入参8:warehousenumberdata = ls_warehousenumberdata(仓库号视图-后台表MLGN)
入参9:salesdata = ls_salesdata(销售视图-后台表MVKE)
入参10:storagetypedata = ls_storagetypedata(存储类型视图-后台表MLGT)
表入参1:BAPI_MAKT-MATERIALDESCRIPTION 物料描述
表入参2:BAPI_MLAN-TAXCLASSIFICATIONS 物料税分类
入参1:headdata = ls_headdata(各个模块视图)
入参2:clientdata = ls_clientdata(基本数据视图-后台表MARA)
入参3:plantdata = ls_plantdata(工厂级别的物料数据-后台表MARC)
入参4:forecastparameters = ls_forecastparameters(预测视图-后台表MPOP)
入参5:planningdata = ls_planningdata(预测视图-后台表MPGD)
入参6:storagelocationdata = ls_storagelocationdata(工厂库存地点视图-后台表MARD) 编辑
入参7:valuationdata = ls_valuationdata(财务视图-后台表MBEW)
入参8:warehousenumberdata = ls_warehousenumberdata(仓库号视图-后台表MLGN)
入参9:salesdata = ls_salesdata(销售视图-后台表MVKE)
入参10:storagetypedata = ls_storagetypedata(存储类型视图-后台表MLGT)
报错1:E MG 144 字段MARC-MTVFP/BAPI_MARC-AVAILCHECK被定义为必需的字段; 它不包含条目
业务说明
在实战项目上,存在外部接口业务或批导或功能程序时,需要在开发程序中调用SAP标准业务应用程序接口,就是经常听到的BAPI。SAP给常用的业务都预定义了BAPI,所以有需要的时候,就要找到对应的BAPI。需要对BAPI的结构和字段非常熟悉,否则不能正确的使用BAPI,从而导致各种报错。为了降低测试过程中的报错,需要在写程序前,将需要调用的BAPI使用事务码SE37进行相关测试,以掌握具体的入参和出参等详细数据。
1 BAPI注意事项
注意点1:SE37测试过程中物料号必须外部给号
物料主数据创建和修改BAPI: BAPI_MATERIAL_SAVEDATA在SE37中测试的时候,必须外部给号,及时物料类型对应的编码范围设置了内部给号,如果不知道号码多了哪个的情况下,可以使用BAPI:BAPI_MATERIAL_GETINTNUMBER 获得最后一个物料编号。
注意点2:SE37测试过程中物料描述不在入参中输入,需要在BAPI表中输入
注意点3:SE37测试过程中BAPI_MATERIAL_SAVEDATA可以直接创建物料主数据,不需要另外commit BAPI确定
CommitBAPI: BAPI_TRANSACTION_COMMIT
2 BAPI基础数据
事务码:SE37
BAPI:BAPI_MATERIAL_SAVEDATA
BAPI描述:Create and Change Material Master Data
前台业务事务码:MM01
业务描述:创建物料主数据
参照物料:物料6630000062被创建
3 BAPI数据结构
EXPORTING:程序将值传给函数模块的导入参数(入参)。
IMPORTING:实际参数会分配给函数模块的导出参数(出参)。
TABLE:函数模块中传递和处理多个记录的数据。
EXCEPTIONS:函数中定义的异常自动分配不同数值(异常)。
事务码SE37进入,
1处,输入 BAPI:BAPI_MATERIAL_SAVEDATA
2处,点击 显示 按钮 进入
3处,显示 BAPI 入参数据结构
4处,显示 BAPI出参数据结构
5处,显示BAPI表结构
6处,显示BAPI源代码
4 BAPI函数调用
BAPI:BAPI_MATERIAL_SAVEDATA
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata =
* CLIENTDATA =
* CLIENTDATAX =
* PLANTDATA =
* PLANTDATAX =
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* STORAGELOCATIONDATA =
* STORAGELOCATIONDATAX =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
* NO_ROLLBACK_WORK = ' '
* CLIENTDATACWM =
* CLIENTDATACWMX =
* VALUATIONDATACWM =
* VALUATIONDATACWMX =
* IMPORTING
* RETURN =
* TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
* RETURNMESSAGES =
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
* UNITSOFMEASURECWM =
* UNITSOFMEASURECWMX =
* SEGMRPGENERALDATA =
* SEGMRPGENERALDATAX =
* SEGMRPQUANTITYDATA =
* SEGMRPQUANTITYDATAX =
* SEGVALUATIONTYPE =
* SEGVALUATIONTYPEX =
* SEGSALESSTATUS =
* SEGSALESSTATUSX =
* SEGWEIGHTVOLUME =
* SEGWEIGHTVOLUMEX =
* NFMCHARGEWEIGHTS =
* NFMCHARGEWEIGHTSX =
* NFMSTRUCTURALWEIGHTS =
* NFMSTRUCTURALWEIGHTSX =
.
如何调用BAPI?详见:SAP ABAP自学教程-如何在SE38编程界面调用函数模块?Call Function SE38界面点击“模式“按钮进行调用-优快云博客
上面调用的BAPI标准结构中带有很多参数,哪些参数是必要的,如果需要就去掉前面的注释*进行启用。
5 BAPI必要数据
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING:入参
入参1:headdata = ls_headdata "BAPI结构-BAPIMATHEAD-带有控制信息的表头段
入参2:clientdata = ls_clientdata "BAPI结构-BAPI_MARA-客户端层次物料数据
入参2:clientdatax = ls_clientdatax "BAPI结构-BAPI_MARAX-BAPI_MARA 的复选框结构
入参3:plantdata = ls_plantdata "BAPI结构-BAPI_MARC-工厂级别的物料数据
入参3:plantdatax = ls_plantdatax "BAPI结构-BAPI_MARCX-BAPI_MARC 的复选框结构
入参4:forecastparameters = ls_forecastparameters "BAPI结构-BAPI_MPOP-预测参数
入参4:forecastparametersx = ls_forecastparametersx "BAPI结构-BAPI_MPOPX-BAPI_MPOP 复选框结构
入参5:planningdata = ls_planningdata "BAPI结构-BAPI_MPGD-更改物料主记录/产品组的凭证结构
入参5:planningdatax = ls_planningdatax "BAPI结构-BAPI_MPGDX-BAPI_MPGD 复选框结构
入参6:storagelocationdata = ls_storagelocationdata "BAPI结构-BAPI_MARD-存储位置级别的物料数据
入参6:storagelocationdatax = ls_storagelocationdatax "BAPI结构-BAPI_MARDX-BAPI_MARD 的复选框结构
入参7:valuationdata = ls_valuationdata "BAPI结构-BAPI_MBEW-评估数据
入参7:valuationdatax = ls_valuationdatax "BAPI结构-BAPI_MBEWX-BAPI_MBEW 的复选框结构
入参8:warehousenumberdata = ls_warehousenumberdata "BAPI结构-BAPI_MLGN-仓库号数据
入参8:warehousenumberdatax = ls_warehousenumberdatax "BAPI结构-BAPI_MLGNX-BAPI_MLGN 的复选框结构
入参9:salesdata = ls_salesdata "BAPI结构-BAPI_MVKE-销售数据
入参9:salesdatax = ls_salesdatax "BAPI结构-BAPI_MVKEX-BAPI_MVKE 复选框结构
入参10:storagetypedata = ls_storagetypedata "BAPI结构-BAPI_MLGT-存储类型数据
入参10:storagetypedatax = ls_storagetypedatax "BAPI结构-BAPI_MLGTX-BAPI_MLGT 的复选框结构
注意:红色标记为对应业务的后台表
EXPORTING
headdata = ls_headdata "BAPI结构-BAPIMATHEAD-带有控制信息的表头段
clientdata = ls_clientdata "BAPI结构-BAPI_MARA-客户端层次物料数据
clientdatax = ls_clientdatax "BAPI结构-BAPI_MARAX-BAPI_MARA 的复选框结构
plantdata = ls_plantdata "BAPI结构-BAPI_MARC-工厂级别的物料数据
plantdatax = ls_plantdatax "BAPI结构-BAPI_MARCX-BAPI_MARC 的复选框结构
forecastparameters = ls_forecastparameters "BAPI结构-BAPI_MPOP-预测参数
forecastparametersx = ls_forecastparametersx "BAPI结构-BAPI_MPOPX-BAPI_MPOP 复选框结构
planningdata = ls_planningdata "BAPI结构-BAPI_MPGD-更改物料主记录/产品组的凭证结构
planningdatax = ls_planningdatax "BAPI结构-BAPI_MPGDX-BAPI_MPGD 复选框结构
storagelocationdata = ls_storagelocationdata "BAPI结构-BAPI_MARD-存储位置级别的物料数据
storagelocationdatax = ls_storagelocationdatax "BAPI结构-BAPI_MARDX-BAPI_MARD 的复选框结构
valuationdata = ls_valuationdata "BAPI结构-BAPI_MBEW-评估数据
valuationdatax = ls_valuationdatax "BAPI结构-BAPI_MBEWX-BAPI_MBEW 的复选框结构
warehousenumberdata = ls_warehousenumberdata "BAPI结构-BAPI_MLGN-仓库号数据
warehousenumberdatax = ls_warehousenumberdatax "BAPI结构-BAPI_MLGNX-BAPI_MLGN 的复选框结构
salesdata = ls_salesdata "BAPI结构-BAPI_MVKE-销售数据
salesdatax = ls_salesdatax "BAPI结构-BAPI_MVKEX-BAPI_MVKE 复选框结构
storagetypedata = ls_storagetypedata "BAPI结构-BAPI_MLGT-存储类型数据
storagetypedatax = ls_storagetypedatax "BAPI结构-BAPI_MLGTX-BAPI_MLGT 的复选框结构
* flag_online = ' '
* flag_cad_call = ' '
* no_dequeue = ' '
* no_rollback_work = ' '
* clientdatacwm =
* clientdatacwmx =
* valuationdatacwm =
* valuationdatacwmx =
入参1:headdata = ls_headdata(各个模块视图)
BAPI路径:BAPI_MATERIAL_SAVEDATA=>导入=>HEADDATA=>BAPIMATHEAD(Header segment with control information=带有控制信息的表头段)
入参1:BAPI必要组件
TYPES:BEGIN OF ty_data,
*&---------------------------------------------------------------------*
*& 入参1:headdata = ls_headdata(抬头)
*&---------------------------------------------------------------------*
matnr TYPE mara-matnr, "入参1-物料编号(18 个字符)
mbrsh TYPE mara-mbrsh, "入参1-行业领域
mtart TYPE mara-mtart, "入参1-物料类型
basic_view TYPE flag, "入参1-基本数据视图
sales_view TYPE flag, "入参1-销售视图
purchase_view TYPE flag, "入参1-采购视图
mrp_view TYPE flag, "入参1-物料需求计划(MRP)视图
forecast_view TYPE flag, "入参1-预测视图
work_sched_view TYPE flag, "入参1-工作计划视图
prt_view TYPE flag, "入参1-生产资源/工具(PRT)视图
storage_view TYPE flag, "入参1-存储视图
warehouse_view TYPE flag, "入参1-仓库管理视图
quality_view TYPE flag, "入参1-质量管理视图
account_view TYPE flag, "入参1-会计视图
cost_view TYPE flag, "入参1-成本视图
material_long TYPE flag, "入参1-物料编号(40 个字符)项目上启用了物料40位才用
END OF ty_data.
*&---------------------------------------------------------------------*
*& Data 参照数据类型ty_data定义内表gt_data和工作区gs_data
*&---------------------------------------------------------------------*
DATA:gt_data TYPE STANDARD TABLE OF ty_data,
gs_data TYPE ty_data.
*&---------------------------------------------------------------------*
*& 定义BAPI入参1:headdata = ls_headdata(抬头)
*&---------------------------------------------------------------------*
DATA(ls_headdata) = VALUE bapimathead(
material = gs_data-matnr "物料编号(18 个字符)
ind_sector = gs_data-mbrsh "行业领域
matl_type = gs_data-mtart "物料类型
basic_view = gs_data-basic_view "基本数据视图
sales_view = gs_data-sales_view "销售视图
purchase_view = gs_data-purchase_view "采购视图
mrp_view = gs_data-mrp_view "物料需求计划(MRP)视图
forecast_view = gs_data-forecast_view "预测视图
work_sched_view = gs_data-work_sched_view "工作计划视图
prt_view = gs_data-prt_view "生产资源/工具(PRT)视图
storage_view = gs_data-storage_view "存储视图
warehouse_vie = gs_data-warehouse_view "仓库管理视图
quality_view = gs_data-quality_view "质量管理视图
account_view = gs_data-account_view "会计视图
cost_view = gs_data-cost_view "成本视图
material_long = gs_data-material_long "物料编号(40 个字符)项目上启用了物料40位才用
).
入参2:clientdata = ls_clientdata(基本数据视图-后台表MARA)
BAPI路径:BAPI_MATERIAL_SAVEDATA=>导入=>CLIENTDATA=>BAPI_MARA(Client-specific material data=客户端层次物料数据)
入参2:BAPI必要组件
TYPES:BEGIN OF ty_data,
*&---------------------------------------------------------------------*
*& 入参2:clientdata = ls_clientdata(基本数据视图-后台表MARA)
*&---------------------------------------------------------------------*
matkl TYPE mara-matkl, "入参2-物料组
bismt TYPE mara-bismt, "入参2-旧物料编号(18 字符,兼容模式)
meins TYPE mara-meins, "入参2-基本计量单位
bstme TYPE mara-bstme, "入参2-采购订单计量单位
zeinr TYPE mara-zeinr, "入参2-文档号码(无文档管理系统)
groes TYPE mara-groes, "入参2-设计料号
normt TYPE mara-normt, "入参2-工业标准描述 (例如 ANSI 或 ISO)
labor TYPE mara-labor, "入参2-实验室/设计室
ntgew TYPE mara-ntgew, "入参2-净重
gewei TYPE mara-gewei, "入参2-重量单位
raube TYPE mara-raube, "入参2-存储条件
tempb TYPE mara-tempb, "入参2-温度条件标识
tragr TYPE mara-tragr, "入参2-运输组
spart TYPE mara-spart, "入参2-产品组
mhdrz TYPE mara-mhdrz, "入参2-最短剩余货架寿命
mhdhb TYPE mara-mhdhb, "入参2-总货架寿命
mtpos_mara TYPE mara-mtpos_mara, "入参2-常规项目类别组
xchpf TYPE mara-xchpf, "入