Solved my self. added the below code.
CALL FUNCTION 'CRM_STATUS_DELETE'
EXPORTING
* CLIENT = SY-MANDT
objnr = gs_order-guid
.
CALL FUNCTION 'CRM_STATUS_OBJECT_CREATE'
EXPORTING
* CHGKZ = ' '
* CLIENT = SY-MANDT
OBJNR = gs_order-guid
obtyp = 'COH'
STSMA = 'ZCRMPRG'
* XNOAUTO =
* IMPORTING
* OBJNR =
* STONR =
EXCEPTIONS
OBTYP_INVALID = 1
STATUS_OBJECT_ALREADY_EXISTS = 2
STSMA_INVALID = 3
STSMA_OBTYP_INVALID = 4
ERROR_OCURRED = 5
OTHERS = 6
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CLEAR lt_status_com.
CLEAR lt_input_field_names.
ls_input_field_name = 'ACTIVATE'.
INSERT ls_input_field_name INTO TABLE lt_input_field_names.
* loop at lt_header_guids into ls_guid.
* clear ls_status_com.
ls_status_com-ref_guid = gs_order-guid.
ls_status_com-ref_kind = gc_object_kind-orderadm_h.
ls_status_com-user_stat_proc = 'ZCRMPRG'.
ls_status_com-status = 'E0004'.
ls_status_com-activate = 'X'.
* ls_status_com-process = 'ZPRG'.
ls_status_com-object_type = 'BUS2000111'.
MOVE-CORRESPONDING ls_status_com to ls_crmt.
insert ls_crmt into TABLE lt_crmt.
INSERT ls_status_com INTO TABLE lt_status_com.
* endloop.
CALL FUNCTION 'CRM_STATUS_MAINTAIN_OW'
EXPORTING
IT_STATUS_COM = lt_crmt
it_status_comint = lt_status_com
CHANGING
ct_input_field_names = lt_input_field_names
EXCEPTIONS
not_allowed = 1
error_occurred = 2
warning_occurred = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
RAISING error_occurred.
ENDIF.
lv_header_guid = gs_order-guid.
*
APPEND lv_header_guid TO lt_guid1.
CLEAR :lv_header_guid.
CALL FUNCTION 'CRM_ORDER_SAVE'
EXPORTING
it_objects_to_save = lt_guid1
iv_update_task_local = ''
iv_save_frame_log = ''.
* IMPORTING
* ET_SAVED_OBJECTS =
* CHANGING
* CV_LOG_HANDLE =
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =