PR 审核&反审 BAPI demo
审核:
FORM frm_appr_pr USING VALUE(p_banfn) TYPE eban-banfn
VALUE(p_zspzt) TYPE char02
CHANGING p_type TYPE bapi_mtype
p_mess TYPE bapi_msg.
DATA lt_return TYPE TABLE OF bapireturn WITH HEADER LINE.
DATA:lv_error.
REFRESH:lt_return.
CALL FUNCTION ‘BAPI_REQUISITION_RELEASE_GEN’ " 采购申请审批
EXPORTING
number = p_banfn
rel_code = p_zspzt
TABLES
return = lt_return.
CLEAR lv_error.
LOOP AT lt_return WHERE type CA ‘AEX’.
lv_error = ‘X’.
p_mess = p_mess && ‘/’ && lt_return-message.
ENDLOOP.
IF lv_error = ‘X’.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
p_type = ‘E’.
ELSE.
WAIT UP TO ‘0.5’ SECONDS.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
p_type = ‘S’.
p_mess = ‘审批成功’.
ENDIF.
ENDFORM.
反审:
FORM frm_releas_pr USING VALUE(p_banfn) TYPE eban-banfn
VALUE(p_zspzt) TYPE char02
CHANGING p_type TYPE bapi_mtype
p_mess TYPE bapi_msg.
DATA lt_return TYPE TABLE OF bapireturn WITH HEADER LINE.
DATA:lv_error.
REFRESH:lt_return.
CALL FUNCTION ‘BAPI_REQUISITION_RESET_REL_GEN’
EXPORTING
number = p_banfn
rel_code = p_zspzt
TABLES
return = lt_return.
CLEAR lv_error.
LOOP AT lt_return WHERE type CA ‘AEX’.
lv_error = ‘X’.
p_mess = p_mess && ‘/’ && lt_return-message.
ENDLOOP.
IF lv_error = ‘X’.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
p_type = ‘E’.
ELSE.
WAIT UP TO ‘0.5’ SECONDS.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
p_type = ‘S’.
p_mess = ‘反审成功’.
ENDIF.
ENDFORM.