Use BAPI_MATERIAL_SAVEDATA "QM Control Key" and "QM in Procurement is Active" .
and for "Inspection Setup Exists for Material/Plant" Use "BAPI_MATINSPCTRL_SAVEREPLICA" .
DATA: T_MHEADER LIKE BAPIMATHEAD,
T_CLIENTDATA LIKE BAPI_MARA,
T_CLIENTDATAX LIKE BAPI_MARAX,
T_PLANTDATA LIKE BAPI_MARC,
T_PLANTDATAX LIKE BAPI_MARCX.
DATA : BAPIMSG TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE INITIAL SIZE 0.
T_MHEADER-IND_SECTOR = 'M'. " Industry
T_MHEADER-MATL_TYPE = 'ERSA'. " Mat Type
T_MHEADER-QUALITY_VIEW = 'X'. " Quality Management View
T_MHEADER-MATERIAL = 'XXXXXXXXXXXXXXXXXX'. " Material Number leading with zero
T_CLIENTDATA-QM_PROCMNT = 'X' . " QM in Procurement is Active
T_CLIENTDATAX-QM_PROCMNT = 'X'. " QM in Procurement is Active
T_PLANTDATA-CTRL_KEY = 'Z001' . " QM Control KeY default value
T_PLANTDATAX-CTRL_KEY = 'X' .
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = T_MHEADER
CLIENTDATA = T_CLIENTDATA
CLIENTDATAX = T_CLIENTDATAX
PLANTDATA = T_PLANTDATA
PLANTDATAX = T_PLANTDATAX
IMPORTING
RETURN = BAPIMSG .
IF BAPIMSG-TYPE = 'S' .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
BAPIMSG-ID BAPIMSG-NUMBER BAPIMSG-MESSAGE INTO E_ERROR SEPARATED BY SPACE.
ENDIF.
Check below link with My Reply and sample code .
Regard's
Smruti