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.