SAP MM采购订单多级审批函数

1.多级审批自动审批 ,仅供参考

2.为了解决审批时不检查权限对像M_EINK_FRG,COPY标准的PO审批函数BAPI_PO_RELEASE为ZBAPI_PO_RELEASE,,并去除其中的权限对像 M_EINK_FRG 检查功能。

FUNCTION ZFI_0226_REC_RELEASE.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(I_EBELN) TYPE  EBELN
*"  EXPORTING
*"     REFERENCE(O_SUCC) TYPE  FLAG
*"     REFERENCE(O_MSGTX) TYPE  MSGTX
*"  TABLES
*"      LT_RETURN STRUCTURE  BAPIRET2
*"----------------------------------------------------------------------

  DATA: LI_T16FV TYPE STANDARD TABLE OF T16FV.
  DATA: WA_T16FV TYPE T16FV.

  DATA: LS_RETURN TYPE BAPIRETURN.

  DATA: LR_GRID   TYPE REF TO CL_GUI_ALV_GRID.
  DATA: LN TYPE I.
  DATA: LNX TYPE I.
  DATA: L_STR TYPE STRING.
  DATA: LS_EKKO TYPE EKKO.

  SELECT SINGLE * INTO LS_EKKO FROM EKKO WHERE EBELN = I_EBELN.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE LI_T16FV FROM T16FV.

  SORT LI_T16FV BY FRGGR FRGSX FRGCO.


  LN = STRLEN( LS_EKKO-FRGZU ).
  LNX = 0.
  LOOP AT LI_T16FV INTO WA_T16FV WHERE FRGGR = LS_EKKO-FRGGR AND FRGSX = LS_EKKO-FRGSX.
    LNX = LNX + 1.
    IF LNX <= LN.
      "break: hp-abap16.
      CONTINUE."处理已审批的级别,略过
    ENDIF.
    CALL FUNCTION 'ZBAPI_PO_RELEASE'
      EXPORTING
        PURCHASEORDER                = LS_EKKO-EBELN
        PO_REL_CODE                  = WA_T16FV-FRGCO
        USE_EXCEPTIONS               = ''
*         NO_COMMIT                    = ' '
*       IMPORTING
*         REL_STATUS_NEW               =
*         REL_INDICATOR_NEW            =
*         RET_CODE                     =
      TABLES
        RETURN                       = LT_RETURN
*       EXCEPTIONS
*         AUTHORITY_CHECK_FAIL         = 1
*         DOCUMENT_NOT_FOUND           = 2
*         ENQUEUE_FAIL                 = 3
*         PREREQUISITE_FAIL            = 4
*         RELEASE_ALREADY_POSTED       = 5
*         RESPONSIBILITY_FAIL          = 6
*         OTHERS                       = 7
              .
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    READ TABLE Lt_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.
    IF SY-SUBRC = 0.
      O_SUCC = ''.
      CONCATENATE '级别' WA_T16FV-FRGCO '审批失败(' LS_RETURN-MESSAGE ')' INTO O_MSGTX.
      EXIT.
    ELSE.
      COMMIT WORK AND WAIT.
      WAIT UP TO 1 SECONDS.
    ENDIF.
  ENDLOOP.
  IF O_MSGTX = ''.
    O_SUCC = 'X'.
    O_MSGTX = '审批成功!'.
  ELSE.
    O_SUCC = ''.
  ENDIF.

ENDFUNCTION.

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᝰ随心ꦿེএ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值