Material账本一致性校验功能模块
Material Ledger consistency check function module
是否有功能模块或 BAPI 或方法可以很好地为给定的 material 执行 material/material 账本一致性检查?
我知道报告 SAPRCKMU
很难在我自己的程序中使用。
我也知道并使用执行一致性检查的功能模块 CKML_F_CKML1_PRICES_GET
。
当这个功能模块发现不一致时,它调用MESSAGE E
...这意味着我失去了对程序的控制。这是我的核心问题。
所以我正在寻找一种在调用 CKML_F_CKML1_PRICES_GET
之前检查一致性的方法,这种方法可以在不调用 MESSAGE E
的情况下为我提供带有错误消息的 return 参数...
我找到了一个非常有效的解决方案:
将行error_message = 99
添加到功能模块调用中:
CALL FUNCTION 'CKML_F_CKML1_PRICES_GET'
....
EXCEPTIONS
...
error_message = 99
others = 98.
现在,当功能模块本身使用 MESSAGE E...
而不是 RAISE ...
时,程序不会中断控制流。
每当在内部调用MESSAGE E...
时,它被转换为SY-SUBRC = 99
并且SY-...
中的error-fields也被设置。
是否有功能模块或 BAPI 或方法可以很好地为给定的 material 执行 material/material 账本一致性检查?
我知道报告 SAPRCKMU
很难在我自己的程序中使用。
我也知道并使用执行一致性检查的功能模块 CKML_F_CKML1_PRICES_GET
。
当这个功能模块发现不一致时,它调用MESSAGE E
...这意味着我失去了对程序的控制。这是我的核心问题。
所以我正在寻找一种在调用 CKML_F_CKML1_PRICES_GET
之前检查一致性的方法,这种方法可以在不调用 MESSAGE E
的情况下为我提供带有错误消息的 return 参数...
我找到了一个非常有效的解决方案:
将行error_message = 99
添加到功能模块调用中:
CALL FUNCTION 'CKML_F_CKML1_PRICES_GET'
....
EXCEPTIONS
...
error_message = 99
others = 98.
现在,当功能模块本身使用 MESSAGE E...
而不是 RAISE ...
时,程序不会中断控制流。
每当在内部调用MESSAGE E...
时,它被转换为SY-SUBRC = 99
并且SY-...
中的error-fields也被设置。