业务背景
在零售行业中,商品主数据可通过批量复制实现逻辑分销视图的扩充,实际业务中后每个分销中心的数据有差异,本例实现对不同分销中心的利润中心字段的更改
实现思路
原始程序使用BAPI_MATERIAL_MAINTAINDATA_RT修改marc-prctr, 在测试环境发现程序运行非常慢,不符合百万级商品的批量修改需求:再查询SAP社区资料后,获知MATERIAL_UPDATE_LOGISTIC_DATA也可实现MARC字段的更新,实际测试后速度提高数十倍,满足优化需求
具体步骤
部分参考代码如下
lt_upd_field_names-tabname = 'MARC'.
lt_upd_field_names-fieldname = 'PRCTR'."利润中心
append lt_upd_field_names.
lt_new_marc_data-matnr = <fs_marc>-matnr.
lt_new_marc_data-werks = <fs_marc>-werks.
lt_new_marc_data-prctr = wa_alv-prctr.
append lt_new_marc_data.
if lt_new_marc_data[] is not initial.
call function 'MATERIAL_UPDATE_LOGISTIC_DATA'
exporting
iv_no_commit = abap_false
tables
it_upd_field_names = lt_upd_field_names
it_new_marc_data = lt_new_marc_data
ot_messages = lt_messages
exceptions
wrong_input_data = 1
wrong_reference_handling = 2
lock_problems = 3
foreign_key_check_error = 4
special_check_error = 5
others = 6.
endif.