生产订单RESB 和 JEST 删除标记不一致问题处理

文摘   科技   2024-07-16 09:00   浙江  

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.
SELECT-OPTIONS 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.
*read the reservations for the ordersSELECT rsnum FROM afko INTO TABLE lt_rsnum WHERE aufnr IN order.LOOP AT lt_rsnum.*...find 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 ' '.*.....find the deleted components without deletion flag SELECT * FROM resb INTO ls_resb WHERE rsnum = lt_rsnum-rsnum AND objnr = l_objnr AND xloek = ' '. ls_resb-xloek = 'X'. MOVE-CORRESPONDING 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'.ENDIF.

3.从代码逻辑分析就是查出删除标记不一致的订单,然后将resb中的删除字段xloek字段赋值'X'。

  

03

结语

如果有同学知道删除标记不一致的原因,可以留言分享探讨~


 

END

 

温馨提示

如果你喜欢本文,请分享给有需要的朋友,想要获得更多信息,请关注我,若有问题以及建议,请在文末留言或者私信。





 

 

扫码关注我们

以便获取最新更新内容


 

ABAP三叔
ABAP开发技术分享