1、使用标准事务ccundo可以取消ECN的更改
参照标准事务写了个简单的程序
PARAMETERS:P_AENNR TYPE AENNR OBLIGATORY MATCHCODE OBJECT AEN1.
DATA: BADI_ECM_UNDO TYPE REF TO IF_EX_ECM_UNDO,
LS_OBJECT TYPE CC01_UNDO_OBJECT,
LT_MESSAGES TYPE SEDEP_ERROR_TABLE,
GS_AENR TYPE AENR,
lt_undo TYPE cc01_undo_object_tab.
SELECT SINGLE * FROM AENR INTO GS_AENR WHERE AENNR EQ P_AENNR.
CALL METHOD cl_exithandler=>get_instance
EXPORTING
exit_name = 'ECM_UNDO'
null_instance_accepted = space
CHANGING
instance = badi_ecm_undo.
CALL METHOD BADI_ECM_UNDO->SELECT_OBJECTS
EXPORTING
I_AENNR = P_AENNR
CHANGING
CT_OBJECTS = LT_UNDO.
LOOP AT LT_UNDO INTO LS_OBJECT.
*** ls_object-aenob = BOM/plant/Alternative BOM
CALL METHOD BADI_ECM_UNDO->UNDO_OBJECT
EXPORTING
I_AENR = GS_AENR
CHANGING
C_OBJECT = LS_OBJECT
CT_MESSAGES = LT_MESSAGES.
ENDLOOP.