Deviation while confirming prices differs a little bit to deviations in quantities or dates:
You need to activate the Validation Check PO_PRICE_CONFIRMATION. This validation check does not send the PO into 'Manual Approval Required', if the confirmed price lies outside the limit, only issues an error/warning message (depending on the setting of the check, in the standard it is a warning when saving the PO and error when publishing it.)
However if this behavior does not match your expectations, you can implement the APPROVE_CONFIRMATION method of the BAdI /SCA/ORDER with thecode:
METHOD /sca/if_ex_order~approve_confirmation.
TYPES ls_item TYPE /scmb/dm_order_itm_str.
DATA: lv_add_protocol TYPE boolean,
ls_order TYPE /scmb/dm_order_str,
ls_item_ref TYPE REF TO ls_item,
lo_order TYPE REF TO /sca/cl_svorder.
CREATE OBJECT lo_order.
READ TABLE /sca/cl_svorder=>mpt_order_buffer INTO ls_order
WITH KEY order_id = iv_orderid.
IF sy-subrc = 0.
CALL METHOD lo_order->set_current_order
EXPORTING
is_order = ls_order.
CALL METHOD lo_order->set_current_order_item
EXPORTING
is_order_itm = is_item.
CALL METHOD lo_order->confirm_price
IMPORTING
ev_add_protocol = lv_add_protocol.
IF lv_add_protocol IS NOT INITIAL.
cv_item_approval_status = /sca/cl_svorder=>gc_appr_man.
ENDIF.
ENDIF.
ENDMETHOD.