01
前言
调用方法'CO_XT_COMPONENTS_DELETE'删除生产订单组件时,会有未知偶发原因导致JEST中状态为'I0013'(删除),但是RESB表中xloek字段未打上删除标记.
02
解决方法
1. 官方2433959note有给出这个问题的解决方法,但是未提及原因,如下图所示。
2.给出的方案是提供一个修复程序,SE38自己创建,需在组件删除后调用,或者设置后台JOB运行,或者手动运行。代码如下
REPORT zppsfc037 .
*
Some orders have deleted components for which the delete flag is not
set in the rservation. This report correct the orders by setting
the deletion flag on the components reservation
*
Author: Guillaume Vannier
*
TABLES: jest, afko, resb.
order FOR afko-aufnr.
PARAMETERS: testmode AS CHECKBOX DEFAULT 'X'.
DATA: obj(13) TYPE c.
DATA: l_rsnum LIKE resb-rsnum,
l_objnr LIKE resb-objnr.
DATA: ls_resb LIKE resb.
DATA: BEGIN OF lt_resb OCCURS 0.
INCLUDE STRUCTURE resb.
DATA: END OF lt_resb.
DATA: BEGIN OF lt_rsnum OCCURS 0.
DATA: rsnum LIKE resb-rsnum.
DATA: END OF lt_rsnum.
IF order[] IS INITIAL.
WRITE: /'Please enter an order range'.
EXIT.
ENDIF.
REFRESH lt_resb.
the reservations for the orders
SELECT rsnum FROM afko INTO TABLE lt_rsnum
WHERE aufnr IN order.
LOOP AT lt_rsnum.
the deleted components of the orders
CONCATENATE 'OK' lt_rsnum-rsnum '%' INTO obj.
SELECT objnr FROM jest INTO l_objnr
WHERE objnr LIKE obj
AND stat EQ 'I0013'
AND inact EQ ' '.
the deleted components without deletion flag
SELECT * FROM resb INTO ls_resb
WHERE rsnum = lt_rsnum-rsnum
AND objnr = l_objnr
AND xloek = ' '.
'X'. =
ls_resb TO lt_resb.
APPEND lt_resb.
WRITE: / 'Order', ls_resb-aufnr, 'selected for component',
ls_resb-matnr.
ENDSELECT.
ENDSELECT.
ENDLOOP.
IF testmode IS INITIAL.
LOOP AT lt_resb.
UPDATE resb FROM lt_resb.
ENDLOOP.
WRITE: / 'Reservations updated'.
3.从代码逻辑分析就是查出删除标记不一致的订单,然后将resb中的删除字段xloek字段赋值'X'。
03
结语
如果有同学知道删除标记不一致的原因,可以留言分享探讨~
温馨提示
如果你喜欢本文,请分享给有需要的朋友,想要获得更多信息,请关注我,若有问题以及建议,请在文末留言或者私信。