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)。
原文地址:https://www.cnblogs.com/ckstock/p/15708067.html