PR/PO审批功能

PR反审:BAPI_REQUISITION_RELEASE
PR反审:BAPI_REQUISITION_RESET_RELEASE
PO审批:BAPI_PO_RELEASE
PO反审:BAPI_PO_RESET_RELEASE

PR审批举例

 DATA:lv_frgc0         TYPE frgco,
 	  lv_index         TYPE sy-index,
 	  lt_return        TYPE TABLE OF bapiret2.
 		
 "读取需要审批的采购申请
 SELECT banfn,
         bnfpo,
         frggr,
         frgst,
         frgkz,
         frgzu
  FROM eban
  WHERE frgkz <> 'R'
  AND frggr <> ''
  INTO TABLE @DATA(lt_eban).
  "获取采购策略
  SELECT t16fs~*
    FROM @lt_eban AS it1 INNER JOIN t16fs
  ON it1~frggr = t16fs~frggr AND
     it1~frgst = t16fs~frgsx
  INTO TABLE @DATA(lt_t16fs).
  SORT lt_t16fs BY frggr frgsx ASCENDING.
  DELETE ADJACENT DUPLICATES FROM lt_t16fs COMPARING frggr frgsx.
  "执行审批
  LOOP AT lt_eban ASSIGNING FIELD-SYMBOL(<fs_eban>).
    READ TABLE lt_t16fs INTO DATA(ls_t16fs) WITH KEY frggr = <fs_eban>-frggr frgsx = <fs_eban>-frgst BINARY SEARCH .
    IF sy-subrc <> 0.

    ELSE.
      lv_index = strlen( <fs_eban>-frgzu ).
      DO 8 TIMES VARYING lv_frgc0 FROM ls_t16fs-frgc1 NEXT ls_t16fs-frgc2.
        CHECK sy-index > lv_index AND lv_frgc0 IS NOT INITIAL.
        CLEAR lt_return[].
        CALL FUNCTION 'BAPI_REQUISITION_RELEASE'
          EXPORTING
            number                 = <fs_eban>-banfn
            rel_code               = lv_frgc0
            item                   = <fs_eban>-bnfpo
*           USE_EXCEPTIONS         = 'X'
*           NO_COMMIT_WORK         = ' '
*       IMPORTING
*           rel_status_new         = lv_frgzu
*           REL_INDICATOR_NEW      =
          TABLES
            return                 = lt_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.

        LOOP AT lt_return INTO DATA(ls_return) WHERE type EQ 'E'.
          
        ENDLOOP.
        IF sy-subrc = 0.
          EXIT.
        ENDIF.
      ENDDO.
    ENDIF.
  ENDLOOP.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值