代码对应ME29N中批准策略中的拒绝和取消拒绝的按钮
拒绝按钮代码如下:
DATA LC_PO TYPE REF TO CL_PO_HEADER_HANDLE_MM.
DATA LS_DOCUMENT TYPE MEPO_DOCUMENT.
"文本获取定义
DATA: LV_MESSAGE TYPE STRING.
* prepare creation of PO instance
LS_DOCUMENT-DOC_TYPE = 'F'. "默认值,表示采购凭证-采购订单
LS_DOCUMENT-PROCESS = MMPUR_PO_PROCESS. "默认值
LS_DOCUMENT-TRTYP = 'V'. "默认值,表示更改
LS_DOCUMENT-DOC_KEY(10) = PV_EBELN. "PO单号
LS_DOCUMENT-INITIATOR-INITIATOR = MMPUR_INITIATOR_REL.
* object creation and initialization
CREATE OBJECT LC_PO.
LC_PO->FOR_BAPI = MMPUR_YES.
CALL METHOD LC_PO->PO_INITIALIZE( IM_DOCUMENT = LS_DOCUMENT ). "初始化采购凭证
CALL METHOD LC_PO->SET_PO_NUMBER( IM_PO_NUMBER = PV_EBELN ). "赋值采购订单单号
CALL METHOD LC_PO->SET_STATE( CL_PO_HEADER_HANDLE_MM=>C_AVAILABLE ). "设置采购订单状态
* read purchase order from database
CALL METHOD LC_PO->PO_READ
EXPORTING
IM_TCODE = 'ME29N' "事务代码
IM_TRTYP = LS_DOCUMENT-TRTYP "事务类型
IM_AKTYP = LS_DOCUMENT-TRTYP
IM_PO_NUMBER = PV_EBELN "采购订单单号
IM_DOCUMENT = LS_DOCUMENT. "文档类型
"校验当前采购订单状态是否可以发起拒绝
IF LC_PO->IF_RELEASABLE_MM~IS_REJECTION_ALLOWED( ) = 'X'.
"拒绝当前采购订单
CALL METHOD LC_PO->IF_RELEASABLE_MM~REJECT
EXPORTING
IM_RESET = SPACE
EXCEPTIONS
FAILED = 1
OTHERS = 2.
LV_MESSAGE = '采购订单' && PV_EBELN && '拒绝成功'.
MESSAGE LV_MESSAGE TYPE 'S'.
ELSE.
"否则报错
GV_ERROR = 'X'.
LV_MESSAGE = '采购订单' && PV_EBELN && '拒绝失败'.
MESSAGE LV_MESSAGE TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
"提交
CALL METHOD LC_PO->PO_POST
EXCEPTIONS
FAILURE = 1
OTHERS = 2.
取消拒绝按钮代码如下:
DATA LC_PO TYPE REF TO CL_PO_HEADER_HANDLE_MM.
DATA LS_DOCUMENT TYPE MEPO_DOCUMENT.
"文本获取定义
DATA: LV_MESSAGE TYPE STRING.
* prepare creation of PO instance
LS_DOCUMENT-DOC_TYPE = 'F'. "默认值,表示采购凭证-采购订单
LS_DOCUMENT-PROCESS = MMPUR_PO_PROCESS. "默认值
LS_DOCUMENT-TRTYP = 'V'. "默认值,表示更改
LS_DOCUMENT-DOC_KEY(10) = PV_EBELN. "PO单号
* LS_DOCUMENT-INITIATOR-INITIATOR = MMPUR_INITIATOR_REL.
* object creation and initialization
CREATE OBJECT LC_PO.
LC_PO->FOR_BAPI = MMPUR_YES.
CALL METHOD LC_PO->PO_INITIALIZE( IM_DOCUMENT = LS_DOCUMENT ). "初始化采购凭证
CALL METHOD LC_PO->SET_PO_NUMBER( IM_PO_NUMBER = PV_EBELN ). "赋值采购订单单号
CALL METHOD LC_PO->SET_STATE( CL_PO_HEADER_HANDLE_MM=>C_AVAILABLE ). "设置采购订单状态
* read purchase order from database
CALL METHOD LC_PO->PO_READ
EXPORTING
IM_TCODE = 'ME29N' "事务代码
IM_TRTYP = LS_DOCUMENT-TRTYP "事务类型
IM_AKTYP = LS_DOCUMENT-TRTYP
IM_PO_NUMBER = PV_EBELN "采购订单单号
IM_DOCUMENT = LS_DOCUMENT. "文档类型
"校验当前采购订单状态是否可以发起取消拒绝
IF LC_PO->IF_RELEASABLE_MM~IS_RESET_REJ_ALLOWED( ) = 'X'.
"取消拒绝当前采购订单
CALL METHOD LC_PO->IF_RELEASABLE_MM~REJECT
EXPORTING
IM_RESET = MMPUR_YES
EXCEPTIONS
FAILED = 1
OTHERS = 2.
LV_MESSAGE = '采购订单' && PV_EBELN && '取消拒绝成功'.
MESSAGE LV_MESSAGE TYPE 'S'.
ELSE.
"否则报错
GV_ERROR = 'X'.
LV_MESSAGE = '采购订单' && PV_EBELN && '取消拒绝失败'.
MESSAGE LV_MESSAGE TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
"提交
CALL METHOD LC_PO->PO_POST
EXCEPTIONS
FAILURE = 1
OTHERS = 2.