PR / PO审批
PR审批的BAPI
1、单个项目PR审批 CALL FUNCTION 'BAPI_REQUISITION_RELEASE' EXPORTING number = l_banfn rel_code = '01' item = l_bnfpo USE_EXCEPTIONS = 'X' NO_COMMIT_WORK = '' IMPORTING REL_STATUS_NEW = LV_FRGZU rel_indicator_new = l_frgkz TABLES return = l_return EXCEPTIONS authority_check_fail = 1 requisition_not_found = 2 enqueue_fail = 3 prerequisite_fail = 4 release_already_posted = 5 responsibility_fail = 6 OTHERS = 7. USE_EXCEPTIONS默认填写X(填写X表示返回例外和问题的错误消息),NO_COMMIT_WORK默认填写空(如果填写X就表示只是测试不写数据库)。 多级审批的时候,REL_CODE参数填写当前审批的级数。比如2级审批,可以逐级审批,先填写’01’,执行该BAPI,然后再填写’02’,再次执行该BAPI,这样就完全审批。不可跨级审批,或者说一次审批多级。 如果PR在被其他用户修改、审批占用,RETURN参数会返回消息“PR某行冻结”。如果审批成功,REL_STATUS_NEW参数返回批准状态(当前做到几级审批就是几个X,未审批是空),rel_indicator_new返回批准标识(对于华星未审批是X,一级审批时为A,二级审批时为2)。 2、PR整体审批 CALL FUNCTION 'BAPI_REQUISITION_RELEASE_GEN' EXPORTING number = ls_outtab-banfn rel_code = l_frgab NO_COMMIT_WORK = '' IMPORTING rel_status_new = l_frgzu rel_indicator_new = l_frgkz TABLES return = lt_return. 可以同时审批PR的所有项目。输入参数填写类似单个审批,返回参数也是类似。 3、单个项目取消PR审批 CALL FUNCTION 'BAPI_REQUISITION_RESET_RELEASE' EXPORTING NUMBER = ITEM-BANFN ITEM = ITEM-BNFPO REL_CODE = '01' IMPORTING REL_INDICATOR_NEW = HEAD-FRGKZ TABLES RETURN = ZRETURN EXCEPTIONS AUTHORITY_CHECK_FAIL = 1 REQUISITION_NOT_FOUND = 2 ENQUEUE_FAIL = 3 PREREQUISITE_FAIL = 4 RELEASE_ALREADY_POSTED = 5 RESPONSIBILITY_FAIL = 6 NO_RELEASE_ALREADY = 7 NO_NEW_RELEASE_INDICATOR = 8 OTHERS = 9. USE_EXCEPTIONS默认填写X(填写X表示返回例外和问题的错误消息),NO_COMMIT_WORK默认填写空(如果填写X就表示只是测试不写数据库)。 多级取消审批的时候,REL_CODE参数填写当前取消审批的级数。比如2级审批,可以逐级取消审批,先填写’02’,执行该BAPI,然后再填写’01’,再次执行该BAPI,这样就完全取消审批(这时批准标识FRGKZ为X)。可以一次完全取消审批。不管当前处于几级审批状态,REL_CODE参数填写’01’,执行该BAPI,就会完全取消审批。 如果PR在被其他用户修改、审批占用,RETURN参数会返回消息“PR某行冻结”。如果取消审批成功,REL_STATUS_NEW参数返回批准状态(当前取消审批后PR剩下的审批级数是几级就是几个X,完全取消审批是空),rel_indicator_new返回批准标识(对于华星未审批是X,一级审批时为A,二级审批时为2)。 4、整体取消PR审批 CALL FUNCTION 'BAPI_REQUISITION_RESET_REL_GEN' EXPORTING NUMBER = BAPI2009OB-PREQ_NO REL_CODE = RM06B-FRGAB NO_COMMIT_WORK = '' IMPORTING REL_STATUS_NEW = EBAN-FRGZU REL_INDICATOR_NEW = EBAN-FRGKZ TABLES RETURN = RETURN. 可以同时取消审批PR的所有项目。输入参数填写类似单个取消审批,返回参数也是类似。
PO 审批
PO审批的BAPI 1、 审批PO的BAPI CALL FUNCTION 'BAPI_PO_RELEASE' EXPORTING purchaseorder = lt_ekko-ebeln po_rel_code = '01' USE_EXCEPTIONS = 'X' NO_COMMIT = '' IMPORTING REL_STATUS_NEW = LV_FRGZU rel_indicator_new = gt_ekpo-frgke TABLES return = l_return EXCEPTIONS authority_check_fail = 1 document_not_found = 2 enqueue_fail = 3 prerequisite_fail = 4 release_already_posted = 5 responsibility_fail = 6 no_release_already = 7 no_new_release_indicator = 8 OTHERS = 9. USE_EXCEPTIONS默认填写X(填写X表示返回例外和问题的错误消息),NO_COMMIT默认填写空(如果填写X就表示只是测试不写数据库)。 多级审批的时候,PO_REL_CODE参数填写当前审批的级数。比如2级审批,可以逐级审批,先填写’01’,执行该BAPI,然后再填写’02’,再次执行该BAPI,这样就完全审批。不可跨级审批,或者说一次审批多级。 如果PO在被其他用户修改、审批占用,RETURN参数会返回消息“用户某某已经处理采购订单”。如果审批成功,REL_STATUS_NEW参数返回批准状态(当前做到几级审批就是几个X,没有审批是空),rel_indicator_new返回批准标识(未审批时为B,全部审批完成时为R)。 2、 取消PO审批的BAPI CALL FUNCTION 'BAPI_PO_RESET_RELEASE' EXPORTING purchaseorder = lt_ekko-ebeln po_rel_code = '01' USE_EXCEPTIONS = 'X' IMPORTING REL_STATUS_NEW = LV_FRGZU rel_indicator_new = gt_ekpo-frgke TABLES return = l_return EXCEPTIONS authority_check_fail = 1 document_not_found = 2 enqueue_fail = 3 prerequisite_fail = 4 release_already_posted = 5 responsibility_fail = 6 no_release_already = 7 no_new_release_indicator = 8 OTHERS = 9. USE_EXCEPTIONS默认填写X(填写X表示返回例外和问题的错误消息)。 多级取消审批的时候,PO_REL_CODE参数填写当前取消审批的级数。比如2级审批,可以逐级取消审批,先填写’02’,执行该BAPI,然后再填写’01’,再次执行该BAPI,这样就完全取消审批(这时批准标识FRGKZ为B)。可以一次完全取消审批。不管当前处于几级审批状态,PO_REL_CODE参数填写’01’,执行该BAPI,就会完全取消审批。 如果PO在被其他用户修改、审批占用,RETURN参数会返回消息“用户某某已经处理采购订单”。如果取消审批成功,REL_STATUS_NEW参数返回批准状态(当前取消审批后PR剩下的审批级数是几级就是几个X,完全取消审批是空),rel_indicator_new返回批准标识(未审批时为B,全部审批完成时为R)。