1.多级审批自动审批 ,
2.为了解决审批时不检查权限对像M_EINK_FRG,COPY标准的PO审批函数BAPI_PO_RELEASE为ZBAPI_PO_RELEASE,,并去除其中的权限对像 M_EINK_FRG 检查功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
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. |