要让 SAP SD 销售订单行项目里的“重量”“毛重”等字段重新可编辑,99% 的情况都不是权限问题,而是系统标准逻辑:只要该行已经生成了交货单(Delivery),这些属于「装运层」的字段就被自动锁掉,避免与交货数据不一致。
图里能看到“Shipping Point=S99 月球基地嫦娥宫”,说明交货单已经生成,所以字段灰掉是标准行为,不是用户或权限造成的。
因此真正“取消限制”的办法只有两类:
业务上:把交货单删掉 → 字段立即恢复可编辑
VL02N 删除交货单(或 VL09 先过账冲销,再删),然后回到 VA02,行项目的“Weight/Gross Weight”就亮了。
改完重量后,重新做交货即可。
优点:零增强,100% 标准。
缺点:如果交货单已经发货过账,就必须先冲销,流程上多一步。
技术上:用增强硬开锁(不推荐,除非业务必须)
系统灰掉字段的代码在程序 SAPMV45A 的 PBO 里,判断是表 VBUK 的 LFSTK 字段(交货状态)不为空就设成 DISPLAY ONLY。
可以做一个隐式增强(SE38→SAPMV45A→PBO 的 USEREXIT_FIELD_MODIFICATION 或 BADI ORDER_SAVE 之前把 LFSTK 临时置空),让屏幕属性变成可输入。
但这样做会导致订单与交货数据不一致,后续开票、外贸接口、SD-FI 集成都会出错,所以除非自己写二次校验逻辑,否则几乎没人这么干。
一句话结论
“重量/毛重”不可编辑是因为交货单已存在;把交货单删(或冲销+删)就能改——这是 SAP 标准逻辑,没有其它配置开关能“取消限制”。