Recursive call error of function module ‘CRM_ORDER_MAINTAIN’

The SAP CRM Recursive call error for SAP function module CRM_ORDER_MAINTAIN is caused by nested calling of the FM i.e. calling it while already within a call to CRM_ORDER_MAINTAIN. Also happens via function module CRM_ORDER_MAINTAIN_MULTI_OW which also performs the recursive check.

Function module CRM_ORDER_MAINTAIN  appears several times in the current hierarchy for the calls. This is not scheduled. There is an error in the program.

“MESSAGE_TYPE_X”

“SAPLCRM_ORDER_OW” or “LCRM_ORDER_OWU01”

“CRM_ORDER_MAINTAIN_MULTI_OW”

Solution for crm Recursive call

Try using different function modules to perform the CRM updates such as:

CRM_STATUS_MAINTAIN_OW to Update status values usking

This FM updates the STATUS values

CALL FUNCTION ‘CRM_STATUS_MAINTAIN_OW’EXPORTINGit_status_com = lt_user_status* IT_STATUS_COMINT =* IV_CHECK_ONLY = FALSE* IV_TRACE =* IV_NO_1O_MAINTAIN = FALSE* IV_FORCE_1O_MAINTAIN = FALSE* IV_GET_ACTUAL_EXCPN = FALSECHANGINGct_input_field_names = lt_input_field_namesEXCEPTIONSnot_allowed = 1error_occurred = 2warning_occurred = 3OTHERS = 4.

CRM_ORDER_I_MAINTAIN_SINGLE_OW to update ORDERADM values

Enter your text here…

Check if within CRM_ORDER_MAINTAIN update

DATA: lv_raise_exceptions TYPE crmt_boolean VALUE ‘X’, lv_recursive_call TYPE i, lv_maintain_active TYPE i, lv_recursive_save TYPE i.

* For the OW function modules to work it needs to be within an CRM_ORDER_MAINTAIN* update but too many recursive calls to this can cause SAP DUMP** CRM_ORDER_CHECK_RECURSIVE_OW check if you are already within an update and can use* The OW functionsCALL FUNCTION ‘CRM_ORDER_CHECK_RECURSIVE_OW’ EXPORTING iv_raise_exceptions = lv_raise_exceptions IMPORTING ev_recursive_call = lv_recursive_call ev_maintain_active = lv_maintain_active ev_recursive_save = lv_recursive_save EXCEPTIONS recursive_call = 2 recursive_save = 4 call_without_order_maintain = 6 OTHERS = 8.

* If return code is call_without_order_maintain then you need to perform update* using the CRM_ORDER_MAINTAINIF sy-subrc = 6. ” CALL FUNCTION ‘CRM_ORDER_MAINTAIN’ ” EXPORTING ” it_status = ” new status details ” CHANGING ” ct_orderadm_i = ” orderadm_i values ” ct_input_fields = ” input_field values ” EXCEPTIONS ” error_occurred = 1 ” document_locked = 2 ” no_change_allowed = 3 ” no_authority = 4 ” OTHERS = 5.* Else you can use OW function modulesELSE.* Call an alternate OW function module such as CRM_STATUS_MAINTAIN_OW to update STATUS ” CALL FUNCTION ‘CRM_STATUS_MAINTAIN_OW’ ” EXPORTING ” it_status_com = ” new status details ” CHANGING ” ct_input_field_names = ” input_field values ” EXCEPTIONS ” not_allowed = 1 ” error_occurred = 2 ” warning_occurred = 3 ” OTHERS = 4.ENDIF.

Other CRM update FM’s to check

CRM_ORDER_COPY_SINGLE_OWCRM_ORDER_H_MAINTAIN_OW CRM_ORDER_I_MAINTAIN_MULTI_OWCRM_ORDER_I_MAINTAIN_SINGLE_OWCRM_ORDER_MAINTAINCRM_ORDER_MAINTAIN_MULTI_OWCRM_ORDER_MAINTAIN_SINGLE_OWCRM_STATUS_COMINT_SAVE_OWCRM_STATUS_EXPORT_DATA_UICRM_STATUS_MAINTAIN_MUL_OWCRM_STATUS_MAINTAIN_OW