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.