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)。