BAIP创建/修改物料时设定价格确定(MLAST)
sap吧
全部回复
仅看楼主
level 1
只能那个有这3种方式么
路径 1(推荐):ABAP 侧用 BDC 封装 RFC,做"轻量校验 + 前台等价"
如果目标只是"让 Python 能批量把物料勾成 ML 相关",最稳的是:
plaintextZ_RFC_MM02_SET_MLAST
└─ CALL TRANSACTION 'MM02' USING bdcdata MODE 'N' UPDATE 'S'
├─ 进入评估视图(T001W / 评估范围)
├─ 勾选 ML 相关标记
└─ 保存,捕获 BDCMSGCOLL 消息
优点:走完整前台校验(权限、期间、CKMLHD 一致性由 SAP 自己保证),不用碰表。缺点:录屏字段名(BDC_FIELD)随版本变、批量要控制并发、错误信息要自己翻译。
路径 2:如果你坚持要"函数级"而非录屏
正确的是组合调用,不是单个 CKML_MAINTAIN_*:
MB_UPDATE_MATERIAL(或 BAPI_MATERIAL_SAVEDATA 走评估视图,先保证 MBEW 基础数据)ML 侧用物料分类账提供的初始化/维护类函数(不同版本函数名不同,S4 里多在 CKML* 命名空间,需在系统里用 SE37 / SE80 按 CKMLHD 更新点反查)关键是同步 CKMLHD:CKMLHD 里没有对应记录时,光改 MBEW 会导致 CKMLCP 报错
这也是为什么"直接 UPDATE MBEW + CKMLHD"危险——不是不能写,而是绕过了 CKMLHD 的期间/货币/评估类型一致性检查,一旦 CKMLCP 跑起来就对不上账。
路径 3:LTMC —— 仅限上线迁移,别做日常接口
你的判断是对的。补充一点:LTMC 迁移包执行时会生成迁移日志和模拟运行(simulation),日常业务里反复跑会让 ML 的期初/累计数据被重置或错乱,很多项目的确明令禁止。
2026年10月17日 06点10分 1
1