ABAP 审批采购订单之拒绝和取消拒绝

代码对应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.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值